Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce
Исследована эффективность использования различных языков для фреймворка Apache Hadoop с целью обработки больших коллекций данных на базе модели MapReduce. Акцент сделан на анализе скорости выполнения программ в Hadoop-кластере. Проведено сравнение различных проектов по экосистеме Hadoop для распреде...
Saved in:
| Published in: | Управляющие системы и машины |
|---|---|
| Date: | 2016 |
| Main Authors: | , |
| Format: | Article |
| Language: | Russian |
| Published: |
Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України
2016
|
| Subjects: | |
| Online Access: | https://nasplib.isofts.kiev.ua/handle/123456789/113403 |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
| Journal Title: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| Cite this: | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce / А.Н. Глибовец, Я.О. Дмитрук // Управляющие системы и машины. — 2016. — № 5. — С. 84-92. — Бібліогр.: 10 назв. — рос. |
Institution
Digital Library of Periodicals of National Academy of Sciences of Ukraine| _version_ | 1859834082832154624 |
|---|---|
| author | Глибовец, А.Н. Дмитрук, Я.О. |
| author_facet | Глибовец, А.Н. Дмитрук, Я.О. |
| citation_txt | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce / А.Н. Глибовец, Я.О. Дмитрук // Управляющие системы и машины. — 2016. — № 5. — С. 84-92. — Бібліогр.: 10 назв. — рос. |
| collection | DSpace DC |
| container_title | Управляющие системы и машины |
| description | Исследована эффективность использования различных языков для фреймворка Apache Hadoop с целью обработки больших коллекций данных на базе модели MapReduce. Акцент сделан на анализе скорости выполнения программ в Hadoop-кластере. Проведено сравнение различных проектов по экосистеме Hadoop для распределенных вычислений. Описанные эксперименты подтвердили преимущество использования Apache Spark. Установлено, что преимущество в скорости MapReduce-программ, написанных на Java- или другом JVM-языке, существенны.
Досліджено ефективність використання різних мов програмування у фреймворку Apache Hadoop для обробки великих колекцій даних з використанням моделі MapReduce. Акцент зроблено на аналізі швидкості виконання програм у Hadoopкластері. Проведено порівняння різних проектів із екосистеми Hadoop для розподілених обчислень. Описано експерименти, які підтвердили переваги використання Apache Spark. Встановлено, що перевага у швидкості MapReduce-програм, написаних на Java- або іншій JVM-мові над іншими, є суттєвою.
The effectiveness of the different languages for Apache Hadoop framework to process large data collections based on the MapReduce model is discussed. Apache Hadoop is used in many industrial projects all over world such as Facebook and Yahoo!. It provides the ability to process different tasks effectively and reliably on the cluster to handle the huge amounts of data. MR model allows the developers to ignore the complex architectures by cluster management, and immediately to develop a program. This work investigates the influence of the programming language on the speed of the program in the Apache Hadoop framework. The subject of comparison is the execution of programs in Java, Scala and Python that implements the solution of the simple problem: how long each word in the input collection of text documents is searched. All three programs, in spite of the language, is written in the same style, so that the comparison results are objective. For the experiments, we have chosen the image of ClouderaQuickstart VM virtual machine. The easy use of this virtual machine is that it is already established Hadoop, HDFS, and other services. Also, a cluster of three nodes is created for the study. CDH is elected as the distribution of Apache Hadoop and related projects. The desired configuration on each node is set. Each program is ran for the different size input: 8Mb, 34Mb, 61Mb, 106Mb and 203Mb. During the experiments, the best results is showed by the program that is written in the Apache Spark. In addition, it is found that the MR program in the Apache Hadoop is better to write in Java or any other JVM languages than Python. An advantage in speed is obvious. Also, experiments shows that the processing speed is larger at higher input collections. So, it is not necessary to use Hadoop to work with small data.
|
| first_indexed | 2025-12-07T15:33:56Z |
| format | Article |
| fulltext |
84 УСиМ, 2016, № 5
Программная инженерия и программные средства
УДК 681.3:658.56
А.Н. Глибовец, Я.О. Дмитрук
Эффективность применения языков программирования в фреймворке
Apache Hadoop с использованием MapReduce
Исследована эффективность использования различных языков для фреймворка Apache Hadoop с целью обработки больших
коллекций данных на базе модели MapReduce. Акцент сделан на анализе скорости выполнения программ в Hadoop-кластере.
Проведено сравнение различных проектов по экосистеме Hadoop для распределенных вычислений. Описанные эксперименты
подтвердили преимущество использования Apache Spark. Установлено, что преимущество в скорости MapReduce-программ,
написанных на Java- или другом JVM-языке, существенны.
Ключевые слова: BigData, MapReduce, Apache Hadoop, Spark, Java, Pyton, Scala.
Досліджено ефективність використання різних мов програмування у фреймворку Apache Hadoop для обробки великих
колекцій даних з використанням моделі MapReduce. Акцент зроблено на аналізі швидкості виконання програм у Hadoop-
кластері. Проведено порівняння різних проектів із екосистеми Hadoop для розподілених обчислень. Описано експерименти,
які підтвердили переваги використання Apache Spark. Встановлено, що перевага у швидкості MapReduce-програм, написаних
на Java- або іншій JVM-мові над іншими, є суттєвою.
Ключові слова: BigData, MapReduce, Apache Hadoop, Spark, Java, Pyton, Scala.
Введение. Потребность в оптимизации обра-
ботки больших объемов данных (BigData)
привела к разработке новых программных ре-
шений. Одним из таковых стала модель рас-
пределенных вычислений MapReduce, обеспе-
чивающая эффективную обработку и генери-
рование больших наборов данных [1]. Цель
настоящей статьи – выбор языка программи-
рования и инструментрия, которые будут ис-
пользованы в задачах построения поисковых
систем, в часности при индексировании масси-
вов данных.
MapReduce (MR) называют подходом к об-
работке данных, моделью распределенных вы-
числений, парадигмой обработки данных, па-
радигмой программирования [2]. Будем ис-
пользовать следующее определение: MR – мо-
дель распределенных вычислений, разрабо-
танная Google, используемая для организации
параллельных вычислений с очень большими
наборами данных в компьютерных кластерах.
Эта модель базируется на идеях функцио-
нального программирования. Двумя часто при-
меняемыми функциями высшего порядка есть
map и fold. Первая функция в качестве аргу-
ментов принимает некоторую функцию m и
список L. Далее, к каждому элементу списка L
применяется функция m, и как результат воз-
вращается модифицированный список. Вторая
функция приводит структуру данных к едино-
му атомарному значению. MR использует по-
добную аналогию: фаза Map соответствует
функции map, а фаза Reduce – функции fold.
Конечно, MR работает в кластере, где опера-
ции распределяются между многими машина-
ми, и является более сложной, но корреляцию
с функциональным подходом можно увидеть.
Вычисления выполняются над множеством
входных пар ключ–значение, в результате каж-
дого из них образуется новое множество из пар
ключ–значение. Для вычислений используются
две функции: Map и Reduce. Они явно опреде-
ляются разработчиком.
Пары ключ–значение формируют базовую
структуру данных в MR. Ключи и значения мо-
гут быть примитивами, например натуральны-
ми числами, числами с плавающей точкой,
строкой или сложными структурами – списки,
массивы и др. Программист может также оп-
ределить и собственную структуру данных. На-
УСиМ, 2016, № 5 85
ложение структуры ключ–значение на произ-
вольную коллекцию данных есть одним из су-
щественных этапов проектирования MR-алго-
ритма. Например, для коллекции Web-страниц
ключом могут быть URL-страницы, а значени-
ем HTML – содержимое страницы [3].
В функции распределения (partitioner) раз-
работчик может явно указать необходимое
число редюсеров (задач Reduce). Данные рас-
пределяются между этими задачами с исполь-
зованием некоторой функции разделения от
значений промежуточного ключа. По умолча-
нию используется функция хеширования (на-
пример, hash (key) mod R). Однако пользовате-
ли MR могут специфицировать и собственные
функции разделения [2].
В некоторых случаях в результатах задачи
Map содержится много одинаковых значений
промежуточного ключа, а определенная разра-
ботчиком задача Reduce является коммутатив-
ной и ассоциативной. В таких случаях пользо-
ватель может определить дополнительную функ-
цию-комбинатор (combiner), выполняющую час-
тичную агрегацию таких данных до их переда-
чи по сети. Функция combiner выполняется на
той же машине, что и задачи Map. Обычно для
ее реализации используется тот же код, что и
для реализации функции reduce. Единственное
различие между функциями combiner и reduce
состоит в способе работы с их результирую-
щими данными. Результаты функции reduce за-
писываются в окончательный файл результа-
тов. Результаты же функции combiner помеща-
ются в промежуточные файлы, впоследствии
пересылаемые в задачи Reduce. Применение
MR предусматривает использование распреде-
ленной файловой системы.
Более детальное описание выполнения MR-
программы представлено в [2].
Сначала MR разбивает исходный файл на M
частей заданного размера. Далее запускается
основная программа сразу на нескольких узлах
кластера. Один из узлов становится распоря-
дителем (master), а остальные – исполнителя-
ми (worker). Распорядитель назначает работу
исполнителям, для выполнения M задач Map и
R задач Reduce.
Исполнитель, которому назначена задача
Map (mappers), читает содержаимое соответст-
вующей группы, разбирает пары ключ–значе-
ние входных данных. Промежуточные пары
ключ–значение, образованные функцией Map,
собираются в буфере основной памяти. Перио-
дически буферизированные пары, разделенные
на R областей функцией распределения, запи-
сываются в локальную дисковую память ис-
полнителя. Координаты этих сохранившихся
буферизуемых пар направляются распорядите-
лю для передачи исполнителям задачи Reduce
(reducers). I-й редюсер получает координаты
всех i-х областей буферизованных пар, образо-
ванных всеми Mар-исполнителями.
После получения этих координат от распо-
рядителя Reduce-исполнитель с использовани-
ем механизма отдаленных вызовов процедур
переписывает данные с локальных дисков Map-
исполнителей в свою память или на жесткий
диск (в зависимости от объема данных). После
переписи всех промежуточных данных выпол-
няется их сортировка по значениям промежу-
точного ключа для образования групп с одина-
ковым значением ключа. Если объем проме-
жуточных данных слишком велик для выпол-
нения сортировки в основной памяти, исполь-
зуются внешние сортировки.
Далее Reduce-исполнитель организует цикл
по отсортированным промежуточным данным
и для каждого уникального значения ключа
вызывает функцию пользователя Reduce, кото-
рая получает в качестве аргументов ключ и
связанные с ним значения. Результирующие
пары функции Reduce добавляются в оконча-
тельный результирующий файл данного Reduce-
исполнителя.
После успешного завершения выполнения
задания MR-результаты размещаются в H фай-
лах распределенной файловой системы. Обыч-
но нет необходимости объединять их в один
файл, так как часто полученные файлы исполь-
зуются как входные для запуска следующей
MR-задачи или в каком-нибудь другом распре-
деленном приложении, которое может полу-
чать входные данные из нескольких файлов.
86 УСиМ, 2016, № 5
Apache Hadoop и связанные с ним проекты
Apache Hadoop – это фреймворк с открытым
кодом, написанный на Java для распределен-
ного хранения и вычисления больших коллек-
ций данных в кластере [4]. Базовыми модуля-
ми Apache Hadoop являются: Hadoop Common –
модуль, который содержит библиотеки и ути-
литы для других модулей; HDFS (Hadoop
Distributed File System) – распределенная фай-
ловая система; Hadoop Yarn – модуль управле-
ния ресурсами кластера для выполнения при-
ложений пользователя; Hadoop MR – модель
программирования для обработки больших кол-
лекций данных.
Кроме упомянутых составляющих в Hadoop
могут входить и другие модули. Часто говорят,
что эти модули входят в «экосистемы» Hadoop,
и устанавливаются на его верхнем уровне.
Примерами проектов, входящих в экосистемы
Hadoop, являются Apache Hive, Apache Pig,
Apache HBase, Apache Spark и др.
Apache Hadoop имеет много связанных про-
ектов в своей «экосистеме», созданных для уп-
рощения работы в этом фреймворке. Все име-
ют преимущества и недостатки. Далее будут
рассмотрены только те проекты экосистемы
Hadoop, которые используются в этой статье.
Apache Hive – распределенное хранилище
данных, построенное на вершине Hadoop, ко-
торое облегчает процесс управления данными
для разработчика. Hive предоставляет язык для
написания запросов HiveQL, подобный SQL.
Во время выполнения HiveQL-запрос перево-
дится в несколько MR-работ (job) [5].
HiveQL – декларативный язык, упрощаю-
щий процесс программирования. Однако раз-
работчик может только надеяться, что его за-
прос будет эффективно реализован. Именно по-
этому в данной статье проверяется, будет ли
время выполнения MR-программы на Hive та-
ким же, как программы на Java.
Apache Spark – высокопроизводительный
фреймворк для обработки данных, хранящихся
в кластере Hadoop. Он может выполняться на
узлах кластера Hadoop как с помощью Hadoop
YARN, так и в самостоятельном режиме. Под-
держивается обработка данных в хранилищах
HDFS, HBase, Cassandra, Hive и в любом фор-
мате ввода Hadoop (InputFormat) [6].
В сравнении с предоставленным в Hadoop
механизмом MR, продуктивность работы Spark
ощутимо зависит от сложности задачи и раз-
мера данных и может обеспечивать в 100 раз
большую производительность при обработке
данных в оперативной памяти и в 10 раз – при
размещении данных на дисках. Это связанно с
тем, что Spark строит граф выполнения слож-
ных задач и позволяет с меньшими потерями
восстанавливаться после сбоев, а также эффек-
тивно использует кеширование промежуточ-
ных результатов. Spark может использоваться
как в типовых сценариях обработки данных в
архитектуре MR, так и для реализации специ-
фических методов, таких как потоковая обра-
ботка SQL, интерактивные и аналитические
запросы, решение задач машинного обучения
и работа с графами [6]. В 2014 г. Apache Spark
установил рекорд при сортировке 100 Тб дан-
ных [7].
Hadoop может быть развернут как на персо-
нальных компьютерах, так и в виде кластера в
облаке. HDInsight – это сервис развертывания
Hadoop-кластера в облаке Microsoft Azure. HD-
Insight в настоящее время предоставляет ди-
стрибутив Hadoop, основанный на Windows Ser-
ver, разработанный совместно с Hortonworks.
HDInsight разворачивается несколькими нажа-
тиями мыши, и уже через 15–25 мин кластер
будет готов к использованию. Разработчик мо-
жет выбрать необходимое количество узлов и их
конфигурацию. Следует отметить, что Microsoft
работает в режиме предоплаты. Деньги будут
сниматься за время, пока кластер работает (да-
же просто создан и не занимается вычисле-
ниями), а также за трафик. Чтобы остановить
кластер, его придется удалять, а потом заново
создавать. Преимущество – то, что HDInsight
использует хранилища, существующие незави-
симо, т.е. при удалении кластера данные хра-
нилищ сохраняются.
Эксперименты с реализацией программ
Кластер с одним узлом. Для ознакомления
с Hadoop часто рекомендуют использовать клас-
тер с одним узлом. Проанализированы доступ-
УСиМ, 2016, № 5 87
ные дистрибутивы виртуальных машин с гото-
вой конфигурацией: Cloudera, Hortonworks,
MapR. Выбран образ виртуальной машины
Cloudera Quickstart VM. Удобство использова-
ния этой виртуальной машины заключается в
том, что в ней уже установлены Hadoop, HDFS
и все необходимые для проведения экспери-
ментов сервисы. Характеристики физической
машины, на который запускался узел вирту-
альной машины: процесор – Intel Core i5-
2410M (2.3 Ггц), 3 Гб оперативной памяти. Ха-
рактеристики виртуальной машины: 2 Гб опе-
ративной памяти, ОС – Ubuntu.
Предметом сравнения было время выполне-
ния программ на языках Java, Scala и Python,
реализовавших решения простой задачи: сколь-
ко раз встречается каждое слово во входной
коллекции текстовых документов. Заметим, что
все три программы были написаны в одном сти-
ле, чтобы результаты сравнения были объектив-
ными. Например, текст программы WordCount
на Java был взят из [7].
Скомпилируем WordCount.java и создадим
jar (Java ARchive) (учитывая, что HADOOP_
HOME – директория, куда установлен Hadoop,
а HADOOP_VERSION – его версия):
$ mkdir wordcount_classes
$ javac – classpath ${HADOOP_HOME}/hado-
op-${HADOOP_VERSION}-core.jar – d word-
count_ classes WordCount.java
$ jar – cvf /usr/joe/wordcount.jar – C word-
count_classes/ .
Запускаем программу в Hadoop так:
$ hadoop jar wordcount.jar org.myorg.Word-
Count myinput wordcount_java_output.
Для написания и запуска WordCount на Scala
проделана следующая работа. Пусть файл
pom.xml – основной файл описания проекта.
Откроем командную строку и перейдем в ди-
ректорию проекта, где хранится файл. С по-
мощью Maven выполним команду mvn clean
package. Выполнение программы иницыирует-
ся запуском в командной строке виртуальной
машины команды: hadoop jar target / word-
count-1.0-job.jar / myinput / wordcount_scala_
output.
Запуск программы на Python опишем более
детально. Создадим файл mapper.py для хране-
ния кода Map-функции:
#!/usr/bin/env python
import sys
def read_input(file):
# Split each line into words
for line in file:
yield line.split()
def main(separator='\t'):
data = read_input(sys.stdin)
for words in data:
# Process each word
for word in words:
print '%s%s%d' % (word, separator, 1)
if __name__ == «__main__»:
main()
Создадим файл reducer.py, в котором хра-
нится код Reduce-функции:
#!/usr/bin/env python
# import modules
from itertools import groupby
from operator import itemgetter
import sys
def read_mapper_output(file, separator='\t'):
for line in file:
yield line.rstrip().split(separator, 1)
def main(separator='\t'):
data = read_mapper_output(sys.stdin, sepa-
rator=separator)
# Group words and counts into 'group'
# Since MR is a distributed process, each
word
# may have multiple counts. 'group' will
have all counts
# which can be retrieved using the word as
the key.
for current_word, group in groupby(data,
itemgetter(0)):
try:
total_count = sum(int(count) for cur-
rent_word, count in group)
88 УСиМ, 2016, № 5
print «%s%s%d» % (current_word,
separator, total_count)
except ValueError:
# Count was not a number, so do nothing
pass
if __name__ == «__main__»:
main()
Запустим программу: hadoop jar /usr/lib/
hadoop-0.20-MR/contrib/streaming/hadoop-strea-
ming-2.0.0-mr1-cdh4.1.1. jar -mapper mapper.py
-reducer reducer.py -file mapper.py –file reducer.
py – input <path> -output <path>
Каждая из программ запущена для разных
размеров входных данных: 8 Мб, 34 Мб, 61 Мб,
106 Мб и 203 Мб.
Эксперимент показал, что MR-программа на
Python в Hadoop работает медленнее програм-
мы на Java или Scala. Время выполнения про-
граммы на Java и Scala почти одинаково
(рис. 1). Следовательно, выбор языка програм-
мирования существенно влияет на время вы-
полнения.
Время (секунды)
Рис. 1. Время выполнения програмы WordCount
Программы, написанные на JVM-не совмес-
тимых языках в Hadoop, будут работать доль-
ше. Это объясняется тем, что во время потоково-
го процесса (Streaming) Java-процесс (task JVM)
передает входные пары ключ–значение в некото-
рый внешний процесс, где выполняется map-
или reduce-функция, и по завершении возвра-
щаются выходные пары ключ–значение в Java-
процесс, что занимает определенное время.
Кластер с несколькими узлами. Для иссле-
дования создан кластер из трех узлов (вир-
туальных машин). Был избран CDH (Cloudera
Distribution Including Apache Hadoop) как ди-
стрибутив Apache Hadoop и связанных с ним
проектов. Опустим настройки кластера, под-
робности ее – в открытом доступе в Интернет
[8, 9].
Кластер состоял из трех узлов: CDH1, CDH2
и CDH3. Каждый узел – это отдельная вирту-
альная машина, для которой выделены опреде-
ленные ресурсы, установлены различные сер-
висы и настроена сеть. Для каждого узла вы-
делена оперативная память: CDH1 – 6 Гб;
CDH2 – 4 Гб; CDH3 – 2 Гб. Сервисы, установ-
ленные на каждом узле, можно увидеть в таб-
лице.
Узлы Название сервиса
CDH1 CDH2 CDH3
Cloudera Manager Server +
Cloudera Manager Agent + + +
Standby Name Node +
Name Node +
Data Node + + +
Task Tracker + + +
Job Tracker +
Node Manager + + +
Resource Manager + +
Balancer +
ZooKeeper Server + + +
Job History Server +
Journal Node + + +
ZooKeeper Failover controller + +
Конфигурация машины, на которой был раз-
вернут кластер, имела следующие характери-
стики: CPU – Intel Core i7-3632QM (2.2 GHz),
RAM – 16.0 Gb (DDR3), Hard disk – 1 Tb (HDD),
OS – Windows 8 (64-bit). Узлы CDH1, CDH2 и
CDH3 имели следующие IP адреса 192.168.1.201,
192.168.1.202 и 192.168.1.203 соответственно.
Для анализа была выбрана следующая зада-
ча. Необходимо посчитать количество сооб-
щений для каждого IP-адреса по каждому дню,
часу и уровню лога. Программа должна при-
нимать параметры start_timestamp и end_time-
stamp в формате «YYYYMMDD HH», опреде-
ляющие временной интервал логов, которые
будут обрабатываться. Например, start_time-
stamp = «20150301 00:00» и end_timestamp =
«20150401 23:59».
Коллекция системных логов Syslog генери-
ровалась самостоятельно. Для создания логов
УСиМ, 2016, № 5 89
использовалась программа Kiwi Syslog Gene-
rator. Также, чтобы собирать созданные логи в
HDFS-директорию, использовался Apache Flume
[10]. Запускался Flume-агент по хосту CDH3
на TCP-порту 27001, который получал систем-
ные сообщения в режиме real-time. Входные и
выходные файлы хранились в директории /
home / devclient / dev / flume на хосте CDH3.
Установленные настройки программы Kiwi
Syslog Generator показаны на рис. 2.
Размер коллекции Syslog составил
1689173800 байт.
Выходные данные имели формат <Дата>
<Время> <IP адрес> <Уровень лога> <Количе-
ство сообщений>. Пример выходных данных:
20150303 10 192.168.1.1 1 54.
Исследовались программные реализации
решения поставленной задачи на Java (MR),
Hive, Spark (v. 2.10).
Рис. 2. Настройка программы Kiwi Syslog Generator
Рассмотрим реализацию данной MR-програм-
мы на Hive. В базе данных training создадим
таблицу syslog, поддерживающую динамическое
разделение (partitioning) по дате, и использую-
щую org.apache.hadoop.hive. serde2.RegexSerDe
для считывания системных логов. Сгенерирован-
ные системные логи содержатся в / input_data /
flume / syslog. Следующий код выполняет опи-
санное выше:
USE training;
CREATE EXTERNAL TABLE IF NOT EXISTS
training.syslog(
priority STRING,
month STRING,
day STRING,
time STRING,
host STRING,
process STRING,
tag STRING,
message STRING)
PARTITIONED BY (dt STRING)
ROW FORMAT SERDE 'org.apache.hadoop.
hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
«input.regex» = «<(\\d+)>(\\w{3}) (\\d+)
(\\d+:\\d+:\\d+) (\\S+) (\\S+) Original Ad-
dress=(\\d+\\.\\d+\\.\\d+\\.\\d+) (.*)» )
LOCATION '/input_data/flume/syslog';
Напишем сначала простой запрос, который
считает количество системных логов по разделу:
USE training;
SELECT dt, COUNT(*)
FROM syslog
WHERE syslog.dt >= '2015-03-15' AND syslog.dt
<= '2015-03-16'
GROUP BY dt;
На выходе получим данные в формате <да-
та> <количество сообщений>. Очевидно сход-
ство с SQL-запросами.
Код для реализации поставленного условия
задачи (файл hive_task_2_3_1.hql):
USE training;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
FROM syslog log
INSERT OVERWRITE TABLE syslog_count
PARTITION (date, hour)
SELECT COUNT(*),
log.tag,
((CAST(log.priority AS INT))-8),
log.dt,
substr(log.time, 1,2)
WHERE
unix_timestamp(concat(log.dt, ' ', log.time),
'yyyy-MM-dd HH:mm:ss') >= unix_timestamp
90 УСиМ, 2016, № 5
(concat('${hiveconf:start_timestamp}', ':00'),
'yyyyMMdd HH:mm:ss')
AND
unix_timestamp(concat(log.dt, ' ', log.time),
'yyyy-MM-dd HH:mm:ss') <=
unix_timestamp(concat('${hiveconf:end_timestam
p}', ':00'), 'yyyyMMdd HH:mm:ss')
GROUP BY log.tag, ((CAST(log.priority AS
INT))-8), log.dt, substr(log.time, 1,2);
Результат записывается в таблицу syslog
count, созданную следующим образом:
USE training;
CREATE TABLE IF NOT EXISTS syslog_count (
message_count INT,
ip_address STRING,
log_level INT)
PARTITIONED BY (date STRING, hour
STRING);
Наконец, для запуска скрипта с файла
hive_2_3_1.hql создадим shell файл hive_task_
2_3_2.sh:
#!/bin/bash
hive --hiveconf start_timestamp=«$1» --hiveconf
end_timestamp=«$2» -f hive_task_2_3_1.hql
Запуск программы выглядит так:
$./hive_task_2_3_2.sh'2015030300:00'20150426
23:59'
В ходе эксперимента все три программы
выполняли одну и ту же задачу в равных усло-
виях. Каждая программа запускалась незави-
симо. Размер выходной коллекции составил
4203326 б.
Каждую программу запускали дважды. От-
метим, что во всех случаях программа успеш-
но завершала свою работу и давала правиль-
ные результаты. На рис. 3 приведено лучшее
время выполнения каждой программы. В ре-
зультате эксперимента быстрее выполнила ра-
боту программа на Spark (за 482 с), а програм-
ма, написанная на Hive, выполнилась на 11 с
медленнее, чем программа, написанная на MR
с одним редюсером, которая завершилась че-
рез 606 с.
Однако в ходе экспериментов программа на
Spark демонстрировала нестабильное время
выполнения работы. На рис. 4 показана гисто-
грамма, которая демонстрирует время выпол-
нения программы на Spark в двух случаях, ко-
торые назовем запуск 1 и запуск 2. В первом
случае программа выполнялась почти в 1,5
раза дольше, чем во втором. При первом за-
пуске менеджер ресурсов много раз прекращал
работу из-за недостатка оперативной памяти.
Сначала прекращал работу менеджер ресурсов
на CDH1; тогда менеджером становился CDH2,
поскольку он настроен как active-standby; даль-
ше CDH2 тоже аварийно завершал свою рабо-
ту. Таким образом, менеджер ресурсов переклю-
чался между CDH1 и CHD2 несколько раз. Во
втором случае был перезагружен компьютер
хост-кластера и максимально выключены лиш-
ние процессы, чтобы освободить больше опера-
тивной памяти. На этот раз менеджер ресурсов
работал стабильнее. Отметим, что программа
на Spark требует значительно большего коли-
чества оперативной памяти в сравнении с MR.
Рис. 3. Лучшее время выполнения каждой программы
Рис. 4. Гистограмма времени выполнения программы на Spark
УСиМ, 2016, № 5 91
Исследовано также влияние количества ре-
дьюсеров на время выполнения MR-програм-
мы. На рис. 5 изображена гистограмма време-
ни выполнения программы на MR с использо-
ванием одного редюсера и пяти редюсеров во
время второго запуска. На примере этой задачи
можно увидеть, что программа MR, написан-
ная на Java, в которой разработчик поставил
пять редюсеров, работала дольше на 186 с, чем
программа с одним редюсерем, и на 175 с доль-
ше программа на Hive.
Рис. 5. Гистограмма времени выполнения программы на MR
Руководствуясь результатами эксперимен-
тов, можно сделать следующие выводы. Про-
грамма на Spark работает быстрее программ,
использующих чистый фреймворк MR или
Hive. При больших входных коллекциях Spark
может быть даже в несколько раз быстрее, чем
его конкуренты. Spark максимально использу-
ет оперативную память, благодаря чему дости-
гается лучшая скорость. С другой стороны, ес-
ли кластер имеет мало ресурсов, то могут вы-
ходить из строя некоторые сервисы, восста-
новления которых необходимо будет ждать
для продолжения программы. MR имеет высо-
кую отказоустойчивость. MR-программы, на-
писанные на Java, быстрее работают, чем про-
граммы на Hive. Написание программ на Hive
не требует глубоких знаний программирова-
ния, и выглядит лаконичнее. Однако Hive сто-
ит использовать для написания запросов над
структурированными данными (аналогично ре-
ляционным базам данных). В Spark много уже
реализованных функций. При написании MR на
Java придется писать гораздо больше кода. Ко-
личество редьюсеров влияет на скорость выпол-
нения MR-программы. По умолчанию ис-
пользуется один редьюсер. Общих рекоменда-
ций нет, разработчик часто подбором определяет
их количество.
Использование кластера в облаке. Развер-
нем кластер HDInsight в облаке Microsoft Azure
со следующими характеристиками: Data Node –
4 по 7 Гб оперативной памяти и четыре ядра;
Head Node (предоставляются по умолчанию) – 2
по 7 Гб оперативной памяти и четыре ядра.
Одна из программ, запущенная на этом
кластере, была уже упомянута – программа
WordCount, написанная на Java. Скорость вы-
полнения этой программы для разного размера
входных данных показана на рис. 6. Если срав-
нить скорость выполнения программы Word-
Count на этом кластере и кластере с одним уз-
лом, который упоминался ранее, то увидим, что
за примерно аналогичное время (385 с) данный
HDInsight-кластер обработал коллекцию разме-
ром 3891 Мб, а кластер с одним узлом – лишь
203 Мб.
Рис. 6. Скорость выполнения программы Word Count
Эксперименты подтвердили и известное по-
ложение, что Hadoop следует использовать для
обработки очень больших данных.
Заключение. Исследовано влияние выбора
языка и использование дополнительных фрейм-
ворков на скорость выполнения программ в эко-
системе Apache Hadoop.
Эксперементально установленно, что лучшие
результаты показал Apache Spark, что MR-про-
граммы в Apache Hadoop лучше писать на Java
или другом JVM-совместимом языке, чем на
Python. Преимущество в скорости может быть в
несколько раз. При проведении экспериментов
92 УСиМ, 2016, № 5
хотелось бы оперировать большими обьемами
данных, но ограничения были связаны с высо-
кими затратами на аренду облака Microsoft
Azure. Но, несмотря на это, скорость обработки
данных будет больше при больших входных
коллекциях, т.е. Hadoop не целесообразно ис-
пользовать для работы с небольшими обьема-
ми данных.
1. Dean J., Ghemawat S. MR: Simplified Data Proces-
sing on Large Clusters. Retrieved 2004. – http://
static.googleusercontent.com/media/research.google.
com/ru//archive/MR-osdi04.pdf
2. Кузнецов С. MR: внутри, снаружи или сбоку от па-
раллельных СУБД, 2010. – http://citforum.ru/data-
base/articles/ dw_appliance_and_mr/2.shtml#2.1
3. Lin J., Dyer C. Data-Intensive Text Processing, 2010.
MR: University of Maryland, College Park. – https://
lintool.github.io/MRAlgorithms/MR-book-final.pdf
4. White T. Hadoop: The Definitive Guide. O’Reilly, 2012.
– http://cdn.oreillystatic.com/oreilly/booksamplers/
9781449311520_sampler.pdf
5. Miner D., Shook A. MR: Design Patterns. O’Reilly,
2012. – http://www.nataraz.in/data/ebook/ hadoop/MR_
design_patterns.pdf
6. Apache Spark. – http://uk.wikipedia.org/wiki/Apache_
Spark
7. Xin R. World record set for 100 TB sort by open source
and public cloud team, 2015. – http://opensource.com/
business/15/1/apache-spark-new-world-record
8. Hadoop, Ч. 1: развертывание кластера. – https://
habrahabr.ru/company/selectel/ blog/198534/
9. Установка кластера Hadoop (CDH) на Debian, Ч. 1 –
https://bigdata-intips.blogspot.com/2015/10/hadoop-cdh-
debian-1.html
10. Apache Flume. – //flume.apache.org/
Поступила 25.08.2016
Тел. для справок: +38 044 425-0245 (Киев)
E-mail: andriy@glybovets.com.ua,
yaroslav.dmytruk@gmail.com
© А.Н. Глибовец, Я.О. Дмитрук, 2016
UDC 681.3:658.56
Glybovets А.N., Dmytruk Ya.O.
The Effectiveness of Programming Languages in the Apache Hadoop MapReduce Framework
Keywords: BigData, MapReduce, Apache Hadoop, Spark, Java, Pyton, Scala.
The effectiveness of the different languages for Apache Hadoop framework to process large data collections based on the
MapReduce model is discussed.
Apache Hadoop is used in many industrial projects all over world such as Facebook and Yahoo!. It provides the ability to
process different tasks effectively and reliably on the cluster to handle the huge amounts of data. MR model allows the devel-
opers to ignore the complex architectures by cluster management, and immediately to develop a program.
This work investigates the influence of the programming language on the speed of the program in the Apache Hadoop
framework.
The subject of comparison is the execution of programs in Java, Scala and Python that implements the solution of the
simple problem: how long each word in the input collection of text documents is searched. All three programs, in spite of the
language, is written in the same style, so that the comparison results are objective.
For the experiments, we have chosen the image of ClouderaQuickstart VM virtual machine. The easy use of this virtual machine
is that it is already established Hadoop, HDFS, and other services. Also, a cluster of three nodes is created for the study. CDH is
elected as the distribution of Apache Hadoop and related projects. The desired configuration on each node is set.
Each program is ran for the different size input: 8Mb, 34Mb, 61Mb, 106Mb and 203Mb.
During the experiments, the best results is showed by the program that is written in the Apache Spark. In addition, it is
found that the MR program in the Apache Hadoop is better to write in Java or any other JVM languages than Python. An ad-
vantage in speed is obvious. Also, experiments shows that the processing speed is larger at higher input collections. So, it is
not necessary to use Hadoop to work with small data.
<<
/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
|
| id | nasplib_isofts_kiev_ua-123456789-113403 |
| institution | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| issn | 0130-5395 |
| language | Russian |
| last_indexed | 2025-12-07T15:33:56Z |
| publishDate | 2016 |
| publisher | Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України |
| record_format | dspace |
| spelling | Глибовец, А.Н. Дмитрук, Я.О. 2017-02-07T20:48:53Z 2017-02-07T20:48:53Z 2016 Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce / А.Н. Глибовец, Я.О. Дмитрук // Управляющие системы и машины. — 2016. — № 5. — С. 84-92. — Бібліогр.: 10 назв. — рос. 0130-5395 https://nasplib.isofts.kiev.ua/handle/123456789/113403 681.3:658.56 Исследована эффективность использования различных языков для фреймворка Apache Hadoop с целью обработки больших коллекций данных на базе модели MapReduce. Акцент сделан на анализе скорости выполнения программ в Hadoop-кластере. Проведено сравнение различных проектов по экосистеме Hadoop для распределенных вычислений. Описанные эксперименты подтвердили преимущество использования Apache Spark. Установлено, что преимущество в скорости MapReduce-программ, написанных на Java- или другом JVM-языке, существенны. Досліджено ефективність використання різних мов програмування у фреймворку Apache Hadoop для обробки великих колекцій даних з використанням моделі MapReduce. Акцент зроблено на аналізі швидкості виконання програм у Hadoopкластері. Проведено порівняння різних проектів із екосистеми Hadoop для розподілених обчислень. Описано експерименти, які підтвердили переваги використання Apache Spark. Встановлено, що перевага у швидкості MapReduce-програм, написаних на Java- або іншій JVM-мові над іншими, є суттєвою. The effectiveness of the different languages for Apache Hadoop framework to process large data collections based on the MapReduce model is discussed. Apache Hadoop is used in many industrial projects all over world such as Facebook and Yahoo!. It provides the ability to process different tasks effectively and reliably on the cluster to handle the huge amounts of data. MR model allows the developers to ignore the complex architectures by cluster management, and immediately to develop a program. This work investigates the influence of the programming language on the speed of the program in the Apache Hadoop framework. The subject of comparison is the execution of programs in Java, Scala and Python that implements the solution of the simple problem: how long each word in the input collection of text documents is searched. All three programs, in spite of the language, is written in the same style, so that the comparison results are objective. For the experiments, we have chosen the image of ClouderaQuickstart VM virtual machine. The easy use of this virtual machine is that it is already established Hadoop, HDFS, and other services. Also, a cluster of three nodes is created for the study. CDH is elected as the distribution of Apache Hadoop and related projects. The desired configuration on each node is set. Each program is ran for the different size input: 8Mb, 34Mb, 61Mb, 106Mb and 203Mb. During the experiments, the best results is showed by the program that is written in the Apache Spark. In addition, it is found that the MR program in the Apache Hadoop is better to write in Java or any other JVM languages than Python. An advantage in speed is obvious. Also, experiments shows that the processing speed is larger at higher input collections. So, it is not necessary to use Hadoop to work with small data. ru Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України Управляющие системы и машины Программная инженерия и программные средства Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce Ефективність застосування мов програмування в фреймворку Apache Hadoop з використанням MapReduce The Effectiveness of Programming Languages in the Apache Hadoop MapReduce Framework Article published earlier |
| spellingShingle | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce Глибовец, А.Н. Дмитрук, Я.О. Программная инженерия и программные средства |
| title | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce |
| title_alt | Ефективність застосування мов програмування в фреймворку Apache Hadoop з використанням MapReduce The Effectiveness of Programming Languages in the Apache Hadoop MapReduce Framework |
| title_full | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce |
| title_fullStr | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce |
| title_full_unstemmed | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce |
| title_short | Эффективность применения языков программирования в фреймворке Apache Hadoop с использованием MapReduce |
| title_sort | эффективность применения языков программирования в фреймворке apache hadoop с использованием mapreduce |
| topic | Программная инженерия и программные средства |
| topic_facet | Программная инженерия и программные средства |
| url | https://nasplib.isofts.kiev.ua/handle/123456789/113403 |
| work_keys_str_mv | AT glibovecan éffektivnostʹprimeneniââzykovprogrammirovaniâvfreimvorkeapachehadoopsispolʹzovaniemmapreduce AT dmitrukâo éffektivnostʹprimeneniââzykovprogrammirovaniâvfreimvorkeapachehadoopsispolʹzovaniemmapreduce AT glibovecan efektivnístʹzastosuvannâmovprogramuvannâvfreimvorkuapachehadoopzvikoristannâmmapreduce AT dmitrukâo efektivnístʹzastosuvannâmovprogramuvannâvfreimvorkuapachehadoopzvikoristannâmmapreduce AT glibovecan theeffectivenessofprogramminglanguagesintheapachehadoopmapreduceframework AT dmitrukâo theeffectivenessofprogramminglanguagesintheapachehadoopmapreduceframework |