Некоторые программные среды аналитики больших данных и машинного обучения

Рассмотрено машинное обучение и распределенная обработка данных на Apache Mahout. Сопоставлены две его реализации – на основе использования парадигмы MapReduce и программной конструкции (framework) Spark с математической средой Mahout Samsara, которая создает семантически дружественные условия для л...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2016
1. Verfasser: Урсатьев, А.А.
Format: Artikel
Sprache:Russian
Veröffentlicht: Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України 2016
Schriftenreihe:Управляющие системы и машины
Schlagworte:
Online Zugang:http://dspace.nbuv.gov.ua/handle/123456789/113401
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Некоторые программные среды аналитики больших данных и машинного обучения / А.А. Урсатьев // Управляющие системы и машины. — 2016. — № 5. — С. 62-75. — Бібліогр.: 82 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id irk-123456789-113401
record_format dspace
spelling irk-123456789-1134012017-02-08T03:03:00Z Некоторые программные среды аналитики больших данных и машинного обучения Урсатьев, А.А. Методы и средства обработки данных и знаний Рассмотрено машинное обучение и распределенная обработка данных на Apache Mahout. Сопоставлены две его реализации – на основе использования парадигмы MapReduce и программной конструкции (framework) Spark с математической средой Mahout Samsara, которая создает семантически дружественные условия для линейной алгебры, построена по образу базового пакета в R, содержит алгебраический DSL Scala и оптимизатор выражений. Библиотека ML Mllib поддерживает универсальную масштабируемую линейную алгебру и включает в себя многие современные алгоритмы. Розглянуто машинне навчання і розподілена обробка даних з Apache Mahout. Зіставлені дві його реалізації – з використанням парадигми MapReduce та програмної конструкції Spark з математичним середовищем Mahout Samsara, яке створює семантично дружні умови для лінійної алгебри, побудоване за образом базового пакета в R, містить алгебраїчний DSL Scala та оптимізатор виразів. Бібліотека ML Mllib підтримує універсальну масштабовану лінійну алгебру і включає в себе чимало сучасних алгоритмів. The machine Learning (Machine Learning, ML) and distributed processing of the large data collections on Apache Mahout with the automatic search ability for relevant laws are considered. Its realization through the use of MapReduce paradigm and framework Spark is compared. The representation of data and mechanisms to restore their failures, the method of calculation and the ability to cache data in memory are considered. The latter is a key tool for fast interactive use. Spark is implemented on Scala. It combines the best features of functional and object-oriented programming languages, and uses it as an application of the environment development. It provides the application programming interface for the Java language, Scala, Python and R, invites more than 80 high-level operators that makes it easily accessible for the construction of a parallel applications. Interactive mathematical environment Mahout Samsara ML includes an extended version of Scala. Mahout Samsara or the Scala & Spark Bindings are necessary for creation the semantically friendly conditions for еру linear algebra, and is built in the image of the base package in R. The linear algebra works with scalars, vectors, matrices and distribution lines of the matrices (distributed row matrix, DRMs). DRM is a new abstraction, introduced in Apache Mahout for the representation and processing matrices convenience. One of the main elements of Mahout Samsara is algebraic DSL Scala and expressions optimizer. ML Mllib, supports the scalable universal linear algebra and includes many modern algorithms. 2016 Article Некоторые программные среды аналитики больших данных и машинного обучения / А.А. Урсатьев // Управляющие системы и машины. — 2016. — № 5. — С. 62-75. — Бібліогр.: 82 назв. — рос. 0130-5395 http://dspace.nbuv.gov.ua/handle/123456789/113401 004.7:004.75:004.9:004.738.5 ru Управляющие системы и машины Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
language Russian
topic Методы и средства обработки данных и знаний
Методы и средства обработки данных и знаний
spellingShingle Методы и средства обработки данных и знаний
Методы и средства обработки данных и знаний
Урсатьев, А.А.
Некоторые программные среды аналитики больших данных и машинного обучения
Управляющие системы и машины
description Рассмотрено машинное обучение и распределенная обработка данных на Apache Mahout. Сопоставлены две его реализации – на основе использования парадигмы MapReduce и программной конструкции (framework) Spark с математической средой Mahout Samsara, которая создает семантически дружественные условия для линейной алгебры, построена по образу базового пакета в R, содержит алгебраический DSL Scala и оптимизатор выражений. Библиотека ML Mllib поддерживает универсальную масштабируемую линейную алгебру и включает в себя многие современные алгоритмы.
format Article
author Урсатьев, А.А.
author_facet Урсатьев, А.А.
author_sort Урсатьев, А.А.
title Некоторые программные среды аналитики больших данных и машинного обучения
title_short Некоторые программные среды аналитики больших данных и машинного обучения
title_full Некоторые программные среды аналитики больших данных и машинного обучения
title_fullStr Некоторые программные среды аналитики больших данных и машинного обучения
title_full_unstemmed Некоторые программные среды аналитики больших данных и машинного обучения
title_sort некоторые программные среды аналитики больших данных и машинного обучения
publisher Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України
publishDate 2016
topic_facet Методы и средства обработки данных и знаний
url http://dspace.nbuv.gov.ua/handle/123456789/113401
citation_txt Некоторые программные среды аналитики больших данных и машинного обучения / А.А. Урсатьев // Управляющие системы и машины. — 2016. — № 5. — С. 62-75. — Бібліогр.: 82 назв. — рос.
series Управляющие системы и машины
work_keys_str_mv AT ursatʹevaa nekotoryeprogrammnyesredyanalitikibolʹšihdannyhimašinnogoobučeniâ
first_indexed 2025-07-08T05:41:11Z
last_indexed 2025-07-08T05:41:11Z
_version_ 1837056155478654976
fulltext 62 УСиМ, 2016, № 5 Методы и средства обработки данных и знаний УДК 004.7:004.75:004.9:004.738.5 А.А. Урсатьев Некоторые программные среды аналитики больших данных и машинного обучения Рассмотрено машинное обучение и распределенная обработка данных на Apache Mahout. Сопоставлены две его реализации – на основе использования парадигмы MapReduce и программной конструкции (framework) Spark с математической средой Mahout Samsara, которая создает семантически дружественные условия для линейной алгебры, построена по образу базового пакета в R, содержит алгебраический DSL Scala и оптимизатор выражений. Библиотека ML Mllib поддерживает универсаль- ную масштабируемую линейную алгебру и включает в себя многие современные алгоритмы. Розглянуто машинне навчання і розподілена обробка даних з Apache Mahout. Зіставлені дві його реалізації – з використанням парадигми MapReduce та програмної конструкції Spark з математичним середовищем Mahout Samsara, яке створює семантич- но дружні умови для лінійної алгебри, побудоване за образом базового пакета в R, містить алгебраїчний DSL Scala та оптимі- затор виразів. Бібліотека ML Mllib підтримує універсальну масштабовану лінійну алгебру і включає в себе чимало сучасних алгоритмів. Введение. Работа является завершающим эта- пом исследований1, связанных с использова- нием теории и инструментальных средств об- работки Больших Данных в задачах интеллек- туального анализа ситуаций. Программные вычислительные среды Apache Mahout™: масштабируемость ма- шинного обучения и интеллектуального анали- за данных. Библиотека [34] – так сейчас пред- ставляет разработку Apache. Менее десяти лет назад проект Apache Mahout начал создаваться и уже в 2010 г. Hortonworks позиционировал Mahout как библиотеку масштабируемых алго- ритмов машинного обучения на основе пара- дигмы MapReduce в Apache Hadoop®. Эта раз- работка объединяет два очень сложных вопро- са: машинного обучения (ML – Machine Lear- ning) и распределенной обработки больших данных на Apache Mahout. Машинное обучение – дисциплина искусст- венного интеллекта – основано на методах, предоставляющих компьютеру возможности, не будучи явно запрограммированным, улуч- шать результаты работы, опираясь на преды- дущий опыт. Оно тесно связано с интеллекту- 1 Урсатьев А.А. Некоторые программные среды аналитики больших данных // УСиМ. – 2016. – № 3. – С. 29-41. альным анализом данных и часто использует методы, заимствованные из статистики, теории вероятностей, распознавания образов и ряда других областей знаний. После сохранения данных на распределенной файловой системе HDFS Hadoop, Mahout предоставляет инстру- менты с возможностью доступа к большим на- борам данных и автоматического поиска зна- чимых закономерностей в них. Проект Apache Mahout стремится выполнить это быстрее и проще, поддерживая основные категории нау- ки о данных (Data Science):  коллаборативная (collaborative)2 фильтра- ция (CF) – добыча, извлечение знаний о поведе- нии пользователя и выработка рекомендаций – рекомендательная система по посещениям (сай- ты, документы, новости и пр.), товарам, реко- мендательная система на основе рейтингов; система анализа текстов (задачи тематического моделирования (topic modeling) – поиск науч- ной информации, выявление трендов и фронта исследований и др.) [35]; 2 Один из методов построения прогнозов, использующий известные предпочтения (оценки) группы пользователей для прогнозирования неизвестных предпочтений другого пользо- вателя или метод, который даёт автоматические прогнозы исходя из накопленной информации об интересах и вкусах пользователей [36]. УСиМ, 2016, № 5 63  кластеризация (таксономия) – анализ предметов в определенном классе (например, веб-страницы, газетные статьи) и организация их в виде групп по сходству признаков;  классификация или дискриминантный анализ – обучение с учителем по существую- щим классификациям (обучающей выборке), а затем отнесение неклассифицированных элемен- тов к классу, к которому в категории лучший относится данный объект. Например, задачи ме- дицинской диагностики – (классификация вида заболевания, определение наиболее целесооб- разного способа лечения, прогнозирование дли- тельности и исхода заболевания и др.), оцени- вание кредитоспособности заёмщиков и пр.;  определение совместного появления при- знаков, часто извлекаемых из набора элемен- тов (frequent itemset mining) – анализирует пред- меты в группах или термины в сессии запро- сов, а затем определяет, какие элементы, как правило, появляются вместе [37]. Несмотря на то, что концепция MapReduce не слишком приспособлена для итерационных вычислений и низколатентных приложений, Mahout хорошо справлялся с решением наибо- лее насущных задач обработки больших объе- мов данных, акцентируя на масштабируемости и облегчая использование сложных алгорит- мов машинного обучения. Программная мо- дель MapReduce распределенных параллель- ных вычислений эффективна для реализации пакетных задач в среде обработки in-database analytics, и ей не присуща интерактивность при обработке. Повторное использование данных распро- странено во многих итерационных алгоритмах машинного обучения. Однако задания в Map Reduce используют однопроходную (one-pass) модель вычислений, а итерационные вычисле- ния и интерактивный анализ нуждаются в пов- торной обработке данных и, следовательно, запуске нового задания, т.е. многократном об- ращении к основному циклу с обязательным сохранением на платформе Hadoop промежу- точных результатов вычислений на диск после каждого прохода через данные. Вследствие этого неизбежны значительные и не всегда предсказуемые задержки. Использование ацик- лической модели потоков данных (directed acyclic graph, DAG), не предполагающей ка- кой-либо возможности вложения циклов на всем протяжении процесса от map до reduce, приводит к тому, что абстракция MapReduce не соответствует подобным приложениям. Такая природа рассматриваемых приложений проти- воречит организации потока работ в пакете, поскольку реализация итераций средствами традиционного Hadoop MapReduce оказывает- ся чрезвычайно длительной и приводит к за- метному снижению производительности [38]. Производительности, обеспечиваемой мо- делью распределенных вычислений Map Reducе, для аналитики больших данных становится уже недостаточно. Текущие решения в ряде случа- ев не обеспечивают скорость реакции системы, необходимую для обработки заданий анализа, что затягивает процесс принятия решений. К сожалению, в большинстве существующих про- граммных конструкций (frameworks), обеспечи- вающих многочисленные абстракции для дос- тупа к вычислительным ресурсам кластера, единственным способом повторного использо- вания промежуточных результатов вычисле- ний является их перезапись на стабильную сис- тему хранения (например, распределенную фай- ловую систему). Для обеспечения отказоус- тойчивости Hadoop MapReduce в основном так- же обрабатывает информацию, сохраняемую на жестких дисках. В обоих случаях это влечет за собой существенные накладные расходы, связанные с репликацией данных, дисковым вводом/выводом (disk I/O) и сериализацией3, которые могут доминировать время выполне- ния приложения. Признавая эту проблему, ис- следователи разработали специализированные структуры для некоторых приложений, тре- бующих повторного использования данных. Тем не менее, эти программные структуры 3 Сериализация (в программировании) – процесс перевода какой-либо структуры данных в виде последовательности бай- тов, например сохранения состояния Java-объекта для переда- чи по сети или сохранения на надежном носителе (например, в виде файла на диске) для последующего использования. Java Serialization API предоставляет разработчикам Java стандарт- ный механизм управления сериализацией объектов [39]. 64 УСиМ, 2016, № 5 поддерживают только определенные шаблоны вычислений и не обеспечивают абстракции для более общего случая повторного использова- ния результатов вычислений [40]. В разделе настоящей работы о Hadoop уже упоминалось об использовании производи- тельного вычислительного ядра Spark [11], ко- торое представляет работающую в оператив- ной памяти программную конструкцию, спо- собную конкурировать с MapReduce. Apache Spark – вычислительная платформа с откры- тым исходным кодом, аналогичная Hadoop. Несмотря на сходство, Spark представляет со- бой новую среду, обладающую рядом отличи- тельных свойств, направленных на решение в вычислительном кластере задач, в которых ра- бочий набор данных многократно использует- ся в параллельных операциях. Для оптимиза- ции задач этого типа наборы данных временно помещаются в оперативную память для со- кращения времени доступа к ним, и вводится понятие кластерных вычислений в памяти. Сохранение данных в памяти повысило про- изводительность на порядок величины. Благо- даря сокращению операций чтения/записи с диска обеспечивается еще более высокое бы- стродействие, затраты времени на итерацию в Spark значительно меньше, чем у MapReduce. Кроме того, ускорение достигается путем хра- нения информации о каждом операторе в опе- ративной памяти, что также дает важное пре- имущество – все процессы, связанные с дан- ными, происходят на одном и том же кластере, в одном и том же приложении. Все это способ- ствует привнесению интерактивности при об- работке данных. Во-вторых, для сохранения масштабируе- мости и отказоустойчивости, присущих Map Reduce, в Spark вводится отказоустойчивая аб- стракция – устойчивые распределенные набо- ры данных RDDs (resilient distributed datasets), по сути, абстракция распределенной памяти данных, позволяющая программировать и вы- полнять параллельные вычисления в опера- тивной памяти на кластерах. RDDs обеспечи- вают параллельную модель программирова- ния, формально они позволяют распределять существующую коллекцию записей по набору узлов и служат только для чтения. Эти коллек- ции неизменяемых read-only объектов, распре- делённых по узлам кластера, устойчивы, так как в случае потери части набора данных они восстанавливаются. Создаваться RDDs могут только через детерминированные операции4 [41], называемые трансформациями (transforma- tions), над данными во внешней системе хране- ния, например в файловой системе HDFS или любого источника данных в формате входящих данных Hadoop InputFormat, либо над другими RDDs. Эти преобразования (трансформации) проводятся над всеми элементами коллекции, в противоположность изменениям на уровне ячейки (fine-grained) в традиционных кластер- ных системах, благодаря тому, что в основу RDD положены крупноструктурные (coarse- grained) преобразования разделов [40]. Отказоустойчивость системы вычислений вследствие сбоя опирается на механизм вос- становления, базирующийся на родословных RDDs, содержащих достаточно информации о том, как они были получены из других наборов данных, чтобы определить нужные разделы данных в хранилище. Механизм восстановле- ния аналогичен используемому в вычислениях MapReduce, отслеживающих зависимости сре- ди DAG задач. Тем не менее, в этой системе информация о родословной теряется по завер- шении работы, и требуется использование ре- плицирующей системы хранения, чтобы пере- давать данные между вычислениями. В отли- чие от этого, RDDs применяют родословную, чтобы вычислять и сохранять данные (persist in-memory data) в оперативной памяти, эффек- тивно передавая их между вычислениями и не требуя привлечения затратных операций реп- ликации данных и дискового ввода/вывода. RDDs используют API на основе coarse-grained преобразования, позволяющего им эффективно восстановить данные [40]. 4 RDD поддерживают два вида операций: трансформации, которые создают новый набор данных из существующих, и действия (actions), которые возвращают значение основной программе (программе-драйверу) после запуска вычисления на наборе данных. УСиМ, 2016, № 5 65 Одна из важнейших возможностей Spark – кэширование данных в памяти. При сохране- нии RDD, каждый узел хранит определенные разделы данных и использует их в других вы- числениях с этим же набором данных или дан- ными, полученными от него. Это позволяет вы- полнять последующие действия более чем на порядок быстрее. Кэш в Spark отказоустойчив – если раздел RDD теряется, он будет автома- тически пересчитан с использованием преоб- разований, посредством которых был создан. По умолчанию, каждый восстановленный RDD может быть пересчитан после каждого запуска вычислений на наборе данных. Тем не менее, RDD можно также сохранить в памяти, позво- ляя ему быть повторно и эффективно исполь- зуемым в параллельных операциях, сокращая время доступа при последующем использова- нии. Кроме того, набор данных может быть сохранен путем другого уровня хранения на жестком диске. Кэширование в Spark – ключе- вой инструмент для итерационных алгоритмов и быстрого интерактивного использования [40]. Spark поддерживает распределенную обра- ботку в памяти, так что создавая итерационные алгоритмы, можно не выписывать результат, устанавливаемый после каждого прохода дан- ных. Таким образом, Spark создает возмож- ность циклической обработки наборов данных, размещенных в памяти. Отход от пакетного режима MapReduce поддержан новым, не имеющим аналогов способом представления данных, – абстракцией RDD, допускающей эффективное использование повторных дан- ных в широком диапазоне применений. RDDs позволяют явно сохранять промежуточные ре- зультаты в памяти, распределять и перераспре- делять данные на различных стадиях параллель- ных вычислений (рис. 6) и манипулировать ими с помощью набора операций [41], открывая путь к итерационным процессам, невозмож- ным в случае DAG. Организация данных в ви- де RDD оказывается эффективной как в скоро- сти обработки, так и в обеспечении высокой надежности, требуемой при распределенной работе на кластерах [38]. Вследствие этого также оптимизируется решение итеративных задач и интерактивного анализа данных при частой необходимости писать множество за- просов к какому-то набору данных. Рис. 6. Работа с RDDs Все преобразования RDDs в Spark отложен- ны или «ленивы» (lazy), т.е. операции транс- формации над RDDs не приводят сразу к ка- ким-либо вычислениям, а только создают оче- редной шаг на схеме, обещая выполнить опе- рации только после запуска вычислений на на- боре данных (рис. 6). Вместо этого они запо- минают преобразования, применяемые к како- му-то базовому набору данных, и создают их новые наборы из существующего тогда, когда результат должен быть возвращен в пользова- тельскую программу. Это позволяет оптими- зировать необходимые расчеты, в случае необ- ходимости восстановить потерянные разделы данных и вернуть результат вычислений в ос- новную программу вместо большого набора данных. Это положение иллюстрируют рис. 6 и скрипт, приведенный ниже, – для решения задачи про логи5 [18, 42]: В этом примере реальные вычисления на- чинаются только с последней строчки: Spark видит, что нужно материализовать результаты, и для этого начинает применять операции к данным. При этом здесь нет никаких промежу- точных стадий – каждая строчка поднимается в память, разбирается, проверяется на признак 5 Файл регистрации, протокол, журнал или лог (log) – файл с записями о событиях в хронологическом порядке. Log-файл веб-сайта – это текстовый файл, в котором регистрируются все запросы к сайту, а также все ошибки, связанные с этими за- просами, хранится информация о посещениях, параметрах посещений сайта и др. 66 УСиМ, 2016, № 5 ошибки в сообщении и, если такой признак есть, тут же записывается на диск [42]. Spark нацелен (мотивирован) на ускорение работы двух типов приложений: итерационных алгоритмов и интерактивных инструментов ана- лиза данных. Но Spark превосходит Hadoop не только в машинном обучении, но и в традицион- ных приложениях обработки данных. Он пред- лагает стандартные библиотеки – интегриро- ванные в Spark модули (рис. 7) для аналитики больших данных [16, 43–45], в том числе:  MLLib – машинное обучение,  GraphX – работа с графами,  Spark-SQL – интерфейс,  SparkStreaming – потоковая аналитика. Рис. 7. Spark – интерактивно-аналитическая система Все названные компоненты (см. рис. 7.) на- ходятся поверх ядра (Spark-core). MLLib – про- стая и масштабируемая реализация машинного обучения. Библиотека содержит общие алго- ритмы обучения, в том числе классификации, кластеризации и коллаборативной фильтрации, дополнительные инструменты в виде набора утилит [46]. MLLib обладает отличной интег- рируемостью благодаря возможности подклю- чения к развитым прикладным интерфейсам (доступен в Java, Scala, Python и SparkR) и простым развертыванием – библиотека ин- сталлируется на кластере Hadoop и работает с уже имеющимися данными. Обеспечивает вы- сокую скорость обучения в сравнении с Map- Reduce и тестированием. GraphX – компонент Spark для работы с графами. На высоком уровне GraphX расширя- ет RDD путем введения новой абстракции: на- правленный мультиграф со свойствами, при- крепленными к каждой вершине и ребру. Для поддержки вычислений графов, Graphx пре- доставляет набор основных операторов (на- пример, subgraph – возвращает граф, содержа- щий только вершины, удовлетворяющие опре- деленному условию; joinVertices – присоединя- ет новые вершины; aggregateMessages – агре- гация сообщений к указанной вершине и др.). Кроме того, GraphX включает в себя растущую коллекцию алгоритмов на графах для упроще- ния аналитики соответственных задач [47], на- пример, PageRank6, Personalized PageRank – алгоритмы ссылочного ранжирования; Shortest Path – проблема нахождения кратчайшего пу- ти; Graph Coloring – маркировка (раскраска) вершин графа. Прикладной интерфейс GraphX обеспечива- ет работу с графами и графопараллельными вычислениями. Модуль обладает такими важ- ными преимуществами как гибкость («бесшов- ность» работы как с графами, так и с коллек- циями данных) и высокая скорость работы. Spark SQL предназначен для структуриро- ванной обработки данных и реляционных за- просов. Он вводит новую абстракцию данных под названием DataFrames, которая обеспечи- вает быстрые интерактивные запросы к струк- турированным и частично структурированным данным. DataFrame – распределенная коллек- ция данных, организованных в поименованных колонках. Это концептуально эквивалентно таб- лице в реляционной базе данных или кадра данных в R / Python, но с более богатой внут- ренней оптимизацией. DataFrames могут быть построены из широкого спектра источников: структурированных файлов данных, таблиц во внешних базах данных или существующих RDD. Эта функция объединяет лучшие прак- тики создания таблиц данных. DataFrames и SQL обеспечивают общий способ доступа к различным источникам дан- ных и интеграцию SQL-запросов со всеми эле- ментами фреймворка. Стандарт подключения к данным на сторонних носителях: соединение через JDBC или ODBC. По этим же интерфей- сам обеспечивается также соединение для ин- 6 PageRank (PR) — это числовая мера авторитетности страницы сайта для поисковой системы Google, рассчитывае- мая от количества и качества ссылок на эту страницу – как внешних, так и внутренних. УСиМ, 2016, № 5 67 струментов бизнес-аналитики (BI). DataFrame API доступен в Scala, Java, Python и R [48]. SparkStreaming предоставляет пользовате- лю возможность создавать и запускать прило- жения в потоковом режиме, а так же без суще- ственных изменений в коде может осуществ- лять пакетную обработку. Модуль SparkStreaming – расширение ядра Spark API, предоставляющее масштабируемую, отказоустойчивую потоковую обработку реаль- ных данных c высокой пропускной способно- стью. Источниками данных могут быть различ- ные системы: распределенная система передачи сообщений Kafka [49], платформа для работы с потоковыми данными Kinesis [50], TCP-сокеты или социальные сети, например Twitter и др. Эти данные можно обрабатывать с помощью слож- ных алгоритмов, скажем, машинного обучения, работы с графами и графопараллельными вы- числениями, позволяющими выполнять расчеты в режиме реального времени (или близком к ре- альному времени). Полученные результаты мо- гут быть помещены в файловые системы, базы данных и информационные панели (live dashboards), отражающие существующее (теку- щее) состояние вещей, близкое к реальному времени измеряемых процессов [51]. SparkStreaming принимает потоки входящих данных и делит их на пакеты, которые затем обрабатываются вычислителем Spark (рис. 8). Преимущество пакетной модели Spark – то, что она позволяет восстановить все промежу- точные состояния и результаты на момент сбоя [52–54]. Рис. 8. Структура модели обработки потоковых данных Здесь использована новая модель обработки – дискретизированные потоки D-Streams. Клю- чевая идея D-Streams структурировать потоко- вые вычисления на малых временных интерва- лах как серию не меняющих своего состояния объектов – пакетных вычислений (deterministic batch computations). Из поступающих данных, полученных в течение каждого интервала вре- мени, формируется входной набор данных, об- рабатываемый с помощью известных парал- лельных операций [40, 41]. Рис. 9. Структура модуля SparkStreaming На рис. 9 модуль SparkStreaming делит вхо- дящий поток данных на пакеты и сохраняет их в памяти Sparks [53]. Затем он запускает пото- ковое приложение для создания рабочих зада- ний Spark по обработке пакетов. При таком допущении – дискретизации входных потоков – можно автоматически обеспечить быстрый па- раллельный механизм восстановления7 после сбоев, используя структуры данных, называе- мые RDDs. В кластерных системах потоковой обработки имеется и вторая, не менее важная, чем восстановление после сбоев или отказов узлов, проблема отставания (stragglers), вы- званная медленными узлами8. Обе проблемы неизбежны в больших кластерах, поэтому по- токовые приложения должны быстро восста- навливаться от последствий их возникновения. 7 В D-Stream используется эффективная абстракция хране- ния (storage abstraction) – результаты сохраняются в отказо- устойчивых распределенных наборах данных RDDs [53]. D- Stream, как и собствено Spark применяют детерминированные преобразования в гораздо более грубой (coarse-grained) степе- ни разбиения на RDD-разделы, что обеспечивает простое вос- становление при сбоях и облегчает учет использования сис- темных ресурсов. В традиционных системах пакетной обра- ботки, таких как Hadoop, промежуточный результат обработки данных сохраняется на диск, что приводит к значительным временным затратам [40, 53]. 8 В реализации [54] использован простой порог для обна- ружения отставших узлов: всякий раз, когда задача выполня- лась в 1.4X раза дольше среднего времени выполнения задач на данном этапе работ, ее отмечали как медленную. 68 УСиМ, 2016, № 5 D-Stream обрабатывают отставания, используя упреждающее исполнение команд, в то время как предыдущие системы потоковой обработ- ки не поддерживали их. Этот тип спекулятив- ных (speculation) вычислений9 трудно приме- нить в режиме последовательной обработки операций (record-at-a-time), но просто с детер- минированными задачами при разложении вы- числений на короткие задачи [54]. Это, как уже отмечалось, повышает эффек- тивность в сравнении с традиционными схе- мами репликации и резервного копирования, при допустимых задержках (tolerates latency) [40, 53]. Реализация принципа дискретизации в мо- дуле SparkStreaming дало возможность обраба- тывать более 60 млн записей в секунду на 100 узлах со сквозной субсекундной10 задержкой (sub-second end-to-end latencies). Пропускная способность узлов SparkStreaming сравнима с коммерческими потоковыми базами данных, в то же время модуль предлагает линейную масштабируемость до 100 узлов и работает в два–пять раз быстрее, чем Storm и S4 системы, а также в отличие от них предлагает восста- новление после сбоев за доли секунды [40, 54]. Поскольку D-Streams использует ту же мо- дель обработки и структуры данных RDDs, как и в пакетных заданиях, с присущей им инте- рактивностью, то это позволяет пользователям запускать нерегламентированные запросы (ad- hoc queries) на потоках или смеси потоковых и исторических данных. На практике это означа- ет, что пользователи получают единый высо- коуровневый API для объединения ранее раз- розненных вычислений [40, 54]. Scala – язык, на котором реализован Spark и использует его в качестве среды разработки приложений для обработки данных. В отличие от Hadoop, Spark и Scala образуют тесную ин- теграцию, при которой Scala может легко ма- нипулировать распределенными наборами данных как локальными коллективными объ- 9 Техника организации вычислительного процесса в парал- лельных процессорах на основе опережающего распределения команд по конвейерам. 10 Временной интервал менее 1с. ектами. Spark предоставляет интерфейсы про- граммирования приложений для языков Java, Scala, Python и R, предлагает более 80 опера- торов высокого уровня, которые делают его легко доступным для построения параллель- ных приложений. Использовать их возможно в интерактивном режиме из оболочек Scala, Python и R. Scala [55] – это достаточно новый, но уже успевший стать популярным, мультипарадиг- мальный язык в том смысле, что он гладко и удобно поддерживает языковые функции, ха- рактерные для императивных, функциональ- ных и объектно-ориентированных языков. На титульной странице сайта, на фоне Швейцарских Альп невдалеке от Женевского озера, где расположена Федеральная политех- ническая школа (EPFL), которая в 2003 г. бла- годаря М. Одерски (Martin Odersky) и его ис- следовательской группе дала жизнь Scala, гор- до реют слова – главная сущность разработки, квинтэссенция Scala: «Объектно-ориентирован- ное сливается с функциональным. Это есть лучшее из обоих миров. Построить элегантные иерархии классов для максимального повтор- ного использования кода и расширяемости, осуществлять их поведение, используя функ- ции высшего порядка или что-нибудь между ними». В Scala используется чистая объектно-ориен- тированная модель. Ее единообразие состоит в том, что любое значение является объектом, а любая операция – вызовом метода. Это также функциональный язык, так как в нем каждая функция есть значение. Функциональные язы- ки11 обеспечивают лаконичный синтаксис для определения анонимных функций, работают с функциями высшего порядка, позволяют функ- циям быть вложенными, и поддерживают кар- 11 Программирование в функциональном стиле опирается на вычисление выражений, формируемых посредством комби- нирования функций, а не на выполнение команд, т.е. вместо перечисления последовательности действий, необходимых для получения результата, описывается, что хотят получить. Функциональные языки используют высокоуровневую про- граммную модель, вследствие чего программы становятся проще в разработке и поддержке. УСиМ, 2016, № 5 69 рирование (currying12). Фактически, Scala со- вмещает лучшие черты обоих типов языков программирования. Scala – аббревиатура от Scalable Language – расширяемый язык. Масштабируемость его – результат тесной интеграции13 упомянутых па- радигм программирования: объектно-ориенти- рованной и функциональной концепции язы- ков. Scala обеспечивает уникальное сочетание языковых механизмов, которые позволяют лег- ко добавлять новые языковые конструкции в виде разнообразных библиотек и тем самым благоприятствует простому и быстрому созда- нию масштабируемого программного обеспе- чения [55–57]. Это позволяет легко выражать самостоятельные компоненты, использующие библиотеки Scala, не пользуясь специальными языковыми конструкциями. Scala известен как краткий, читаемый язык программирования. Будучи достаточно выра- зительным языком, он предоставляет мощный инструментарий для создания простых и изящных программ [58, 59]. Вместе с тем, мно- гие популярные библиотеки позволяют поль- зователям сделать код еще более простым и читаемым благодаря использованию DSL14. В мире программного обеспечения под DSLs подразумевается набор исполняемых выраже- ний на языке, специфичном для данной облас- ти, удобочитаемые, понятные и, как правило, используемые экспертами, пребывающими в этой предметной области долгое время [60]. DSLs используют инструментарий опреде- ленной библиотеки. Эти выражения обычно касаются области применения библиотеки, а значит, позволяют сделать код простым и по- нятным для экспертов, знакомых с этой обла- стью. Внутренние DSLs, написанные в Scala, 12 Currying (каррирование) – преобразование функции от многих аргументов в функцию, берущую свои аргументы по одному. 13 В статически типизированных языках, к которым отно- сится Scala, эти парадигмы до сих пор были почти полностью разделены. 14 DSL (Domain Specific Languages) – язык, специфичный для предметной области или предметно-ориентированный язык, имитирующий термины, идиомы и выражения, исполь- зуемые среди специалистов в целевой области. стали мощным инструментом в руках Scala- программистов. В оригинальной конструкции Scala было уделено большое внимание тому, чтобы синтаксис позволил программистам создавать естественные DSLs [61, 62]. Scala-программы во многом похожи на Java- программы, и могут бесшовно взаимодейство- вать с Java-кодом, выполняться непосредствен- но на Java Virtual Machine (JVM). Scala ис- пользует огромный каталог существующих Java-библиотек наряду с Java-программами. Это позволяет ей выполнять почти все, что ра- ботает на виртуальных Java-машинах [45, 55]. Запускается Spark-приложение как массив независимых процессов на кластере (рис. 10), координацией которых занимается объект SparkContext в программе пользователя (driver- program). В режиме кластера, SparkContext мо- жет работать в паре с одним из нескольких ме- неджеров кластера (Cluster Manager), который выделяет ресурсы для приложений [63, 64]. Spark может работать как сам по себе, так и посредством нескольких существующих ме- неджеров кластера. В настоящее время система поддерживает три менеджера кластера: Stand- alone – автономный или собственный менед- жер кластера, входящий в Spark; Apache Mesos – основной менеджер кластера, который может запускать Hadoop MapReduce-задачи, и Hadoop YARN – менеджер ресурсов в Hadoop [63]. Mesos обеспечивает эффективную платформу распределения ресурсов и изоляции распреде- ленных приложений. Другой вариант использо- вания – запуск Spark-приложений на YARN. Оба подхода позволяют Spark сосуществовать с Hadoop в общем пуле узлов (см. рис. 7). Едино- жды присоединившись (см. рис. 10) с помощью driver-program, Spark получает исполнителей (executors)15 на Worker Nodes в кластере. Они об- рабатывают вычисления и сохраняют данные для приложения. SparkContext отсылает процес- сы (tasks), выполняющие назначенные задачи, к исполнителям для обработки. 15 Executor – процесс, порожденный приложением (driver- program), который в свою очередь запускает tasks и хранит данные в памяти или на диске. Каждое приложение имеет собственных исполнителей. 70 УСиМ, 2016, № 5 Рис. 10. Запуск Spark-приложения на кластере Таким образом, Apache Spark [65] – произ- водительное вычислительное ядро – новое, еще более совершенное и быстрое средство обработки больших массивов данных как в Hadoop, так и с другими кластерными вычис- лительными системами [66]. Решение Spark рассчитано не только на профессиональных разработчиков – оно может стать инструмен- том для специалистов по данным (data scientist) с предоставлением современного языка Scala, реализованного для платформ Java и .Net. Apache Mahout, начиная с версии 0.10.0 (апр. 2015 г.), содержит интерактивную математиче- скую среду (Mahout Samsara) машинного обу- чения (ML), включая расширенную версию Scala. Библиотека машинного обучения ML MLLib, поддерживает универсальную масшта- бируемую линейную алгебру и включает в се- бя многие современные алгоритмы [46, 67, 68] машинного обучения (табл.). Начиная с этого выпуска, Mahout должен работать на Spark или новом аналитическом инструменте для работы с данными под названием H2O. [69, 70]. В Hadoop MapReduce версии алгоритмов Mahout еще сохраняются, но новых разработок на нем не проводится. Для Mahout H2O представляет собой распределенную масштабируемую сис- тему машинного обучения. Сочетание H2O и Spark позволяет пользователям комбинировать быстрые масштабируемые алгоритмы машин- ного обучения Н2О с возможностями Spark. Sparkling Water (Spark + H2O) пользователи могут управлять вычислениями из Scala/R/Py- thon и применить пользовательский интерфейс H2O Flow16, обеспечивая идеальную платфор- 16 H2O Flow представляет собой ноутбук-стиль с открытым исходным кодом пользовательского интерфейса для H2O. Это му для разработчиков приложений в области статистических вычислений. Н2О разрабаты- вается компанией H2O.ai и использует наибо- лее популярные Open Source – продукты, такие как Apache Hadoop и Spark [70]. Помимо коллаборативной фильтрации – од- ной из самых популярных и простых в примене- нии возможностей Mahout для реализации реко- мендательных систем – в нем есть несколько ал- горитмов классификации, большинство из кото- рых (за исключением вероятностного наиско- рейшего спуска) написаны для исполнения на Hadoop. Как и в случае с классификацией, Mahout предлагает многочисленные алгоритмы кластеризации, каждый из которых имеет свои особенности. Например, алгоритм K-Means кра- сиво масштабирует, но требует указать количе- ство кластеров, которые желательно использо- вать, тогда как для алгоритма кластеризации Ди- рихле требуется выбрать модель распределения и указать количество кластеров. Кластеризация имеет немало общего с классификацией, и ино- гда их можно использовать совместно, так что кластеры становятся частью классификации. Бо- лее того, значительная часть работы по подго- товке данных для классификации – та же, что и для кластеризации – например, преобразование исходных данных в последовательность файлов и затем в разреженные векторы [68]. Большин- ство алгоритм сокращения размерности (Dimen- sionality Reduction), например, Singular Value Decomposition – SVD и другие на основе Scala доступны через ядро библиотеки Mahout Math- Scala для всех платформ. Алгоритм Collocations реализован с использованием MapReduce [67]. Математическая среда Mahout Samsara или Scala & Spark Bindings [71, 72], введенная Apache, была вызвана необходимостью созда- ния семантически дружественных условий для линейной алгебры. Работа с векторными, мат- ричными и тензорными структурами данных, как с одним типом данных, предполагает на- личие существенных свойств, необходимых веб-интерактивная среда, которая позволяет сочетать выпол- нение кода, текста, математики, графики и богатые средства массовой информации в одном документе, похожем на IPython ноутбуков. УСиМ, 2016, № 5 71 для быстрого прототипирования алгебраически определенных математических задач. Mahout Samsara должна помочь создать собственную математику, обеспечивая некоторые готовые решения реализации алгоритма, и в случае их недостаточности позволить строить свои мо- дели, проверять свои возможности и приме- нять конкретные правила и ансамбли. Матема- тические пакеты должны взять все это на себя, а пользователю предоставить возможность толь- ко сформулировать задачу. Другое востребованное свойство – удобство той же среды в качестве языка программирова- ния. Apache Mahout, так же как и Apache Spark, Т а б л и ц а. Алгоритмы Mahout Реализация Алгоритм Одна машина Map Reduce Spark Краткое описание и пример использования Коллаборативная фильтрация User/ Item-Based Collaborative Filtering – алгоритмы рекоменда- тельных систем x – / x x Прогнозы, исходя из накопленной информации об интересах и вку- сах пользователей. Рекомендации по посещениям (сайты, докумен- ты, новости) и товарам; системы на основе рейтингов; выявление трендов и пр. MatrixFactorization with ALS – фак- торизация матриц с чередованием наименьших квадратов x x x Матричные модели, во много раз превосходящие классические ме- тоды выработки рекомендаций, позволяют включение дополни- тельной информации, такой как временные эффекты и уровень до- верия MatrixFactorization with ALS on Implicit Feedback – то же, но с уче- том обратной связи x x x Матричные модели, построенные с возможностью учитывать неяв- ную обратную связь Классификация Stochastic Gradient Descent, SGD – логистическая регрессия, решение методом вероятностного наиско- рейшего спуска x x Быстрый, простой и последовательный классификатор, приспособ- ленный к оперативному обучению в сложных условиях, используе- мый для рекомендации рекламы пользователям, классификации текста по категориям Naive Bayes / Complementary Naive Bayes –наивный Байесовский клас- сификатор x x Наивный Байесовский классификатор – двухкомпонентный про- цесс, который находит признаки, связанные с определенным доку- ментом и категорией, и затем использует эту информацию для про- гнозирования категории новых, еще не знакомых данных Random Forest – случайные леса x x Случайные леса – объединения деревьев решений; сочетают в себе много деревьев решений с тем, чтобы уменьшить риск переобуче- ния Hidden Markov Models – скрытая модель Маркова x x Последовательные и параллельные реализации классического алго- ритма классификации, предназначенные для моделирования реаль- ных процессов, когда основной исходный процесс неизвестен Кластеризация Canopy Clustering – навесная кла- стеризация (устаревший) x x Быстрый алгоритм кластеризации, часто используемый в качестве отправной точки для создания других алгоритмов кластеризации k-Means Clustering, Fuzzy k-Means – метод k-средних кластеризации и нечетких k-средних x x x Группирует элементы в k-кластеры, основываясь на расстоянии от этих элементов к центроиду, или центру тяжести предыдущей ите- рации Dirichlet Filtering – кластеризация Дирихле x x Подход к кластеризации на основе модели, когда членство опреде- ляется по тому, вписываются ли данные в базовую модель. Полезен при наличии параллелизма или иерархии в данных Spectral Clustering – спектральная кластеризация x Использование графического метода определения членства в груп- пе. Как и все алгоритмы группирования, полезен при изучении но- вых крупных наборов данных Сокращение размерности Singular Value Decomposition SVD, – разложение на сингулярные значе- ния x x x Снижение уровня шума в больших матрицах вследствие сокраще- ния их размерности. Применяется для автоматического выбора ха- рактеристик перед выполнением кластеризации, рекомендаций и классификации Разное Collocations – коллокации x Нахождение устойчивых или фразеологических словосочетаний. Поиск в тексте статистически интересных фраз 72 УСиМ, 2016, № 5 смещают все свои алгоритмы с Java на язык Scala, т.е. движутся в одном направлении. Раз- личия в результате ошеломляющие, так как Scala обеспечивает более краткий способ запи- си математических программ. Старый код, за- нимавший тысячи строк, сокращается менее чем до 100. Дискретность чрезвычайно улуч- шилась. Эффективность высока [73]. Математи- ческая среда Samsara построена по образу ба- зового пакета в R17 [74]. Возможно, математи- ку, написанную в R-версии легче понять и под- держивать, чем те же выражения, написанные в других основных процедурных или функцио- нальных средах. Это способствует удобству пользования программистами, хорошо знако- мыми с основными матричными примитивами R [72]. Samsara-библиотека линейной алгебры для Mahout написана на языке Scala и имеет хоро- ший R- или Matlab-подобный синтаксис для ба- зовых операций линейной алгебры, операторы используют подобные обозначения: % * %, colSums, nrow и др. Более того, эти операции мо- гут быть распределены [75]. Уравнение, реше- ние которого ранее занимало порядка десяти– двадцати строк текста, решается одной коман- дой solve: val w = solve (drmXtX, drmXty) [76]. Mahout имеет довольно полнофункциональ- ный Scala API и DSL линейной алгебры. Вклю- чение Scala DSL (Domain Specific Language) – очередной шаг в укреплении и расширении математической библиотеки линейной алгебры (Math Library) Mahout, которая представляет собой не только ценность для проектов Mahout, включая обнаружение аномалий, выработку ре- комендациий, кластеризацию и прочее, но мо- жет быть полезным инструментом для решений вне его [77]. 17 R – язык программирования для статистической обра- ботки данных и работы с графикой, свободная программная среда вычислений с открытым исходным кодом. R поддер- живает широкий спектр статистических и численных методов, обладает хорошей расширяемостью с помощью пакетов. Со- вмещение базового пакета с численными методами называют языком формул – именно поэтому в R проще обрабатывать статистические задачи. Еще одна его особенность – это графи- ческие возможности создания качественной графики, которая может включать в себя математические символы [74, 78]. Тесная связь, сращивание Scala и Spark для Mahout (Samsara) представляет собой комби- нацию DSL Scala и распределенного алгебраи- ческого оптимизатора (рис. 11) выражений, подобных этому: T T T T q qG BB C C s s      , (1) которое характеризуется сосредоточенными (in- core) и распределенными вычислениями. Выра- жение (1) в Mahout-Samsara должно быть запи- сано пользователем так: val g = bt.t % * % bt – c – c.t + + (s_q cross s_q) * (xi dot xi). (2) Samsara самостоятельно, не требуя контроля пользователя, оптимизирует выражение (2) и распределит задачи по узлам кластера. Теперь пользователь может не заботиться о логичес- ких и физических планах выполнения работы и не должен разбираться с кодом на логиче- ском уровне, подобно тому, как это будет осу- ществляться с R. Другая идея состоит в представлении рас- пределенного логического выражения для об- работки на кластере. По мере добавления узлы подключаются к обработке заданного ранее выражения, т.е. Samsara самостоятельно учи- тывает размер кластера при вычислениях. Вы- ражение, записанное ранее, будет обрабаты- ваться и на новых узлах. Рис. 11. Математическая среда Mahout Samsara Линейная алгебра работает со скалярами, векторами и матрицами (включая многочислен- ные специализированные типы, как, например, УСиМ, 2016, № 5 73 многомерные матрицы18) и распределенными строками матриц (distributed row matrix, DRMs) [71, 72]. DRM – новая абстракция, введенная в Apache Mahout для удобства представления и обработки матриц. Суть абстракции заключа- ется в том, что матрица записывается в виде отдельных индексированных строк или блоков строк, сохраняемых и обрабатываемых на раз- ных узлах кластера. Чаще всего матрицы раз- бивают именно на блоки, т.е. выделяют не- сколько строк одновременно, так как это по- зволяет обрабатывать больше элементов. В та- ком представлении – это распределенная кол- лекция пар. Хороший пример представления матрицы в виде DRMs можно увидеть в [76]. Противоположностью DRMs служат нераспре- деленные (in-core), обычные матрицы или век- торы, которые хранятся в памяти виртуальной Java-машины и не распространяются по узлам. Одним из основных элементов Mahout Samsara является алгебраический DSL Scala, также называемый синтаксическим сахаром [81]. Этот DSL Scala предоставляет пользова- телю тот самый удобный алгебраический син- таксис. Существенная часть Mahout Samsara – опти- мизатор выражений (см. рис. 11). Он осматрива- ет представленное пользователем выражение в целом и пытается найти способы упростить его, используя известные физические операторы. На- пример, можно понять, что выражение, подоб- ное этому dlog(X * X + 1).t %*% dlog(X * X + 1), по сути (в упрощенном псевдокоде физических операторов) эквивалентно приведенному ниже: self_square(X.map(x => log(x * x + 1)). Оптимизатор автоматически сократит зада- чу до оптимального уровня. Таким образом, значительно упрощается работа со сложными задачами, а десятки и сотни строк кода заме- няются несколькими математическими выра- жениями [81]. Mahout-Samsara поставляется с интерактив- ной оболочкой, которая запускает распреде- 18 В отличие от многих других вычислительных сред, ма- тематика Mahout изначально была ориентирована на плотные и разреженные структуры данных [72, 79, 80]. ленные операции на кластере Spark. Это упро- щает формулирование задач и позволяет поль- зователям настраивать алгоритмы с совершен- но новой степенью свободы. Для вычислений Scala & Spark Bindings ис- пользует вычислительное ядро. В роли этого ядра на данный момент может выступать Spark или H2O. Последний представляет собой рас- пределенную масштабируемую систему ма- шинного обучения. Его внутренняя архитекту- ра включает в себя распределенный математи- ческий процессор (вычислительное ядро H2O) и, поверх алгоритмов, отдельный слой пользо- вательского интерфейса. Интеграция в Mahout требует только вычислительного ядра. Плани- руется также использовать вычислительные ядра других сред, например Apache Flink. Вместе с ядром Spark используется его внутренний ал- гебраический DSL. Некоторые задачи не нуждаются в предвари- тельной оптимизации исходных выражений и могут быть решены напрямую через математи- ку ядра Mahout. Samsara самостоятельно опре- делит ресурсы, требуемые для решения задачи. Фактически, с помощью Scala & Spark Bin- dings пользователь может реализовать алго- ритмы Spark, но при этом значительно упро- щается работа с векторами и матрицами, что есть важным преимуществом для алгоритмов машинного обучения. Так, например, боль- шинство алгоритмов коллаборативной фильт- рации основаны на операциях с матрицами и их элементами. Отметим, что Samsara ускоряет не выпол- нение алгоритма, а реализацию любого алго- ритма пользователем. Таким образом, основ- ной целью создания Samsara является упроще- ние работы для пользователя. В версии 0.11.2 Apache Mahout (март 2016) Mahout Algorithms включает в себя новые вы- сокоскоростные (10х) алгоритмы [34], реали- зованные на Mahout-Samsara. Работают они на Spark 1.3+ и некоторые на H2O. Заключение. В завершение работы отметим, что приведенные в ней программные вычисли- тельные среды для обработки больших дан- ных, несомненно, отражают тенденцию стрем- 74 УСиМ, 2016, № 5 ления информационных технологий к новому поколению технологий, формирующих третью платформу [82]. Совокупность Open Source разработок привела к резкому увеличению ко- личества специализированных решений, про- диктованных потребностями индустрии, и раз- витию рынков решений под отдельные отрас- ли. Это будут самые ценные, трансформирую- щие отрасль, решения. Если Fast Data – Быстрые Данные – новые технологии преобразования и обработки ин- формации значительно быстрее, чем когда-ли- бо прежде, то Big Analytics – Большая Анали- тика – во-первых, это тот уровень, где качест- венные отличия между традиционными и большими данными становятся более очевид- ными: данные разных форматов, в том числе неструктурированные, вызвавшие интенсивное развитие нереляционных БД и др. Во-вторых, большая аналитика – это превращение инфор- мации в знания с использованием комбинации существующих и новых подходов [7]. Apache Mahout привносит в большую аналитику авто- матизированное обучение, находя скрытые тенденции в противоположность неосмыслен- ным или непродуманным идеям. Действитель- но, в интеллектуальных системах управления информацией, скорее всего, не будут полагать- ся на пользователей, придумывающих «умные вопросы к компьютеру», а будут автоматиче- ски применять решение об отправке, например автоматического уведомления пользователю или системе о возможности или риске угрозы, в случае если новые наблюдения показывают достаточный интерес к чему-либо, чтобы оп- равдать подобные реакции. Вместе с тем, мощные, но не сфокусирован- ные инструменты большой аналитики, т.е. не направленные на извлечение определенного типа результата, не будут достаточными, что- бы извлечь все преимущества больших дан- ных. Проникновение в суть явлений должно быть связано с конкретными целями, чтобы иметь высокие уровни воздействия. Автор выражает благодарность за помощь в подго- товке фрагментов материала настоящей работы В. Дух- новскому. 34. What is Apache Mahout? – http://mahout.apache.org/ 35. Воронцов К.В. Коллаборативная фильтрация. – http:// www.machinelearning.ru/wiki/images/9/95/Voron-ML- CF. pdf, 6 нояб. 2013. 36. Алгоритм коллаборативной фильтрации. – http:// habrahabr.ru/post/80955/, 16 янв. 2010. 37. Apache Mahout. – http://hortonworks.com/hadoop/ mahout/, March 2010. 38. Черняк Л. Альтернативы MapReduce для реального времени // Открытые системы. – 2014 – № 5. – http://www.osp.ru/os/2014/05/13041818/ 39. Сериализация в Java. – https://habrahabr.ru/post/ 60317/, 24 мая 2009. 40. Resilient Distributed Datasets: A Fault-Tolerant Abstrac- tion for In-Memory Cluster Computing / M. Zaharia, M. Chowdhury, T. Das et al. – NSDI 2012, апр. 2012. – https://people.csail.mit. edu/matei/publications/ 41. Spark Programming Guide. Spark 1.5.2. – http://spark. apache.org/docs/latest/programming-guide.html 42. Intro to Apache Spark. – http://stanford.edu/~rezab/ sparkclass/slides/itas_workshop.pdf, (15. 08. 2014). 43. Dinsmore T. W. Apache Spark for Big Analytics (Up- dated for Spark Summit and Release 1.0.1) // The Big Analytics Blog. – http://thomaswdinsmore.com/2014/01/ 02/apache-spark-for-big-analytics/, (01. 02. 2014). 44. Overview – Spark 1.5.2 Documentacion – Apache. – http://spark.apache.org/docs/latest/ 45. Джонс M. Тим. Spark, альтернатива для быстрого анализа данных. – http://www.ibm. com/developer- works/ru/library/os-spark/, 12.07.2012. 46. Machine Learning Library (MLlib) Guide. – http:// spark.apache.org/docs/latest/mllib-guide.html 47. GraphX Programming Guide. – http://spark.apache.org/ docs/latest/graphx-programming-guide.html 48. Spark SQL and DataFrames – Spark 1.5.2 Documenta- tion. – http://spark.apache.org/docs/latest/sql-program- ming-guide.html 49. Apache Kafka. – http://kafka.apache.org/ 50. Amazon Kinesis. – https://aws.amazon.com/ru/kinesis/ 51. Spark Streaming Programming Guide. – http://spark. apache.org/docs/latest/streaming-programming-guide. html 52. Spark FAQ. – http://spark.apache.org/faq.html 53. Discretized Streams: An Efficient and Fault-Tolerant Model for Stream Processing on Large Clusters / Matei Zaharia, Tathagata Das, Haoyuan Li et al. – Univ. of California, Berkeley. – http://people.csail.mit. edu/matei/papers/2012/ hotcloud_spark_streaming. pdf 54. Discretized Streams: Fault-Tolerant Streaming Com- putation at Scale / Matei Zaharia, Tathagata Das, Haoyuan Li et al. – Univ. of California, Berkeley http:// people.csail.mit.edu/matei/papers/2013/sosp_spark_ streaming.pdf 55. Scala. – http://scala-lang.org/ 56. Contributed Libraries and Tools. – http://www.scala- lang.org/old/node/1209.html#libraries УСиМ, 2016, № 5 75 57. Awesome Scala. – https://github.com/lauris/awesome- scala 58. The Scala Program. Lang. – http://www.scala-lang.org/ old/node/25.html 59. Creating Domain Specific Languages with Scala – Part 1. – http://blog.scalac.io/2015/05/07/encog-dsl.html 60. Hunger M. Domain-Specific Lang. – http://programmer. 97 things. oreilly.com/wiki/index.php/Domain-Specific_ Languages (23.12.15). 61. DSLs – A powerful Scala feature. – http://www.scala- lang.org/old/node/1403 62. The Scala Program. Lang.. – http://www.scala-lang. org/old/ node/25.html 63. Spark 1.5.2 Cluster Mode Overview. – http://spark. apache.org/docs/latest/cluster-overview.html 64. По материалам: Cloudera. Оптимизация заданий Apache Spark. Ч. 1. – http://datareview.info/article/op- timizatsiya-zadaniy-apache-spark-chast-1/, 20.05. 2015. 65. Apache Spark. – http://spark.apache.org/ 66. 18 essential Hadoop tools. – http://www.kdnuggets. com/2014/08/18-essential-hadoop-tools.html. Авг. 2014. 67. Mahout 0.10.1 Features by Engine. – https://mahout. apache.org/users/basics/algorithms.html 68. Ингерсолл Г. Apache Mahout: масштабируемое ма- шинное обучение для всех. – https://www.ibm.com/ developerworks/ru/library/j-mahout-scaling/ 69. What is Apache Mahout? Release Notes. – http://ma- hout.apache.org/ 70. Sparkling Water. – http://www.h2o.ai/product/sparkling- water/ 71. Scala & Spark Bindings. – http://mahout.apache.org/ users/sparkbindings/home.html 72. Lyubimov D. Mahout Scala Bindings and Mahout Spark Bindings for Linear Algebra Subroutines. – http://mah- out.apache.org/users/sparkbindings/ ScalaSparkBindings. pdf 73. Dunning Ted. Why Apache Mahout is shifting its all algorithms from Java to Scala, i.e. are Apache Spark and Apache Mahout are moving in one direction? – http:// www.quora.com/Why-Apache-Mahout-is-shifting-its-all- algorithms-from-Java-to-Scala-i-e-are-Apache-Spark-and- Apache-Mahout-are-moving-in-one-direction, 18 апр. 2015. 74. A Free Software Project. – https://cran.r-project.org/ doc/html/interface98-paper/paper_2.html 75. Ferrel Pat. Mahout on Spark: What’s New in Recom- menders. – https://www.mapr.com/blog/ mahout-spark- what%E2%80%99s-new-recommenders, 12 авг. 2014. 76. Grigorev Alexey. Apache Mahout Samsara: The Quick Start. – http://www.itshared.org/2015/04/apache-mahout- samsara-quick-start.html, April 2015. 77. Friedman Ellen. Advances in Apache Mahout: Highlights for the 0.9 Release. – https://www. mapr.com/blog/ad- vances-apache-mahout-highlights-09-release#.Vebs-r WTWT4, 19 Febr. 2014. 78. Делзелл К. Необходимо ли вам изучать язык R?. – http://www.ibm.com/developerworks/ru/library/bd- learnr/, 24.10.2014. 79. Заботнев М.С. Методы представления информа- ции в разреженных гиперкубах данных. – http:// www.olap.ru/basic/theory.asp 80. Подгорский С. Написание МКЭ расчетчика в менее чем 180 строк кода. – https:// habrahabr.ru/post/271723/, 1 дек. 2015. 81. Lyubimov D. Mahout 0.10.x is coming. – http://www. weatheringthroughtechdays. com/, апр. 2015. 82. Gens F. The 3rd Platform: Enabling Digital Transfor- mation. IDC. – http://www.idc.com, Nov. 2013. Поступила 13.07.2016 Тел. для справок: +38 044 526-4159 (Киев) E-mail: aleksei@irtc.org.ua © А.А. Урсатьев, 2016 UDC 004.7:004.75:004.9:004.738.5 A.A. Oursatyev Some Frameworks for Big Data Analytics and Machine Learning The machine Learning (Machine Learning, ML) and distributed processing of the large data collections on Apache Mahout with the automatic search ability for relevant laws are considered. Its realization through the use of MapReduce paradigm and framework Spark is compared. The representation of data and mechanisms to restore their failures, the method of calculation and the ability to cache data in memory are considered. The latter is a key tool for fast interactive use. Spark is implemented on Scala. It combines the best features of functional and object-oriented programming languages, and uses it as an application of the environment develop- ment. It provides the application programming interface for the Java language, Scala, Python and R, invites more than 80 high-level operators that makes it easily accessible for the construction of a parallel applications. Interactive mathematical environment Mahout Samsara ML includes an extended version of Scala. Mahout Samsara or the Scala & Spark Bindings are necessary for creation the semantically friendly conditions for еру linear algebra, and is built in the image of the base package in R. The linear algebra works with scalars, vectors, matrices and distribution lines of the matrices (distributed row matrix, DRMs). DRM is a new abstraction, introduced in Apache Mahout for the representation and processing matrices convenience. One of the main elements of Mahout Samsara is algebraic DSL Scala and expressions optimizer. ML Mllib, supports the scalable universal linear algebra and includes many modern algorithms.  << /ASCII85EncodePages false /AllowTransparency false /AutoPositionEPSFiles true /AutoRotatePages /None /Binding /Left /CalGrayProfile (Dot Gain 20%) /CalRGBProfile (sRGB IEC61966-2.1) /CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2) /sRGBProfile (sRGB IEC61966-2.1) /CannotEmbedFontPolicy /Error /CompatibilityLevel 1.4 /CompressObjects /Tags /CompressPages true /ConvertImagesToIndexed true /PassThroughJPEGImages true /CreateJobTicket false /DefaultRenderingIntent /Default /DetectBlends true /DetectCurves 0.0000 /ColorConversionStrategy /CMYK /DoThumbnails false /EmbedAllFonts true /EmbedOpenType false /ParseICCProfilesInComments true /EmbedJobOptions true /DSCReportingLevel 0 /EmitDSCWarnings false /EndPage -1 /ImageMemory 1048576 /LockDistillerParams false /MaxSubsetPct 100 /Optimize true /OPM 1 /ParseDSCComments true /ParseDSCCommentsForDocInfo true /PreserveCopyPage true /PreserveDICMYKValues true /PreserveEPSInfo true /PreserveFlatness true /PreserveHalftoneInfo false /PreserveOPIComments true /PreserveOverprintSettings true /StartPage 1 /SubsetFonts true /TransferFunctionInfo /Apply /UCRandBGInfo /Preserve /UsePrologue false /ColorSettingsFile () /AlwaysEmbed [ true ] /NeverEmbed [ true ] /AntiAliasColorImages false /CropColorImages true /ColorImageMinResolution 300 /ColorImageMinResolutionPolicy /OK /DownsampleColorImages true /ColorImageDownsampleType /Bicubic /ColorImageResolution 300 /ColorImageDepth -1 /ColorImageMinDownsampleDepth 1 /ColorImageDownsampleThreshold 1.50000 /EncodeColorImages true /ColorImageFilter /DCTEncode /AutoFilterColorImages true /ColorImageAutoFilterStrategy /JPEG /ColorACSImageDict << /QFactor 0.15 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /ColorImageDict << /QFactor 0.15 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /JPEG2000ColorACSImageDict << /TileWidth 256 /TileHeight 256 /Quality 30 >> /JPEG2000ColorImageDict << /TileWidth 256 /TileHeight 256 /Quality 30 >> /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict << /QFactor 0.15 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /GrayImageDict << /QFactor 0.15 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /JPEG2000GrayACSImageDict << /TileWidth 256 /TileHeight 256 /Quality 30 >> /JPEG2000GrayImageDict << /TileWidth 256 /TileHeight 256 /Quality 30 >> /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict << /K -1 >> /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False /CreateJDFFile false /Description << /ARA <FEFF06270633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F00620065002000500044004600200645062A064806270641064206290020064406440637062806270639062900200641064A00200627064406450637062706280639002006300627062A0020062F0631062C0627062A002006270644062C0648062F0629002006270644063906270644064A0629061B0020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644064506460634062306290020062806270633062A062E062F062706450020004100630072006F0062006100740020064800410064006F006200650020005200650061006400650072002006250635062F0627063100200035002E0030002006480627064406250635062F062706310627062A0020062706440623062D062F062B002E0635062F0627063100200035002E0030002006480627064406250635062F062706310627062A0020062706440623062D062F062B002E> /BGR <FEFF04180437043f043e043b043704320430043904420435002004420435043704380020043d0430044104420440043e0439043a0438002c00200437043000200434043000200441044a0437043404300432043004420435002000410064006f00620065002000500044004600200434043e043a0443043c0435043d04420438002c0020043c0430043a04410438043c0430043b043d043e0020043f044004380433043e04340435043d04380020043704300020043204380441043e043a043e043a0430044704350441044204320435043d0020043f04350447043004420020043704300020043f044004350434043f0435044704300442043d04300020043f043e04340433043e0442043e0432043a0430002e002000200421044a04370434043004340435043d043804420435002000500044004600200434043e043a0443043c0435043d044204380020043c043e0433043004420020043404300020044104350020043e0442043204300440044f0442002004410020004100630072006f00620061007400200438002000410064006f00620065002000520065006100640065007200200035002e00300020043800200441043b0435043404320430044904380020043204350440044104380438002e> /CHS <FEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e9ad88d2891cf76845370524d53705237300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002> /CHT <FEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc9ad854c18cea76845370524d5370523786557406300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002> /CZE <FEFF005400610074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002c0020006b00740065007200e90020007300650020006e0065006a006c00e90070006500200068006f006400ed002000700072006f0020006b00760061006c00690074006e00ed0020007400690073006b00200061002000700072006500700072006500730073002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e007400790020005000440046002000620075006400650020006d006f017e006e00e90020006f007400650076015900ed007400200076002000700072006f006700720061006d0065006300680020004100630072006f00620061007400200061002000410064006f00620065002000520065006100640065007200200035002e0030002000610020006e006f0076011b006a016100ed00630068002e> /DAN <FEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000620065006400730074002000650067006e006500720020007300690067002000740069006c002000700072006500700072006500730073002d007500640073006b007200690076006e0069006e00670020006100660020006800f8006a0020006b00760061006c0069007400650074002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200035002e00300020006f00670020006e0079006500720065002e> /DEU <FEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200076006f006e002000640065006e0065006e002000530069006500200068006f006300680077006500720074006900670065002000500072006500700072006500730073002d0044007200750063006b0065002000650072007a0065007500670065006e0020006d00f60063006800740065006e002e002000450072007300740065006c006c007400650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000410064006f00620065002000520065006100640065007200200035002e00300020006f0064006500720020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002e> /ESP <FEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f00730020005000440046002000640065002000410064006f0062006500200061006400650063007500610064006f00730020007000610072006100200069006d0070007200650073006900f3006e0020007000720065002d0065006400690074006f007200690061006c00200064006500200061006c00740061002000630061006c0069006400610064002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002e> /ETI <FEFF004b00610073007500740061006700650020006e0065006900640020007300e4007400740065006900640020006b00760061006c006900740065006500740073006500200074007200fc006b006900650065006c007300650020007000720069006e00740069006d0069007300650020006a0061006f006b007300200073006f00620069006c0069006b0065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740069006400650020006c006f006f006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e00740065002000730061006100740065002000610076006100640061002000700072006f006700720061006d006d006900640065006700610020004100630072006f0062006100740020006e0069006e0067002000410064006f00620065002000520065006100640065007200200035002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002e000d000a> /FRA <FEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f00620065002000500044004600200070006f0075007200200075006e00650020007100750061006c0069007400e90020006400270069006d007000720065007300730069006f006e00200070007200e9007000720065007300730065002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200035002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002e> /GRE <FEFF03a703c103b703c303b903bc03bf03c003bf03b903ae03c303c403b5002003b103c503c403ad03c2002003c403b903c2002003c103c503b803bc03af03c303b503b903c2002003b303b903b1002003bd03b1002003b403b703bc03b903bf03c503c103b303ae03c303b503c403b5002003ad03b303b303c103b103c603b1002000410064006f006200650020005000440046002003c003bf03c5002003b503af03bd03b103b9002003ba03b103c42019002003b503be03bf03c703ae03bd002003ba03b103c403ac03bb03bb03b703bb03b1002003b303b903b1002003c003c103bf002d03b503ba03c403c503c003c903c403b903ba03ad03c2002003b503c103b303b103c303af03b503c2002003c503c803b703bb03ae03c2002003c003bf03b903cc03c403b703c403b103c2002e0020002003a403b10020005000440046002003ad03b303b303c103b103c603b1002003c003bf03c5002003ad03c703b503c403b5002003b403b703bc03b903bf03c503c103b303ae03c303b503b9002003bc03c003bf03c103bf03cd03bd002003bd03b1002003b103bd03bf03b903c703c403bf03cd03bd002003bc03b5002003c403bf0020004100630072006f006200610074002c002003c403bf002000410064006f00620065002000520065006100640065007200200035002e0030002003ba03b103b9002003bc03b503c403b103b303b503bd03ad03c303c403b503c103b503c2002003b503ba03b403cc03c303b503b903c2002e> /HEB <FEFF05D405E905EA05DE05E905D5002005D105D405D205D305E805D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05D505EA05D005DE05D905DD002005DC05D405D305E405E105EA002005E705D305DD002D05D305E405D505E1002005D005D905DB05D505EA05D905EA002E002005DE05E105DE05DB05D90020005000440046002005E905E005D505E605E805D5002005E005D905EA05E005D905DD002005DC05E405EA05D905D705D4002005D105D005DE05E605E205D505EA0020004100630072006F006200610074002005D5002D00410064006F00620065002000520065006100640065007200200035002E0030002005D505D205E805E105D005D505EA002005DE05EA05E705D305DE05D505EA002005D905D505EA05E8002E05D005DE05D905DD002005DC002D005000440046002F0058002D0033002C002005E205D905D905E005D5002005D105DE05D305E805D905DA002005DC05DE05E905EA05DE05E9002005E905DC0020004100630072006F006200610074002E002005DE05E105DE05DB05D90020005000440046002005E905E005D505E605E805D5002005E005D905EA05E005D905DD002005DC05E405EA05D905D705D4002005D105D005DE05E605E205D505EA0020004100630072006F006200610074002005D5002D00410064006F00620065002000520065006100640065007200200035002E0030002005D505D205E805E105D005D505EA002005DE05EA05E705D305DE05D505EA002005D905D505EA05E8002E> /HRV (Za stvaranje Adobe PDF dokumenata najpogodnijih za visokokvalitetni ispis prije tiskanja koristite ove postavke. Stvoreni PDF dokumenti mogu se otvoriti Acrobat i Adobe Reader 5.0 i kasnijim verzijama.) /HUN <FEFF004b0069007600e1006c00f30020006d0069006e0151007300e9006701710020006e0079006f006d00640061006900200065006c0151006b00e90073007a00ed007401510020006e0079006f006d00740061007400e100730068006f007a0020006c006500670069006e006b00e1006200620020006d0065006700660065006c0065006c0151002000410064006f00620065002000500044004600200064006f006b0075006d0065006e00740075006d006f006b0061007400200065007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c0020006b00e90073007a00ed0074006800650074002e0020002000410020006c00e90074007200650068006f007a006f00740074002000500044004600200064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200035002e0030002c0020007600610067007900200061007a002000610074007400f3006c0020006b00e9007301510062006200690020007600650072007a006900f3006b006b0061006c0020006e00790069007400680061007400f3006b0020006d00650067002e> /ITA <FEFF005500740069006c0069007a007a006100720065002000710075006500730074006500200069006d0070006f007300740061007a0069006f006e00690020007000650072002000630072006500610072006500200064006f00630075006d0065006e00740069002000410064006f00620065002000500044004600200070006900f900200061006400610074007400690020006100200075006e00610020007000720065007300740061006d0070006100200064006900200061006c007400610020007100750061006c0069007400e0002e0020004900200064006f00630075006d0065006e007400690020005000440046002000630072006500610074006900200070006f00730073006f006e006f0020006500730073006500720065002000610070006500720074006900200063006f006e0020004100630072006f00620061007400200065002000410064006f00620065002000520065006100640065007200200035002e003000200065002000760065007200730069006f006e006900200073007500630063006500730073006900760065002e> /JPN <FEFF9ad854c18cea306a30d730ea30d730ec30b951fa529b7528002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200035002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a306b306f30d530a930f330c8306e57cb30818fbc307f304c5fc59808306730593002> /KOR <FEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020ace0d488c9c80020c2dcd5d80020c778c1c4c5d00020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200035002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002e> /LTH <FEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d00690020006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b00750072006900650020006c0061006200690061007500730069006100690020007000720069007400610069006b007900740069002000610075006b01610074006f00730020006b006f006b007900620117007300200070006100720065006e006700740069006e00690061006d00200073007000610075007300640069006e0069006d00750069002e0020002000530075006b0075007200740069002000500044004600200064006f006b0075006d0065006e007400610069002000670061006c006900200062016b007400690020006100740069006400610072006f006d00690020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200035002e0030002000610072002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002e> /LVI <FEFF0049007a006d0061006e0074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020006900720020012b00700061016100690020007000690065006d01130072006f00740069002000610075006700730074006100730020006b00760061006c0069007401010074006500730020007000690072006d007300690065007300700069006501610061006e006100730020006400720075006b00610069002e00200049007a0076006500690064006f006a006900650074002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006f002000760061007200200061007400760113007200740020006100720020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200035002e0030002c0020006b0101002000610072012b00200074006f0020006a00610075006e0101006b0101006d002000760065007200730069006a0101006d002e> /NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken die zijn geoptimaliseerd voor prepress-afdrukken van hoge kwaliteit. De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 5.0 en hoger.) /NOR <FEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d00200065007200200062006500730074002000650067006e0065007400200066006f00720020006600f80072007400720079006b006b0073007500740073006b00720069006600740020006100760020006800f800790020006b00760061006c0069007400650074002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200035002e003000200065006c006c00650072002000730065006e006500720065002e> /POL <FEFF0055007300740061007700690065006e0069006100200064006f002000740077006f0072007a0065006e0069006100200064006f006b0075006d0065006e007400f300770020005000440046002000700072007a0065007a006e00610063007a006f006e00790063006800200064006f002000770079006400720075006b00f30077002000770020007700790073006f006b00690065006a0020006a0061006b006f015b00630069002e002000200044006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d006900650020004100630072006f00620061007400200069002000410064006f00620065002000520065006100640065007200200035002e0030002000690020006e006f00770073007a0079006d002e> /PTB <FEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f0062006500200050004400460020006d00610069007300200061006400650071007500610064006f00730020007000610072006100200070007200e9002d0069006d0070007200650073007300f50065007300200064006500200061006c007400610020007100750061006c00690064006100640065002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200035002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002e> /RUM <FEFF005500740069006c0069007a00610163006900200061006300650073007400650020007300650074010300720069002000700065006e007400720075002000610020006300720065006100200064006f00630075006d0065006e00740065002000410064006f006200650020005000440046002000610064006500630076006100740065002000700065006e0074007200750020007400690070010300720069007200650061002000700072006500700072006500730073002000640065002000630061006c006900740061007400650020007300750070006500720069006f006100720103002e002000200044006f00630075006d0065006e00740065006c00650020005000440046002000630072006500610074006500200070006f00740020006600690020006400650073006300680069007300650020006300750020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e00300020015f00690020007600650072007300690075006e0069006c006500200075006c0074006500720069006f006100720065002e> /RUS <FEFF04180441043f043e043b044c04370443043904420435002004340430043d043d044b04350020043d0430044104420440043e0439043a043800200434043b044f00200441043e043704340430043d0438044f00200434043e043a0443043c0435043d0442043e0432002000410064006f006200650020005000440046002c0020043c0430043a04410438043c0430043b044c043d043e0020043f043e04340445043e0434044f04490438044500200434043b044f00200432044b0441043e043a043e043a0430044704350441044204320435043d043d043e0433043e00200434043e043f0435044704300442043d043e0433043e00200432044b0432043e04340430002e002000200421043e043704340430043d043d044b04350020005000440046002d0434043e043a0443043c0435043d0442044b0020043c043e0436043d043e0020043e0442043a0440044b043204300442044c002004410020043f043e043c043e0449044c044e0020004100630072006f00620061007400200438002000410064006f00620065002000520065006100640065007200200035002e00300020043800200431043e043b043504350020043f043e04370434043d043804450020043204350440044104380439002e> /SKY <FEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200070006f0075017e0069007400650020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f0076002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300610020006e0061006a006c0065007001610069006500200068006f0064006900610020006e00610020006b00760061006c00690074006e00fa00200074006c0061010d00200061002000700072006500700072006500730073002e00200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e007400790020005000440046002000620075006400650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d006f006300680020004100630072006f00620061007400200061002000410064006f00620065002000520065006100640065007200200035002e0030002000610020006e006f0076016100ed00630068002e> /SLV <FEFF005400650020006e006100730074006100760069007400760065002000750070006f0072006100620069007400650020007a00610020007500730074007600610072006a0061006e006a006500200064006f006b0075006d0065006e0074006f0076002000410064006f006200650020005000440046002c0020006b006900200073006f0020006e0061006a007000720069006d00650072006e0065006a016100690020007a00610020006b0061006b006f0076006f00730074006e006f0020007400690073006b0061006e006a00650020007300200070007200690070007200610076006f0020006e00610020007400690073006b002e00200020005500730074007600610072006a0065006e006500200064006f006b0075006d0065006e0074006500200050004400460020006a00650020006d006f0067006f010d00650020006f0064007000720065007400690020007a0020004100630072006f00620061007400200069006e002000410064006f00620065002000520065006100640065007200200035002e003000200069006e0020006e006f00760065006a01610069006d002e> /SUO <FEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f00740020006c00e400680069006e006e00e4002000760061006100740069007600610061006e0020007000610069006e006100740075006b00730065006e002000760061006c006d0069007300740065006c00750074007900f6006800f6006e00200073006f00700069007600690061002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200035002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002e> /SVE <FEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d002000e400720020006c00e4006d0070006c0069006700610020006600f60072002000700072006500700072006500730073002d007500740073006b00720069006600740020006d006500640020006800f600670020006b00760061006c0069007400650074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200035002e00300020006f00630068002000730065006e006100720065002e> /TUR <FEFF005900fc006b00730065006b0020006b0061006c006900740065006c0069002000f6006e002000790061007a006401310072006d00610020006200610073006b013100730131006e006100200065006e0020006900790069002000750079006100620069006c006500630065006b002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e00200020004f006c0075015f0074007500720075006c0061006e0020005000440046002000620065006c00670065006c0065007200690020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200035002e003000200076006500200073006f006e0072006100730131006e00640061006b00690020007300fc007200fc006d006c00650072006c00650020006100e70131006c006100620069006c00690072002e> /UKR <FEFF04120438043a043e0440043804410442043e043204430439044204350020044604560020043f043004400430043c043504420440043800200434043b044f0020044104420432043e04400435043d043d044f00200434043e043a0443043c0435043d044204560432002000410064006f006200650020005000440046002c0020044f043a04560020043d04300439043a04400430044904350020043f045604340445043e0434044f0442044c00200434043b044f0020043204380441043e043a043e044f043a04560441043d043e0433043e0020043f0435044004350434043404400443043a043e0432043e0433043e0020043404400443043a0443002e00200020042104420432043e04400435043d045600200434043e043a0443043c0435043d0442043800200050004400460020043c043e0436043d04300020043204560434043a0440043804420438002004430020004100630072006f006200610074002004420430002000410064006f00620065002000520065006100640065007200200035002e0030002004300431043e0020043f04560437043d04560448043e04570020043204350440044104560457002e> /ENU (Use these settings to create Adobe PDF documents best suited for high-quality prepress printing. Created PDF documents can be opened with Acrobat and Adobe Reader 5.0 and later.) >> /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ << /AsReaderSpreads false /CropImagesToFrames true /ErrorControl /WarnAndContinue /FlattenerIgnoreSpreadOverrides false /IncludeGuidesGrids false /IncludeNonPrinting false /IncludeSlug false /Namespace [ (Adobe) (InDesign) (4.0) ] /OmitPlacedBitmaps false /OmitPlacedEPS false /OmitPlacedPDF false /SimulateOverprint /Legacy >> << /AddBleedMarks false /AddColorBars false /AddCropMarks false /AddPageInfo false /AddRegMarks false /ConvertColors /ConvertToCMYK /DestinationProfileName () /DestinationProfileSelector /DocumentCMYK /Downsample16BitImages true /FlattenerPreset << /PresetSelector /MediumResolution >> /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ] >> setdistillerparams << /HWResolution [2400 2400] /PageSize [612.000 792.000] >> setpagedevice