Вы находитесь на странице: 1из 17

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ПЕТРА ВЕЛИКОГО»
ИНСТИТУТ КОМПЬЮТЕРНЫХ НАУК И ТЕХНОЛОГИЙ
КАФЕДРА «КОМПЬЮТЕРНЫЕ ИНТЕЛЛЕКТУАЛЬНЫЕ ТЕХНОЛОГИИ»

Отчет о прохождении
стационарной производственной практики (научно-
исследовательской работы) на тему:
«ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРОТОТИПА СИСТЕМЫ
ОБРАБОТКИ БОЛЬШИХ ОБЪЕМОВ ДАННЫХ НА КЛАСТЕРЕ ПОД
УПРАВЛЕНИЕМ APACHE HADOOP»)

Подгорного Даниила Антоновича, гр. в13546/77

Направление подготовки: 02.03.03 Математическое обеспечение и


администрирование информационных систем
Место прохождения практики: СПбПУ, ИКНТ, кафедра «КИТ»
(указывается наименование профильной организации или наименование структурного подразделения

ФГАОУ ВО «СПбПУ», фактический адрес)

Сроки практики: с 10.02.19 по 04.06.19

Руководитель практики от ФГАОУ ВО «СПбПУ»:


Щукин А.В., доцент кафедры КИТ, к.т.н.
(Ф.И.О., уч. степень, должность)

Оценка:

Руководитель практики
от ФГАОУ ВО «СПбПУ» Щукин А.В.

Обучающийся Подгорный Д.А.

Дата:
СОДЕРЖАНИЕ

ВВЕДЕНИЕ................................................................................................................3

ГЛАВА 1. ТЕРМИНОЛОГИЯ И ХАРАКТЕРИСТИКИ BIG DATA.....................4

1. Терминология...................................................................................................4

2. Характеристики...............................................................................................7

ГЛАВА 2. ИНСТРУМЕНТЫ BIG DATA................................................................9

1. Hadoop..............................................................................................................9

2. MapReduce......................................................................................................11

3. HDFS...............................................................................................................14

4. Остальные компоненты Hadoop...................................................................16

СПИСОК ЛИТЕРАТУРЫ И ССЫЛКИ..................................................................18

2
ВВЕДЕНИЕ

С появлением компьютеров в середине XX века жизнь человека начала


стремительно меняться – настолько, что человеческое общество обрело новое
имя (после “Аграрного” и “Индустриального”) – “Информационное”
[общество]. Основная характеристика этого общества отражается в самом его
названии – увеличение роли информации, знаний и информационных
технологий в его жизни.1 Именно из-за увеличения роли информации в
обществе и был создан необходимый для её потребления, обработки и
производства инструмент – компьютер. В первые несколько десятилетий
компьютеры вполне успешно справлялись с обработкой постоянно растущих
объемов данных, т.к. расла экспоненциально и их [компьютеров]
производительность2.
Однако со временем следующие факторы создали необходимость в
поиске нетривиальных алгоритмов для задач обработки информации:
1.а) Начало производства “домашних” компьютеров, доступных
обычному населению, сначала компанией Apple в 1977г. (Apple II), и далее
компанией IBM в 1981г. (IBM PC) и, как следствие, общий рост числа
компьютеров в мире;
1.б) Становление в 1991г. общедоступной сети “Интернет”, постепенное
объединение всех компьютеров в мире в одну общую сеть, появление веб-
приложений, генерирующих пользовательский трафик и, как следствие вместе
с п. 1.а., огромный всплеск объема ежедневно генерируемой в мире
информации;
2) Замедление темпов роста производительности компьютеров в 2010-х
гг. в связи с достижением технологиями производства полупроводников
ограничений, обусловленных фундаментальными законами физики3.

1 https://ru.wikipedia.org/wiki/Информационное_общество
2 https://ru.wikipedia.org/wiki/Закон_Мура
3 https://www.nature.com/news/the-chips-are-down-for-moore-s-law-1.19338
3
В 2013 г. компания IDC оценила общемировой объем данных в 4.4
Зеттабайта (4.4 * 1021 байт / 4.4 млрд ТБ), спрогнозировав 10-кратный рост к
2020г.4 Самые большие вклады за 2013г. вносили:
 Нью-Йоркская фондовая биржа (4-5 ТБ ежедневно)5;
 Facebook (~235 ТБ ежедневно)6;
 Большой Адронный Коллайдер (~85 ТБ ежедневно)7;
 The Internet Archive (18.5 ПБ)8.
Очевидно, что для обработки объемов, даже в тысячу раз меньших, чем
приведенные цифры, поднадобилось бы мощнейшее аппаратное обеспечение,
которое, во-первых, потребовало бы больших финансовых затрат, во-вторых,
не было бы ориентировано на отказоустойчивость (а различные отказы будут
случаться постоянно при таких больших объемах данных), и, в-третьих, при
необходимости увеличения аппаратных мощностей потребовало бы полной
замены оборудования (отсутствие горизонтальной масштабируемости).
Таким образом, целью данной работы является рассмотрение способов
решения описанных выше проблем с помощью комплекса программного
обеспечения Apache Hadoop (поскольку серьезных альтернатив данному
комплексу не существует), а также с помощью остальных компонентов
экосистемы Hadoop.

4 https://www.emc.com/leadership/digital-universe/2014iview/executive-summary.htm
5 https://www.forbes.com/sites/tomgroenfeldt/2013/02/14/at-nyse-the-data-deluge-overwhelms-traditional-databases
6 https://www.datacenterknowledge.com/archives/2013/01/18/facebook-builds-new-data-centers-for-cold-storage
7 http://wlcg.web.cern.ch/
8 https://archive.org/web/petabox.php
4
ГЛАВА 1. ТЕРМИНОЛОГИЯ И ХАРАКТЕРИСТИКИ BIG DATA

1. Терминология

Big Data (англ. “большие данные”) – это множество данных большого


объема и разных типов, таких как структурированные, неструктирированные и
частично структурированные данные. Эти данные могут быть произведены
различными источниками, например, соц. сетями (текст, аудио, фото, видео),
логами работы различных приложений, показаниями различных датчиков,
транзакционными приложениями, различными веб-сервисами и многими
другими. Обработка или анализ таких огромных объемов данных, а также
извлечение значащей информации из неё – это актуальная проблема сегодня,
потому что эти объемы превосходят вычислительные возможности
традиционных баз данных.
Иными словами, термин Big Data означает такие объемы данных,
которые не могут быть обработаны традиционными аппаратными и
программными средствами за разумный промежуток времени. Big Data
описывает любой массив информации различной степени
структурированности, который очень сложно обработать таким средством как,
например, РСУБД9. Примером объема такого массива может быть 1 Петабайт
(210 ТБ) данных, состоящих из миллиардов записей о миллионах людей из
различных источников, таких как, например, веб-сайты, социальные сети,
мобильные приложения и многих других10. Раньше объемы данных были
меньше и существовал твердо устоявшийся стек технологий для их обработки.
Однако в последние годы, в связи с постоянным ростом количества единиц
вычислительной техники и связью каждой из них с единой сетью Интернет,
произошло взрывное увеличение объема данных, генерируемого ежедневно.
Каждую минуту пишется ~ 510 000 “твитов” в Twitter11, отправляется ~ 170 000

9 https://ijarcce.com/upload/2013/september/71-o-V_I_K_R_A_M_-big_data_solution_for_rdbms_problems.pdf
10 http://ijarcsse.com/Before_August_2017/docs/papers/Volume_4/5_May2014/V4I5-0391.pdf
11 https://www.internetlivestats.com/one-second/#tweets-band
5
000 электронных писем12, осуществляется ~ 450 000 поисковых запросов в
Google13, и обрабатывается ~ 3 ТБ данных своих пользователей компанией
Facebook14. Некоторые области применения Big Data также лежат в таких
сферах как здравоохранение, управление городским трафиком, управление
транзакциями в банках, розничная торговля, образование, а также во многих
других.

Рис. 1 Рост различных типов данных со временем

2. Характеристики

12 https://www.internetlivestats.com/one-second/#email-band
13 https://www.internetlivestats.com/one-second/#google-band
14 https://research.fb.com/facebook-s-top-open-data-problems/
6
 Разнообразие данных.
Данные, обрабатываемые в рамках концепции Big Data, не относятся к
какой-то одной конкретной категории, так как включают в себя частично
структурированные данные из сети Интернет, электронной почты, веб-
приложений, документов и остальных всевозможных источников.

 Объем данных.
Уже сегодня производимые ежедневно объемы данных оцениваются в
ПБ (2^10 ТБ) и естественным образом стремятся к увеличению до ЗБ (2^10
ПБ). Даже те объемы данных, которые генерируют социальные сети,
измеряемые в ТБ ежедневно, практически невозможно полноценно
обрабатывать традиционными способами.

 Скорость притока данных.


Данная характеристика описывает то, насколько быстро все новые и
новые данные приходят в хранилище из разных источников для их
последующей обработки. Например, данные от различных датчиков будут
постоянно приходить с небольшим интервалом, а с учетом того, что таких
устройств может быть сотни или тысячи и что обработка свежих данных
может учитывать некую историчность с каждого из таких устройств, это будет
создавать постоянную огромную нагрузку на такую систему как, например,
РСУБД.

 Вариативность объема данных во времени.


Объем потока данных будет постоянно меняться во времени. Обработка
пиковых объемов может принести много трудностей, ведь, например, на
активность людей в социальных сетей существенно влияют происходящие в
мире события.

 Сложность организации данных.


7
Так как данные приходят из различных несвязанных источников,
потребуется прикладывать немало усилий для их предобработки, т.е.
связывания, сопоставления, фильтрации и трансформации. Также необходимо
в режиме реального времени строить их взаимоотношения и иерархию, иначе
входной поток может быстро выйти из под контроля.

ГЛАВА 2. ИНСТРУМЕНТЫ BIG DATA

1. Hadoop

Используя разработку Google, Даг Каттинг и его команда разработчиков


разработали проект с открытым исходным кодом под названием Hadoop. Он
отвечает за запуск различных приложением с использованием модели
MapReduce, позволяющей обрабатывать большие объемы данных
8
параллельно. Hadoop используется для разработки приложений, способных к
выполнению полного статистического анализа больших объемов данных.
Ныне это фреймворк компании Apache с открытым исходным кодом,
написанный на языке Java, позволяющий распределенно обрабатывать
большие объемы данных на кластере из множества вычислительных машин с
ипользованием простых моделей вычислений. Приложения Hadoop работают в
среде, предоставляющей распределенное хранилище и вычисления на
кластерах из множества сервером. Основным принципом при его разработке
была возможности масштабирования от одного сервевра до множества
серверов, каждый из которых предлагал бы локальное хранилище и
вычислительные возможности.
Построение больших серверов с мощными конфигурациями, которые
могли бы справляться с обработкой больших объемов данных, очень
финансово затратно. Однако, данную проблему можно решить, объединив
множество менее мощных машин в одну функционирующую распределенную
систему, которая на практике, во-первых, будет легко поддаваться увеличению
мощности, так как потребует только добавления новых машин в кластер, а не
замены всего сервера целиком, и, во-вторых, будет иметь возможность
параллельного доступа к данным, обеспечивая таким образом намного
большую пропускную способность.
Hadoop запускает исполняемый код непосредственно на тех машинах, на
которых располагаются необходимые данные. Это становится возможным за
счет следующей архитектуры, которую использует Hadoop:
 Данные разбиваются на файлы и директории;
 Все файлы разбиваются на блоки одного размера (в основном 128
или 64 МБ);
 Данные блоки распределяются среди нескольких серверов в
кластере;
 Правильное распределение вычислений осуществляется HDFS,
которая установливается поверх локальной файловой системы;

9
 Все блоки имеют резервные копии для возможности обработки
данных даже в случае отказов оборудования. Данная
характеристика называется фактором репликации и по умолчанию
равняется 3 (одна резервная копия находится на том же сервере, но
на другом жестком диске, и вторая резервная копия находится
полностью на другом сервере);
 Осуществляется проверка успешного выполнения заданий.

2. MapReduce

MapReduce – это модель параллельного программирования для


написания распределенных приложений, разработанная компанией Google для
обработки больших объемов данных (измеряемых в ТБ и выше) на больших
вычислительных кластерах (~1000 машин в кластере) и ориентированная на
надежность и отказоустойчивость. Технологию MapReduce используется, в
частности, в комплексе программного обеспечения Apache Hadoop, который
является свободным для использования15. Алгоритм MapReduce состоит из

15 Kyong-Ha Lee Hyunsik Choi “Parallel Data Processing with Map Reduce: A Survey” SIGMOD Record,
December 2011 (Vol. 40, No. 4)
10
двух основных этапов – Map и Reduce. Этап Map принимает на вход набор
данных и преобразует его в другой набор, в котором каждый элемент
разбивается на пары ключ-значение. Этап Reduce принимает на вход пары
ключ-значение из предыдущего этапа Map, группирует их и преобразует в
меньшие по объему наборы.
Основное преимущество MapReduce заключается в том, что эта модель
легко масштабируется на множество вычислительных машин. Все
необходимые вычисления разбиваются на два примитивных типа и
называются, соответственно, mapper и reducer. В данной модели разбиение
вычислительной задачи на данные типы является нетривиальным, и как только
такое разбиение осуществляется, становится достаточно просто распределить
любой объем данных между соответствующим количеством вычислительных
машин, так как будет требовать только обновления конфигурации кластера.

Рис. 2. Этапы MapReduce

Этапы MapReduce

11
Вычисления в модели MapReduce начинаются с указания
вычислительной машине места расположения данных. Когда исходные данные
найдены, начинается их обработка в два этапа:

 Map
Работа mapper’а заключается в преобразовании исходных данных к
нужному для reducer’а формату. Входные данные представляют собой файл
или директорию, хранящиеся в HDFS (Hadoop Distributed File System).
Исходный файл обрабатывает функцией Map построчно и преобразуется к
множеству пар ключ-значение.

 Reduce
Данный этап включает в себя два подэтапа: Shuffle (т.е. группировка
однотипных пар ключ-значение) и Reduce, который складывает данные группы
вместе. На выходе данного этапа создается новый файл, который записывается
в HDFS.
В течении работы MapReduce Hadoop создает задачи Map и Reduce16 и
направляет их на разные сервера кластера. Hadoop также выполняет все
необходимые задачи по контролю выполнения заданий и резервному
копированию данных между серверами. Все вычисления происходят на самих
серверах, хранящих данные локально, что существенно снижает трафиковую
нагрузку между ними. После выполнения задания кластер собирает всю
обработанную информацию с серверов и отправляет обратно в Hadoop.

16 Mukherjee, A.; Datta, J.; Jorapur, R.; Singhvi, R.; Haloi, S.; Akram, “Shared disk big data analytics with Apache
Hadoop”, 2012, 18-22
12
3. HDFS

HDFS основана на технологиях Google File System (GFS) и


предоставляет распределенный доступ к файловой системе, объединяющей
множество серверов. Основное отличие от остальных распределнных
файловых систем заключается в высокой отказоустойчивости и ориентацией
на использование в том числе на недорогих аппаратных платформах. Она
предоставляет быстрый параллельный доступ к данным и подходит для
приложений, обрабатывающих большие объемы данных. У всех файлов в
системе есть несколько резервных копий для обеспечения отказоустойчивости
и сведения к минимуму вероятностей потерь данных. Для работы с HDFS
Hadoop предоставляет доступ через командную строку. Для возможности
быстрой проверки состояния кластера один из серверов выделяется в так
называемый Name Node, а все остальные сервера носят название Data Node.

13
Рис. 3. Архитектура HDFS

Архитектура HDFS построена по принципу “главный-подчиненный” и


включает в себя следующие элементы:

 Name Node
Это одна из машин в кластере под управлением ОС GNU/Linux и
дополнительного программного обеспечения фреймворка Hadoop. Name Node
является главным сервером в кластере и отвечает за такие задачи как
управление пространством имен файловой системы и обеспечение доступа
пользователей к файлам.

 Data Node
Под данное определение попадают все остальные сервера в кластере.
Они так же работают под управлнием GNU/Linux, а также дополнительного
программного обеспечения Hadoop уже для Data Node. Данные машины
отвечают за хранение и обработку данных на своих локальных хранилищах. У
14
любого Data Node должен быть Name Node. Data Node осуществляют
операции записи и чтения на своих локальных файловых системах по запросу
пользователя. Они также выполняют операции по созданию , удалению, а
также репликации блоков в соответствии с инструкциями от Name Node.

 Block
Как уже было сказано выше, данные в HDFS хранятся в виде файлов,
разбитых на блоки одинаковых размеров. Таким образом, минимальный объем
данных, который HDFS может прочесть или записать, равняется размеру
такого блока.

4. Остальные компоненты Hadoop

 Apache Pig
Данный компонент – это программное обеспечение для анализа больших
наборов данных, который предоставляет пользователям доступ для работы
посредством SQL-подобного синтаксис, абстрагируя таким образом их от
явного составления задач Map и Reduce.
 HBase
Данный компонент – нереляционная колоночно-ориентированная база
данных, основанная на технологии Google BigTable.
 Hive
Hive – это приложение для организованного хранения данных, которое
также предоставляет пользователям доступ к созданию запросов к данным
посредством SQL-подобного синтаксиса. Данный компонент изначально был
разработан компанией Facebook для упрощения составления рутинных
запросов к данным.
 Cascading
15
Данный компонент позволяет пользователям конвертировать
необходимые задания для обработки данных в задачи MapReduce и запускать
их, используя любой язык программирования, работающий на JVM.
 Oozie
Данный компонент используется для создания расписаний запусков
заданий остальными компонентами Hadoop.

Рис. 4. Основные компоненты Hadoop


Таким образом, в данной работе был проведен анализ проблем,
возникающих при обработке больших объемов данных, а также рассмотрены
основные компоненты экосистемы Hadoop, решающие эти проблемы. В
дальнейшем планируется углубленное изучение проблем в данном
направлении уже в рамках дипломной работы.

16
СПИСОК ЛИТЕРАТУРЫ И ССЫЛКИ

1. https://ru.wikipedia.org/wiki/Информационное_общество

2. https://ru.wikipedia.org/wiki/Закон_Мура

3. https://www.nature.com/news/the-chips-are-down-for-moore-s-law-1.19338

4. https://www.emc.com/leadership/digital-universe/2014iview/executive-
summary.htm

5. https://www.forbes.com/sites/tomgroenfeldt/2013/02/14/at-nyse-the-data-
deluge-overwhelms-traditional-databases

6. https://www.datacenterknowledge.com/archives/2013/01/18/facebook-builds-
new-data-centers-for-cold-storage

7. http://wlcg.web.cern.ch/

8. https://archive.org/web/petabox.php

9. https://ijarcce.com/upload/2013/september/71-o-V_I_K_R_A_M_-
big_data_solution_for_rdbms_problems.pdf

10. http://ijarcsse.com/Before_August_2017/docs/papers/Volume_4/5_May2014/V
4I5-0391.pdf

11. https://www.internetlivestats.com/one-second/#tweets-band

12. https://www.internetlivestats.com/one-second/#email-band

13. https://www.internetlivestats.com/one-second/#google-band

14. https://research.fb.com/facebook-s-top-open-data-problems/

15. Kyong-Ha Lee Hyunsik Choi “Parallel Data Processing with Map Reduce: A
Survey” SIGMOD Record, December 2011 (Vol. 40, No. 4)

16. Mukherjee, A.; Datta, J.; Jorapur, R.; Singhvi, R.; Haloi, S.; Akram, “Shared
disk big data analytics with Apache Hadoop”, 2012, 18-22

17