Сегодня говорим о самом популярном животном в зоопарке BigData — Hadoop. Так зовут “маленького” слоника, который перевернул мир данных и спас мир, когда привычные SQL базы данных спасовали. Итак, знакомьтесь:
Hadoop — это фреймворк, состоящий из набора утилит для разработки и выполнения программ распределенных вычислений.
Полезно знать
Идея родилась в 2004 году: Google публикует работу, в которой рассказывает о технологии BigTable и MapReduce (на которой сейчас держатся NoSQL-базы данных). В 2006 Yahoo выпускает открытую реализацию и дает ей имя Hadoop. В 2010 году была создана экосистема технологий, делающая Hadoop применимой и популярной.
Зачем нужен Hadoop?
Объем данных за последние несколько лет растет с большой скоростью и обещает продолжать в том же духе. Именно это и послужило предпосылкой для написания Google вышеупомянутой работы: стандартные базы данных больше не могли поддерживать работоспособность при таком темпе.
Один из многих графиков, отражающих этот стремительный рост:
Рост объема мировых данных по годам. Источник: seagate.com
Обработка, хранение и все вытекающие действия с такими объемами данных и есть Big Data. Hadoop — технология работы с BigData.
Кем используется?
У Hadoop хороший послужной список: eBay, Amazon, IBM, Facebook и т.д. Нет единой схемы для работы с данными абсолютно любой компании: работа всех сервисов, даже не слишком больших, очень специфична. Поэтому на основной функционал накладываются дополнительные фичи, разработанные специально для конкретных компаний.
Тут мы имеем дело с дистрибутивами. В случае с Hadoop дистрибутив означает набор установочных файлов для различных сервисов экосистемы. Под каждый кейс нужно подбирать свой набор подсистем Hadoop: это обеспечит совместимость всех версий компонентов. Поставляют и настраивают дистрибутивы вендоры дистрибутивов. Самые популярные от Cloudera, MapR, HDP.
А так ли нужно переплачивать за дистрибутив, если можно все установить самостоятельно? Этот вопрос помогает представить Hadoop как экосистему. Да, Hadoop настолько сложен в своем составе и обладает таким большим количеством составляющих, что установка и настройка этих инструментов — вполне надежный хлеб для нескольких компаний.
Некоторые инструменты:
- HBase — NoSQL СУБД, эффективно поддерживающая случайное чтение и запись;
- Pig — язык обработки данных и среда выполнения;
- SPARK — набор инструментов для реализации распределенных вычислений;
- Hive — хранилище данных с интерфейсом SQL;
- ZooKeeper — хранилище конфигурационной информации
и другие.
Разнообразие в экосистеме Hadoop делает этого слона универсальным инструментом, меняющимся вместе со временем.
Как работает?
Hadoop — это система, состоящая из нескольких компонентов. Основные: HDFS и MapReduce. Первое — файловая система, второе — фреймворк обработки данных.
Основные принципы Hadoop:
- Горизонтальное масштабирование
Представим, что в кластере произошли неполадки, не хватает ресурсов имеющихся серверов. Есть две модели поведения:
- Всячески апгрейдим уже имеющееся железо или заменяем его — это вертикальное масштабирование.
- Дополняем имеющийся комплект серверов новыми устройствами — горизонтальное масштабирование.
Источник:1cloud.ru
Hadoop заточен под второй вариант. Основная причина — при горизонтальном масштабировании ресурсы кластера практически не ограничены, его можно расширять бесконечно.
II. Код отправляется к данным, а не наоборот
Есть подход, при котором выделяются сервера для хранения данных и их обработки. Поэтому при работе большие объемы данных приходится передавать между этими серверами. Это энергозатратно, тяжело и долго.
Hadoop поступает умнее:
Когда нам нужно обработать данные, мы не переносим их все на сервер обработки, а копируем нужную часть кода и переносим её к данным. Система работает быстрее, легче.
III. Отказоустойчивость
При работе Hadoop учитывает возможность отказа железа целыми двумя механизмами:
- Репликацией данных — восстановление потерянной части данных
- Перезапуском тасков — механизм запоминает таски и постоянно проверяет и обновляет их.
Из принципов I, II и III следует одно из главных преимуществ Hadoop: кластер машин может состоять из обычных серверов без невероятных запросов к отказоустойчивости.
IV. Инкапсуляция сложности реализации
Звучит непонятно. Это значит, что пользователь только продумывает, каким образом он хочет обрабатывать данные, больше фокусируется на бизнес-логике процесса, чем на программной части.
Кто изучает Hadoop?
Те, кто работает с BigData: аналитики и разработчики в этой сфере. Часто это работники банков, IT-компаний, крупные сервисы с большой клиентской базой.
Как учиться?
- Начать советуем с обзорных экскурсий на Youtube, чтобы понимать, что из себя представляет каждый инструмент и с чем предстоит работать.
- Обратите внимание на большое количество оффлайн и онлайн курсов по Hadoop.(их много на Coursera, Udasity, Udemy и т.д. )
- Если хотите попробовать освоить технологию самостоятельно, для этого есть несколько интересных возможностей.
Первое: установите на виртуальную машину образ, где вся экосистема установлена и настроена. Посмотрите, как это работает (например, здесь или здесь). Полный туториал можете найти по ссылке: http://snap.stanford.edu/class/cs246-2017/homeworks/hw0/tutorialv3.pdf
Далее, подключайте все источники!
- Книги
Hadoop: The Definitive Guide by Tom White
Следует воспринимать её как учебник и обращаться к главам в случае необходимости
- Видео-уроки
Например, от mail.ru
- Форумы