Категории программ

Новые программы

Apache Hadoop

16 Червня, 2018 0

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

По состоянию на 2014 год, проект состоит из четырёх модулей – Hadoop Common (связующее программное обеспечение – набор инфраструктурных программных библиотек и утилит, используемых для других модулей и родственных проектов), HDFS (распределённая файловая система), YARN (система для планирования заданий и управления кластером) и Hadoop MapReduce (платформа программирования и выполнения распределённых MapReduce-вычислений), ранее в Apache Hadoop входил целый ряд других проектов, ставших самостоятельными в рамках системы проектов Apache Software Foundation.

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

Одной из основных целей Apache Hadoop изначально было обеспечение горизонтальной масштабируемости кластера посредством добавления недорогих узлов (оборудования массового класса, англ. commodity hardware), без прибегания к мощным серверам и дорогим сетям хранения данных. Функционирующие кластеры размером в тысячи узлов подтверждают осуществимость и экономическую эффективность таких систем, так, по состоянию на 2011 год известно о крупных кластерах Apache Hadoop в Yahoo! (более 4 тысяч узлов с суммарной ёмкостью хранения 15 Пбайт), Facebook (около 2 тысяч узлов на 21 Пбайт) и Ebay (700 узлов на 16 Пбайт). Тем не менее, считается, что горизонтальная масштабируемость в Hadoop-системах ограничена, для Apache Hadoop до версии 2.0 максимально возможно оценивалась в 4 тысячи узлов при использовании 10 MapReduce-заданий на узел. Во многом этому ограничению способствовала концентрация в модуле MapReduce функций по контролю за жизненным циклом заданий, считается, что с выносом её в модуль YARN в Apache Hadoop 2.0 и децентрализацией – распределением части функций по мониторингу на узлы обработки – горизонтальная масштабируемость повысилась.

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

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

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

Ссылки

Сайт Apache Hadoop

Скачать Apache Hadoop

Веб-разработчику , Веб-фреймворки , Компоненты и библиотеки , Разработчику , Средства разработки

Оставить комментарий