Hadoop

Материал из Википедии — свободной энциклопедии
Apache Hadoop
Логотип программы Apache Hadoop
Тип фреймворк
Авторы Дуг Каттинг[вд] и Майк Кафарела[вд]
Разработчик Apache Software Foundation
Написана на Java
Операционные системы кроссплатформенность и POSIX
Первый выпуск 1 апреля 2006[1]
Аппаратная платформа Java Virtual Machine
Последняя версия
Репозиторий git-wip-us.apache.org/re…
gitbox.apache.org/repos/…
github.com/apache/hadoop
Лицензия
Apache License 2.0 и GNU GPL
Сайт hadoop.apache.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Hadoop — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. Используется для реализации поисковых и контекстных механизмов многих высоконагруженных веб-сайтов, в том числе, для Yahoo! и Facebook[3]. Разработан на Java в рамках вычислительной парадигмы MapReduce, согласно которой приложение разделяется на большое количество одинаковых элементарных заданий, выполнимых на узлах кластера и естественным образом сводимых в конечный результат.

По состоянию на 2014 год проект состоит из четырёх модулей — Hadoop Common

распределённая файловая система), YARN[⇨] (система для планирования заданий и управления кластером) и Hadoop MapReduce[⇨]
(платформа программирования и выполнения распределённых MapReduce-вычислений), ранее в Hadoop входил целый ряд других проектов, ставших самостоятельными в рамках системы проектов Apache Software Foundation.

Считается одной из основополагающих технологий «больших данных». Вокруг Hadoop образовалась целая экосистема[⇨] из связанных проектов и технологий, многие из которых развивались изначально в рамках проекта, а впоследствии стали самостоятельными. Со второй половины 2000-х годов идёт процесс активной коммерциализации технологии[⇨], несколько компаний строят бизнес целиком на создании коммерческих дистрибутивов Hadoop и услуг по технической поддержке экосистемы, а практически все крупные поставщики информационных технологий для организаций в том или ином виде включают Hadoop в продуктовые стратегии и линейки решений.

История

Разработка была инициирована в начале 2005 года Дугом Каттингом (англ. Doug Cutting) с целью построения программной инфраструктуры распределённых вычислений для проекта Nutch — свободной программной поисковой машины на Java, её идейной основой стала публикация сотрудников Google Джеффри Дина и Санжая Гемавата[4] о вычислительной концепции MapReduce[5]. Новый проект был назван в честь игрушечного слонёнка ребёнка основателя проекта [6].

В течение 2005—2006 годов Hadoop развивался усилиями двух разработчиков — Каттинга и Майка Кафареллы (Mike Cafarella) в режиме частичной занятости

Yahoo пригласила Каттинга возглавить специально выделенную команду разработки инфраструктуры распределённых вычислений, к этому же моменту относится выделение Hadoop в отдельный проект. В феврале 2008 года Yahoo запустила кластерную поисковую машину на 10 тыс. процессорных ядер
, управляемую средствами Hadoop.

В январе 2008 года Hadoop становится проектом верхнего уровня системы проектов Apache Software Foundation. В апреле 2008 года Hadoop побил мировой рекорд производительности в стандартизованном бенчмарке сортировки данных — 1 Тбайт был обработан за 209 сек. на кластере из 910 узлов[7]. С этого момента начинается широкое применение Hadoop за пределами Yahoo — технологию для своих сайтов внедряют Last.fm, Facebook, The New York Times[8], проводится адаптация для запуска Hadoop в облаках Amazon EC2.

В

патентном бюро США, тем самым избавив организацию от возможных патентных претензий[9]
.

Начиная с 2010 года Hadoop неоднократно характеризуется как ключевая технология «

Zookeeper — последовательно стали проектами верхнего уровня фонда Apache, что послужило началом формирования экосистемы вокруг Hadoop[⇨]. В марте 2011 года Hadoop удостоен ежегодной инновационной награды медиагруппы Guardian, на церемонии вручения технология была названа «швейцарским армейским ножом XXI века»[12]
.

Реализация в вышедшем осенью 2013 года Hadoop 2.0 модуля YARN оценена как значительный скачок, выводящий Hadoop за рамки парадигмы MapReduce и ставящая технологию на уровень универсального решения для организации распределённой обработки данных[13].

Hadoop Common

В Hadoop Common входят библиотеки управления

корзину, а setrep модифицирует коэффициент репликации
для заданного ресурса).

HDFS

HDFS (Hadoop Distributed File System) — файловая система, предназначенная для хранения файлов больших размеров, поблочно распределённых между узлами вычислительного кластера. Все блоки в HDFS (кроме последнего блока файла) имеют одинаковый размер, и каждый блок может быть размещён на нескольких узлах, размер блока и коэффициент репликации (количество узлов, на которых должен быть размещён каждый блок) определяются в настройках на уровне файла. Благодаря репликации обеспечивается устойчивость распределённой системы к отказам отдельных узлов. Файлы в HDFS могут быть записаны лишь однажды (модификация не поддерживается), а запись в файл в одно время может вести только один процесс. Организация файлов в пространстве имён — традиционная иерархическая: есть корневой каталог, поддерживается вложение каталогов, в одном каталоге могут располагаться и файлы, и другие каталоги.

Развёртывание экземпляра HDFS предусматривает наличие центрального узла имён (англ. name node), хранящего метаданные файловой системы и метаинформацию о распределении блоков, и серии узлов данных (англ. data node), непосредственно хранящих блоки файлов. Узел имён отвечает за обработку операций уровня файлов и каталогов — открытие и закрытие файлов, манипуляция с каталогами, узлы данных непосредственно отрабатывают операции по записи и чтению данных. Узел имён и узлы данных снабжаются веб-серверами, отображающими текущий статус узлов и позволяющими просматривать содержимое файловой системы. Административные функции доступны из интерфейса командной строки.

HDFS является неотъемлемой частью проекта, однако, Hadoop поддерживает работу и с другими распределёнными файловыми системами без использования HDFS, поддержка Amazon S3 и CloudStore реализована в основном дистрибутиве. С другой стороны, HDFS может использоваться не только для запуска MapReduce-заданий, но и как распределённая файловая система общего назначения, в частности, поверх неё реализована распределённая NoSQL-СУБД HBase, в её среде работает масштабируемая система машинного обучения Apache Mahout.

YARN

YARN (англ. Yet Another Resource Negotiator — «ещё один ресурсный посредник») — модуль, появившийся с версией 2.0 (2013), отвечающий за управление ресурсами кластеров и планирование заданий. Если в предыдущих выпусках эта функция была интегрирована в модуль MapReduce, где была реализована единым компонентом (JobTracker), то в YARN функционирует логически самостоятельный демон — планировщик ресурсов (ResourceManager), абстрагирующий все вычислительные ресурсы кластера и управляющий их предоставлением приложениям распределённой обработки. Работать под управлением YARN могут как MapReduce-программы, так и любые другие распределённые приложения, поддерживающие соответствующие программные интерфейсы; YARN обеспечивает возможность параллельного выполнения нескольких различных задач в рамках кластера и их изоляцию (по принципам мультиарендности). Разработчику распределённого приложения необходимо реализовать специальный класс управления приложением (ApplicationMaster), который отвечает за координацию заданий в рамках тех ресурсов, которые предоставит планировщик ресурсов; планировщик ресурсов же отвечает за создание экземпляров класса управления приложением и взаимодействия с ним через соответствующий сетевой протокол.

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

Hadoop MapReduce

Hadoop MapReduce —

ключ — значение» в промежуточный набор пар «ключ — значение» (класс, реализующий интерфейс Mapper, назван по функции высшего порядка Map), и обработчик, сводящий промежуточный набор пар в окончательный, сокращённый набор (свёртку, класс, реализующий интерфейс Reducer). Каркас передаёт на вход свёртки отсортированные выводы от базовых обработчиков, сведе́ние состоит из трёх фаз — shuffle (тасовка, выделение нужной секции вывода), sort (сортировка, группировка по ключам выводов от распределителей — досортировка, требующаяся в случае, когда разные атомарные обработчики возвращают наборы с одинаковыми ключами, при этом, правила сортировки на этой фазе могут быть заданы программно и использовать какие-либо особенности внутренней структуры ключей) и собственно reduce (свёртка списка
) — получения результирующего набора. Для некоторых видов обработки свёртка не требуется, и каркас возвращает в этом случае набор отсортированных пар, полученных базовыми обработчиками.

Hadoop MapReduce позволяет создавать задания как с базовыми обработчиками, так и со свёртками, написанными без использования Java: утилиты Hadoop streaming позволяют использовать в качестве базовых обработчиков и свёрток любой

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

В первых версиях Hadoop MapReduce включал планировщик заданий (JobTracker), начиная с версии 2.0 эта функция перенесена в YARN[⇨], и начиная с этой версии модуль Hadoop MapReduce реализован поверх YARN. Программные интерфейсы по большей части сохранены, однако полной обратной совместимости нет (то есть для запуска программ, написанных для предыдущих версий API, для работы в YARN в общем случае требуется их модификация или рефакторинг, и лишь при некоторых ограничениях возможны варианты обратной двоичной совместимости[15]).

Масштабируемость

Одной из основных целей Hadoop изначально было обеспечение

Ebay (700 узлов на 16 Пбайт)[16]. Тем не менее, считается, что горизонтальная масштабируемость в Hadoop-системах ограничена, для Hadoop до версии 2.0 максимально возможно оценивалась в 4 тыс. узлов при использовании 10 MapReduce-заданий на узел[17]
. Во многом этому ограничению способствовала концентрация в модуле MapReduce функций по контролю за жизненным циклом заданий, считается, что с выносом её в модуль YARN в Hadoop 2.0 и децентрализацией — распределением части функций по мониторингу на узлы обработки — горизонтальная масштабируемость повысилась.

Ещё одним ограничением Hadoop-систем является размер оперативной памяти на узле имён (NameNode), хранящем всё пространство имён кластера для распределения обработки, притом общее количество файлов, которое способен обрабатывать узел имён — 100 млн[18]. Для преодоления этого ограничения ведутся работы по распределению узла имён, единого в текущей архитектуре на весь кластер, на несколько независимых узлов. Другим вариантом преодоления этого ограничения является использование распределённых СУБД поверх HDFS, таких как HBase, роль файлов и каталогов в которых с точки зрения приложения играют записи в одной большой таблице базы данных.

По состоянию на 2011 год типичный кластер строился из однопроцессорных многоядерных

дисковыми устройствами хранения, связанных сетью с пропускной способностью 1 Гбит/с. Существуют тенденции как к снижению вычислительной мощности узлов и использованию процессоров с низким энергопотреблением (ARM, Intel Atom)[19], так и применения высокопроизводительных вычислительных узлов одновременно с сетевыми решениями с высокой пропускной способностью (InfiniBand в Oracle Big Data Appliance[англ.], высокопроизводительная сеть хранения данных на Fibre Channel и Ethernet пропускной способностью 10 Гбит/с в шаблонных конфигурациях FlexPod
для «больших данных»).

Масштабируемость Hadoop-систем в значительной степени зависит от характеристик обрабатываемых данных, прежде всего, их внутренней структуры и особенностей по извлечению из них необходимой информации, и сложности задачи по обработке, которые, в свою очередь, диктуют организацию циклов обработки, вычислительную интенсивность атомарных операций, и, в конечном счёте, уровень параллелизма и загруженность кластера. В руководстве Hadoop (первых версий, ранее 2.0) указывалось, что приемлемым уровнем параллелизма является использование 10—100 экземпляров базовых обработчиков на узел кластера, а для задач, не требующих значительных затрат процессорного времени — до 300; для свёрток считалось оптимальным использование их по количеству узлов, умноженному на коэффициент из диапазона от 0,95 до 1,75 и константу mapred.tasktracker.reduce.tasks.maximum. С бо́льшим значением коэффициента наиболее быстрые узлы, закончив первый раунд сведения, раньше получат вторую порцию промежуточных пар для обработки, таким образом, увеличение коэффициента избыточно загружает кластер, но при этом обеспечивает более эффективную балансировку нагрузки. В YARN вместо этого используются конфигурационные константы, определяющие значения доступной оперативной памяти и виртуальных процессорных ядер, доступных для планировщика ресурсов[20], на основании которых и определяется уровень параллелизма.

Экосистема

Коммерциализация

На фоне популяризации Hadoop в 2008 году и сообщениях о построении Hadoop-кластеров в Yahoo и Facebook, в октябре 2008 года была создана компания

Amazon запустил облачный
сервис Elastic MapReduce, предоставляющий подписчикам возможность создавать кластеры Hadoop и выполнять на них задания с повременной оплатой. Позднее, в качестве альтернативы, подписчики Amazon Elastic MapReduce получили выбор между классическим дистрибутивом от Apache и дистрибутивами от MapR.

В 2011 году Yahoo выделила подразделение, занимавшееся разработкой и использованием Hadoop, в самостоятельную компанию —

Greenplum[25] (позднее это бизнес-подразделение было выделено в самостоятельную компанию Pivotal[англ.], и она перешла на полностью самостоятельный дистрибутив Hadoop на базе кода Apache[26]), Teradata заключила соглашение с Hortonworks по интеграции Hadoop в аппаратно-программный комплекс массово-параллельной обработки Aster Big Analytics appliance[27]. В 2013 году собственный дистрибутив Hadoop создала Intel[28], год спустя отказавшись от его развития в пользу решений от Cloudera, в которой приобрела долю в 18 %[29]
.

Объём рынка программного обеспечения и услуг вокруг экосистемы Hadoop на 2012 год оценён в размере $540 млн с прогнозом роста к 2017 году до $1,6 млрд, лидеры рынка — калифорнийские стартапы Cloudera, MapR и Hortonworks[30]. Кроме них отмечены также компании Hadapt (поглощена в июле 2014 корпорацией Teradata[31]), Datameer[англ.], Karmasphere и Platfora, как строящие целиком свой бизнес на создании продуктов для обеспечения Hadoop-систем аналитическими возможностями[32].

Критика

Примечания

  1. https://archive.apache.org/dist/hadoop/common/
  2. Release 3.4.0 available
  3. Вэнс, 2009, It controls the top search engines and determines the ads displayed next to the results. It decides what people see on Yahoo’s homepage and finds long-lost friends on Facebook.
  4. 14 декабря 2011 года.
  5. 1 2 Cutting, Doug. Hadoop: a brief history (англ.). Yahoo! (24 марта 2008). Дата обращения: 25 декабря 2011. Архивировано из оригинала 11 марта 2012 года.
  6. Вэнс, 2009, Doug Cutting with the stuffed elephant that inspired the name Hadoop.
  7. Уайт, 2013, In April 2008, Hadoop broke a world record to become the fastest systems to sort a terabyte of data. Running on a 910-node cluster, Hadoop sorted one terabyte in 209 seconds, pp. 10—11.
  8. Уайт, 2013, by this time, Hadoop was being used by many other companies, besides Yahoo!, such as Last.fm, Facebook, and the New York Times, p. 10.
  9. Metz, Cade Google blesses Hadoop with MapReduce patent license (англ.). The Register (27 апреля 2010). Дата обращения: 30 декабря 2011. Архивировано из оригинала 11 марта 2012 года.
  10. Мец, 2011, But it was very obvious, very quickly that being able to manage ‘Big Data’ is the biggest problem that CIOs have to solve … It was clear that Hadoop was the way they wanted to solve the problem”.
  11. Моррисон, Алан и др. Большие Данные: как извлечь из них информацию. Технологический прогноз. Ежеквартальный журнал, российское издание, 2010 выпуск 3. PricewaterhouseCoopers (17 декабря 2010). — «К началу 2010 года Hadoop, MapReduce и ассоциированные с ними технологии с открытым кодом стали движущей силой целого нового явления, которое O’Reilly Media, The Economist и другие издания окрестили большими данными». Дата обращения: 12 ноября 2011. Архивировано из оригинала 11 марта 2012 года.
  12. Winckler, Marie. Apache Hadoop takes top prize at Media Guardian Innovation Awards (англ.). The Guardian (25 марта 2011). — «Described by the judging panel as a “Swiss army knife of the 21st century”, Apache Hadoop picked up the innovator of the year award for having the potential to change the face of media innovations». Дата обращения: 25 декабря 2011. Архивировано из оригинала 11 марта 2012 года.
  13. Infoworld. IDG (16 октября 2013). Дата обращения: 1 января 2014. Архивировано
    16 декабря 2013 года.
  14. Toby Wolpe. Hortonworks founder: YARN is Hadoop's datacentre OS. As lead on MapReduce and part of Hadoop from its inception, Arun Murthy offers his take on YARN’s importance to the open-source project and enterprise data architecture (англ.). ZDNet (31 октября 2013). — ««It was the system to take the application from the user and run it. So it’s sort of the operating system»». Дата обращения: 1 января 2014. Архивировано 2 января 2014 года.
  15. Apache Hadoop MapReduce — Migrating from Apache Hadoop 1.x to Apache Hadoop 2.x. Apache Software Foundation (7 октября 2013). Дата обращения: 1 января 2014. Архивировано 2 января 2014 года.
  16. Швачко, 2011, .
  17. Швачко, 2011, The Apache Hadoop MapReduce framework has reportedly reached its scalability limit at 40,000 clients simultaneously running on the cluster. This corresponds to a 4,000-node cluster with 10 MapReduce clients—slots, in Hadoop terminology — per node.
  18. Швачко, 2011, In order to process metadata requests from thousands of clients efficiently, NameNode keeps the entire namespace in memory. The amount of RAM allocated for the NameNode limits the size of the cluster <…> The current namespace limit is 100 million files.
  19. Dereck Harris. Big data on micro servers? You bet. Online dating service eHarmony is using SeaMicro’s specialized Intel Atom-powered servers as the foundation of its Hadoop infrastructure, demonstrating that big data applications such as Hadoop might be a killer app for low-powered micro servers (англ.). Gigaom (13 июня 2011). Дата обращения: 4 января 2014. Архивировано 22 декабря 2013 года.
  20. yarn.nodemanager.resource.memory-mb и yarn.nodemanager.resource.cpu-vcores соответственно в файле конфиграции YARN
  21. Handy, Alex. Hadoop creator goes to Cloudera (англ.). SD Times (9 октября 2009). — «I’ve said for a while now that Cloudera is the company with the Hadoop banner firmly in its grasp, despite the fact that Yahoo and Facebook both contribute mountains of code the project». Дата обращения: 25 декабря 2011. Архивировано из оригинала 11 марта 2012 года.
  22. Mary Jo Foley. Hortonworks delivers beta of Hadoop big-data platform for Windows. A fully open-source version of Hortonworks Data Platform for Windows, built with contributions from Microsoft, is available to beta testers. (англ.). ZDNet (17 февраля 2013). — «In 2011, Microsoft announced it was partnering with Hortonworks to create both a Windows Azure and Windows Server implementations of the Hadoop big data framework». Дата обращения: 2 января 2014. Архивировано 3 января 2014 года.
  23. Timothy Prickett Morgan. Oracle rolls its own NoSQL and Hadoop. A supremely confident Ellison mounts the Big Data elephant (англ.). The Register (3 октября 2011). — «There’s no shortage of ego at Oracle, as evidenced by the effusion of confidence behind the company’s OpenWorld announcement of the not-so-humbly named Big Data Appliance.» Дата обращения: 2 января 2014. Архивировано 7 июля 2017 года.
  24. Doug Henschen. IBM Beats Oracle, Microsoft With Big Data Leap. Hadoop-based InfoSphere BigInsights platform goes live on SmartCloud infrastructure, beating Oracle and Microsoft to market (англ.). Information Week (2011-14-10). Дата обращения: 2 января 2014. Архивировано 3 января 2014 года.
  25. Dereck Harris. Startup MapR Underpins EMC’s Hadoop Effort. Calif.-based storage startup MapR, which provides a high-performance alternative for the Hadoop Distributed File System, will serve as the storage component for EMC’s forthcoming Greenplum HD Enterprise Edition Hadoop distribution (англ.). Gigaom (25 мая 2011). Дата обращения: 2 января 2014. Архивировано 2 января 2014 года.
  26. Timoty Pricket Morgan. Pivotal ships eponymous Hadoop distro to the masses. An inquisitive HAWQ rides the big data elephant (англ.). The Register (17 июля 2013). — «In the wake of its acquiring the Greenplum parallel database and related data warehouse appliance business a few years back, EMC hooked up with MapR Technologies to rebrand its own rendition of Hadoop to make its Greenplum HD variant. But with the Pivotal HD 1.0 distribution, the EMC and VMware spinoff has gone back to the open source Apache Hadoop». Дата обращения: 2 января 2014. Архивировано 3 января 2014 года.
  27. Computerworld (21 февраля 2012). Дата обращения: 2 января 2014. Архивировано
    3 января 2014 года.
  28. Stacey Higginbotham. Cloudera who? Intel announces its own Hadoop distribution. Intel’s getting into the open source software business with it’s own version of Hadoop. It joins a host of startups as well as EMC Greenplum in building a distribution for big data (англ.). Gigaom (26 февраля 2013). Дата обращения: 3 января 2014. Архивировано 2 января 2014 года.
  29. Harris, Dereck Intel jettisons its Hadoop distro and puts millions behind Cloudera (англ.). Gigaom (27 марта 2014). Дата обращения: 1 апреля 2014. Архивировано 30 марта 2014 года.
  30. John Furrier. Hadoop Pure-Play Business Models Explained (англ.). Forbes (19 декабря 2013). Дата обращения: 2 января 2014. Архивировано 3 января 2014 года.
  31. Doug Henschen. Teradata Acquires Hadapt, Revelytix For Big Data Boost. Teradata adds data-prep, data-management, and data-analysis capabilities by buying two notable independents in the big data arena. Information Week (22 июля 2014). Дата обращения: 1 ноября 2014. Архивировано 1 ноября 2014 года.
  32. Information Week (10 декабря 2012). — «Hadapt Brings Relational Analytics To Hadoop <…> Hadapt is in good company, with Cloudera (Impala), Datameer, Karmasphere, Platfora and others all working on various ways to meet the same analytics-on-Hadoop challenge». Дата обращения: 2 января 2014. Архивировано
    3 января 2014 года.

Литература

Ссылки