Apache Hadoop |
Автор: admin Просмотров: 4082 Комментарии:
Добавлен: 27 января 2017
Обновлено: 1.02.2017 - 16:51
Программная платформа для распределенного хранения и обработки очень больших массивов данных. Состоит из компьютерных кластеров, построенных на стандартных аппаратных средствах. Все модули в Hadoop разработаны с фундаментальном предположением, что сбои аппаратного обеспечения являются обычным явлением и должны автоматически обрабатываться.
Ядро Apache Hadoop состоит из части хранения, известной как Hadoop Distributed File System (HDFS) и части обработки, являющейся моделью программирования MapReduce. Hadoop разбивает файлы на большие блоки и распределяет их между узлами в кластере. Он затем переводит упакованный в JAR код в ноды для параллельной обработки данных. Этот подход использует преимущества локальных данных - узлы манипулируют данными имеющими доступ к набору данных, которые будут обрабатываться быстрее и эффективнее, чем это было на более традиционных архитектурах суперэвм, опирающиеся на параллельные файловые системы, где вычисления и данные распространяются через высокоскоростные сети.
Базовая структура Apache Hadoop состоит из следующих модулей:
- Hadoop Common - содержит библиотеки и утилиты, необходимые другими модулями Hadoop;
- Hadoop Distributed File System (HDFS) - это распределенная файловая система , которая хранит данные о commodity машинах, обеспечивая очень высокую суммарную пропускную способность в пределах кластера;
- Hadoop YARN – платформа управления ресурсами отвечающая за управление вычислительными ресурсами в кластерах и использование их для планирования приложений пользователей;
- Hadoop MapReduce - это реализация модели программирования MapReduce для крупномасштабной обработки данных.
Термин Hadoop ссылается не только на вышеприведенные базовые модули, но и на экосистему или коллекцию дополнительных программных пакетов, которые можно установить рядом с Hadoop, это Apache Pig, Apache Hive, Apache HBase, Apache Phoenix, Apache Spark, Apache ZooKeeper, Cloudera Impala, Apache Flume, Apache Sqoop, Apache Oozie, Apache Storm.
Компоненты Apache Hadoop's MapReduce и HDFS вдохновлены работами Google по их MapReduce и файловой системе Google.
Сама структура Hadoop в основном написана на языке программирования Java с некоторыми родным кодом на C и утилитами командной строки, написанными на языке оболочки сценариев. Хотя Java-код MapReduce является общим, любой язык программирования можно использовать вместе с "Hadoop Streaming" для реализации "map" и "reduce" пользовательских программ. Другие проекты в экосистеме Hadoop предлагают более богатые пользовательские интерфейсы.
Архитектура Apache Hadoop
Hadoop состоит из пакета Hadoop Common, который обеспечивает абстракцию уровня файловой системы и ОС, сервис MapReduce (либо MapReduce/MR1 или YARN/MR2) и Distributed File System Hadoop (HDFS). Пакет Hadoop Common содержит необходимые файлы Java ARchive (JAR) и скрипты для запуска Hadoop.
Для эффективного планирования работы, каждая Hadoop-совместимая файловая система должна обеспечивать информацию о местоположении: имя стойки (точнее, сетевой коммутатор), где работает узел. Приложения Hadoop могут использовать эту информацию для запуска кода на узле где есть данные и если это невозможно, на той же стойке / коммутаторе для уменьшения магистрального трафика. HDFS использует этот метод при репликации данных для резервирования данных на нескольких стойках. Такой подход уменьшает негативное влияние перерыва в подаче питания на стойку или отказа выключателя; если происходит аппаратный сбой, данные будут оставаться доступными.
Небольшой Hadoop кластер включает в себя один мастер и несколько узлов рабочих. Главный узел состоит из Job Tracker, Task Tracker, NameNode и DataNode. Узел раба или работника действует как DataNode и TaskTracker, хотя можно иметь ноды рабочих только с данными и рабочие ноды только с компьютерами. Они, как правило , используются только в нестандартных приложениях.
Hadoop требует Java Runtime Environment (JRE) 1.6 или выше. Стандартные скрипты запуска и выключения требуют установленный Secure Shell (ssh) между узлами кластера.
В более крупном кластере, узлы HDFS управляются через выделенный NameNode сервер для размещения индексов файловой системы и через вторичный NameNode, который генерирует снапшоты памяти NameNode структуры памяти NameNode, тем самым предотвращая повреждение файловой системы и потерю данных. Кроме того, отдельный сервер JobTracker управляет планированием заданий между узлами. Когда Hadoop MapReduce используется с альтернативной файловой системой, NameNode, вторичный NameNode и DataNode и DataNode архитектуры HDFS заменяются эквивалентами файловой системы.
Файловая система
Распределенная файловая система Hadoop (HDFS). Это распределённая, масштабируемая и портативная файловая система написаная на Java для платформы Hadoop. Некоторые считают HDFS хранилищем данных из-за отсутствия POSIX-совместимости и невозможности монтировать, но предоставляется командная оболочка и методы Java API, которые похожи на те что у других файловых систем. Кластер Hadoop имеет номинально один NameNode плюс кластер DataNodes, хотя опции резервирования доступны для NameNode из-за его критичности. Каждый DataNode обслуживает блоки данных по сети, используя блок протокола, специальный для HDFS. Файловая система использует сокет TCP/IP для связи. Клиенты используют процедуры удалённого вызова (RPC) для связи друг с другом.
HDFS хранит файлы большого размера (как правило, в диапазоне от гигабайта до терабайта) на нескольких машинах. Это достигается надежностью за счет репликации данных на нескольких хостах и, следовательно, теоретически не требует RAID для хранения на хостах (но для повышения производительности ввода и вывода некоторые конфигурации RAID все еще полезны). При репликации значения по умолчанию, данные хранятся на трех узлах: два на одной стойке и один на другой стойке. Узлы данных могут разговаривать друг с другом, чтобы восстановить баланс данных, чтобы переместить копии вокруг, и держать репликации данных на высоте. HDFS не является полностью POSIX-совместимым, потому что требования к POSIX файловой системе отличаются от целевых задач для приложения Hadoop. Компромисс отсутствия POSIX-совместимости в файловой системе увеличивает пропускную способность данных и добавляет поддержку не-POSIX операций, таких как Append.
HDFS добавляет отказоустойчивость, как было анонсировано в версии 2.0 в мае 2012 года, позволяя основному серверу метаданных (NameNode) при сбое вручную сделать резервное копирование (fail over manually to a backup.) Проект также начал разработку автоматического аварийного переключения.
Файловая система HDFS имеет так называемый вторичный NameNode, название вводит в заблуждение и может неправильно интерпретироваться как резервный namenode когда первичный namenode переходит в автономный режим. На самом деле, вторичный NameNode регулярно соединяется с первичным NameNode и создает снапшоты первичной информации каталога NameNode-ов, которые система сохраняет на локальную или удалённую директорию. Этот контрольный образ можно использовать для перезапуска отказавшего первичного NameNode без необходимости повторного воспроизведения всего журнала действий файловой системы и редактирования журнала, чтобы создать обновлённую структуру каталогов. Поскольку NameNode является единственной точкой для хранения и управления метаданными, он может стать узким местом для поддержки большого количества файлов, особенно большого количества маленьких файлов. HDFS Federation это новое дополнение, направленное на решение этой проблемы в определенной степени, позволяя нескольким пространствам имен, обслуживаться отдельными namenodes. Кроме этого, есть некоторые проблемы в HDFS, а именно вопрос маленьких файлов, проблемы масштабируемости, Single Point of Failure (SPoF) и узкое место в запросе больших метаданных. Преимущество работы HDFS в осознании данных между трэкером работ и трэкером задач. The job tracker schedules map or reduce jobs to task trackers with an awareness of the data location. For example: if node A contains data (x,y,z) and node B contains data (a,b,c), the job tracker schedules node B to perform map or reduce tasks on (a,b,c) and node A would be scheduled to perform map or reduce tasks on (x,y,z). Это уменьшает объем трафика , который идет по сети и предотвращает ненужную передачу данных. Когда Hadoop используется с другими файловыми системами, это преимущество не всегда доступно. Это может оказать существенное влияние на время завершения работ, которое было продемонстрировано при выполнении интенсивных заданий над данными. HDFS был разработан для большей части неизменных файлов и не может быть пригодны для систем, требующих параллельных операций записи.
HDFS можно устанавливать непосредственно с Filesystem in Userspace (FUSE) виртуальной файловой системы на GNU/Linux и на других UNIX-подобных ОС.
Доступ к файлам можно получить через родной Java API, Apache Thrift для генерации клиента на языке выбранном пользователем (C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa , Smalltalk и OCaml) интерфейс командной строки, веб-приложение HDFS-UI через HTTP или через сторонние сетевые клиентские библиотеки.
HDFS разработан портативным для разных аппаратных платформ и совместим с различными базовыми операционными системами. Архитектура HDFS вводит ограничения портативности в некоторых местах с узкой производительностью, поскольку Java не может использовать функции, которые являются исключительными для платформы на которой работает HDFS. Из-за его широкой интеграции в корпоративную инфраструктуру, мониторинг производительности HDFS становится все более важным вопросом. Мониторинг производительность от конца до конца требует отслеживания показателей datanodes, namenodes и основных операционных систем. В настоящее время есть несколько платформ мониторинга производительности HDFS, в том числе Hortonworks, Cloudera и Datadog.
Другие файловые системы
Hadoop работает непосредственно с любой распределенной файловой системой, которую можно установить с помощью базовой операционной системы, просто используя file://URL; however, this comes at a price, the loss of locality. Для того, чтобы уменьшить сетевой трафик, Hadoop должен знать, какие серверы являются самыми близкими к данным;this is information that Hadoop-specific file system bridges can provide.
В мае 2011 года в списке поддерживаемых файловых систем Apache Hadoop были:
- HDFS: Hadoop's own rack-aware file system. Предназначено для масштабирования до десятков петабайт дискового пространства и работает поверх файловых систем.
- Файловая система FTP: хранит все данные на удалённых серверах FTP.
- Файловая система Amazon S3 (Simple Storage Service) для кластеров инфраструктуры Amazon Elastic Compute Cloud. There is no rack-awareness in this file system, as it is all remote.
- Файловая система
Windows Azure Storage Blobs (WASB). Расширение WASB на вершине HDFS позволяет распределять Hadoop для доступа к данным в хранилище Azure blob без перемещения данных в кластер на постоянной основе.
Также был написан целый ряд сторонних мостов файловых систем, ни один из которых в настоящее время не поддерживается в дистрибутиве Hadoop. Тем не менее, некоторые коммерческие дистрибутивы Hadoop поставляются с альтернативной файловой системы по умолчанию - в частности, IBM, IBRIX Fusion и MapR.
JobTracker и TaskTracker: сервис MapReduce
Над файловыми системами, поставляемыми с MapReduce Engine, который состоит из одного JobTracker к которому клиентские приложения отправляют задания MapReduce. JobTracker выталкивает отработанные имеющиеся узлы TaskTracker в кластере, сохраняя работу как можно ближе к данным. С помощью файловой системы rack-aware, JobTracker знает, какой узел содержит данные и какие другие машины находятся поблизости. Если работа не может быть размещена на фактическом узле, где хранятся данные, приоритет отдается узлу в одной стойке. Это уменьшает сетевой трафик на основную магистральную сеть. Если TaskTracker выходит из строя или в режим ожидания, часть работы переносится. TaskTracker на каждом узле порождает отдельный процесс виртуальной машины Java, для предотвращения выхода из строя самого TaskTracker, если выполняемое задание выводит из строя его JVM. Импульс посылается от TaskTracker к JobTracker каждые несколько минут, чтобы проверить его состояние. Состояние и информация Job Tracker и TaskTracker подвергаются воздействию Jetty и их можно просмотреть с помощью веб-браузера.
Известные ограничения этого подхода:
- Распределение работ по TaskTrackers очень просто. Каждый TaskTracker имеет ряд доступных слотов (например, "4 слота"). Каждая активная карта или уменьшение заданий занимает один слот. Job Tracker распределяет работу на ближайшем к данным трекере со свободным слотом. Там не рассматривается текущий Load Average выделенной машины.
- Если один TaskTracker очень медленный, он может задержать работу всего MapReduce - особенно в конце работы, где в конечном итоге ожидаются медленные задачи. При включенном спикулятивном выполнении одна задача может выполняться на нескольких подчинённых узлах.
Планирование. По умолчанию Hadoop использует FIFO планирования и дополнительно 5 приоритетов для планирования заданий по очереди. В версии 0.19 планировщик заданий был переработан и появилась возможность использовать альтернативный планировщик (Fair или Capacity).
Планировщик Fair. Планировщик Fair был разработан в Facebook. Его цель - быстрое времени отклика для небольших заданий и QoS для производственных заданий. Этот планировщик имеет три основные концепции:
- Задания групируются в пулы.
- Каждому пулу присваивается гарантированная доля.
- Избыточная мощность разделяется между заданиями.
По умолчанию, рабочие места, которые некатегоризированны идут в пул по умолчанию. Пулы должны иметь указанное минимальное количество слотов карт, уменьшенные слоты, а также ограничение на количество запущенных заданий.
Планировщик Capacity. Планировщик Capacity был разработан в Yahoo. Он имеет несколько функций похожих на те что в планировщике fair.
- Очереди выделяется часть общих ресурсов
- Свободные ресурсы выделяются очереди за пределами их суммарной мощности.
- В очереди задания с высоким приоритетом имеют доступ к ресурсам очереди.
Другие приложения
Файловая система HDFS не ограничивает задания MapReduce. Это можно использовать для других приложений, многие из которых находятся в стадии разработки в Apache. В список входит база данных HBase, система машинного обучения Apache Mahout, а также Apache Hive Data Warehouse. Hadoop можно использовать для очень больших объёмов данных, преимущественно для параллельной обработки данных. Hadoop можно использовать как дополнений к реалтайм-системам Apache Storm, Flink и Spark Streaming.
По состоянию на октябрь 2009 года, коммерческое применение Hadoop включает:
- Анализ различных логов и clickstream
- Аналитика маркетинга.
- Машинное обучение и сложный интеллектуальный анализ данных.
- Обработка изображений
- Обработка сообщений XML
- Веб-сканирование и или обработка текста
- Общее архивирование, например реляционных и табличных данных, например на предмет соответствия.
Hadoop хостинг в облаке
Hadoop можно устанавливать в традиционных датацентрах, а также в облаке. Облако позволяет организациям устанавливать Hadoop без аппаратных средств. Облачные сервисы предлагают Microsoft, Amazon, IBM, Google и Oracle.
https://en.wikipedia.org/wiki/Apache_Hadoop
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Файловые системы, Системы хранения данных
Комментарии |