rapid deployment of hadoop development enviroments
DESCRIPTION
Development of Hadoop-related project in DevOps culture with Hadoop distributions, management and configuration tools and modern container virtualization capabatilitesTRANSCRIPT
СРЕДЫ РАЗРАБОТКИ HADOOP БЫСТРОГО
РАЗВЁРТЫВАНИЯ
Hadoop в стиле
DevOps
Андрей Николаенко,
архитектор, IBS
DEVOPSИнтегрированные в единый процесс разработка, тестирование и администрирование
Планирование
Разработка
Сборка
ТестированиеВыпуск
Развёртывание
Мониторинг
Интенсификация: десятки выпусков в день
Тесное взаимодействие с «продуктивным ландшафтом»
Автоматизация всех этапов жизненного цикла
Универсализация специалистов и интеграция коллективов
Особая культура создания программных продуктов
ФЕНОМЕН ПРОФЕССИИ “DATA SCIENTIST”
[Предметные]
экспертные навыки
(substantive expertise)
Навыки
программирования
(hacking skills)
Навыки применения
математической
статистики
(math&stats skills)
Наука о
данных
В о д н и х р у к а х :
П о с т а н о в к а з а д а ч
П о д б о р м е т о д о в
П р о е к т и р о в а н и е а л г о р и т м о в
Р е а л и з а ц и я а л г о р и т м о в
О т л а д к а и о п т и м и з а ц и я
Р а з в ё р т ы в а н и е к л а с т е р о в ?
Диаграмма Конвея
ЗАДАЧА БЫСТРОГО РАЗВЁРТЫВАНИЯ КЛАСТЕРА
Высвободить ресурсы
«Заморозить» данные Освободить узлы оборудования
Запустить вычисления и отследить их
Определить параметры заданий Журналировать выполнение Вести мониторинг
Подключить наборы данных
Идентифицировать наборы данных Сконфигурировать узлы имёнЗагрузить или подключить к узлам
обработки
Настроить сеть
DHCP Маршрутизация Раздача имён
Создать кластер
Выделить узлы оборудования Установить операционные системыУстановить «экосистемы»
(Hadoop, Hive, Spark, Mahout, …)
“ЭКОСИСТЕМА”ПРОЕКТОВ
HDFS
GlusterFS
Ceph
YARN
MapReduce(пакетная
обработка)
Tez(интерактивная
обработка)
Amazon S3 CloudStore
Swift
Pig(сценарии)
Hive(запросы)
HBase(NoSQL)
Impala(SQL)
Drill(аналог Dremel)
Mahout(машинное
обучение)
Zookeeper(координатор)
Ambari(управление)
Hue(Cloudera
Manager)
Ganglia(монитор)
Spark(оперативная
обработка)
Storm(поточная
обработка)
Kafka(брокер
сообщений)
Oozie(workflow)
Sqoop(пакетная загрука)
Flume(поточная
загрузка)
Hama(машинное
обучение)
Taychon(in-memory
data grid)
Azure Blob
Storage
файловые системы объектные хранилища
обработчики
СУБД-сервис
глубинный анализ
связующие управляющие
Сторонние
проекты
Ядро
Hadoop
Проекты
Фонда
Apache
КЛАССИЧЕСКИЙ HADOOP
Установка на
«голом железе»
КЛАССИЧЕСКОЕ ПОЗИЦИОНИРОВАНИЕ HADOOP
Горизонтально масштабируемый кластер
Узлы оборудования массового класса
Устройства хранения прямого подключения
Linux на«голом железе»
Один компьютер –
один узел кластера
Встроенные диски: узел обработки = узел данных
ТИРАЖИРУЕМЫЙ КЛАССИЧЕСКИЙ КЛАСТЕРНа примере Oracle Big Data Appliance
18 узлов, в каждом:
2 восьмиядерныхXeon E5-2650 V2
64 ГБ ОЗУ
12 SAS-дисков (4 ТБ, 7200 об/мин)
Сети:
Infiniband QDR (40 Гбит/с), по 2 порта в
каждом узле
Ethernet 10 Гбит/с (по 4 порта в каждом узле)
НЕУДОБСТВА ДЛЯ РАЗРАБОТКИ
Ограниченный уровень узлового
параллелизма
Жёсткая привязка к распределению данных по узлам
Ограничения по выбору различных
инструментов и версий
(зависимости…)
Однако, с появлением YARN и мультиарендности –
возможности запускать различные задания в разных «экосистемах», –
преодолены многие другие недостатки
классических конфигураций на «голом железе»
HADOOP ИЗ ОБЛАКА
Hadoop в публичных
облаках
ОСНОВНЫЕ ПРОВАЙДЕРЫ
• На базе MapR
• Интегрирован с S3
AmazonElastic MapReduce
• На базе Hortonworks
• Интегрирован с SwiftFSRackspace
• На базе HortonworksMicrosoft Azure
• BigInsightsIBM Bluemix
AMAZON ELASTIC MAPREDUCE (1)
AMAZON ELASTIC MAPREDUCE (2)
AMAZON ELASTIC MAPREDUCE (3)
AMAZON ELASTIC MAPREDUCE (4)
НЕУДОБСТВА РАЗРАБОТКИ В ОБЛАКЕ
Дорогая и длительная доставка данных
Работа через брандмауэры,
зависимость от сетевой связности
Неэффективность заморозки данных
Ограниченность экосистем
Высокая стоимость
Невозможность обрабатывать
конфиденциальные данные
ЧАСТНОЕ HADOOP-ОБЛАКО
КЛЮЧЕВЫЕ ПРИНЦИПЫ
Использование средств
виртуализации
Использование средств
автоматизации развёртывания
Отделение узлов хранения
от узлов обработкиIII
II
I
ВИРТУАЛИЗАЦИЯ I
СОМНЕНИЯ В ПРИМЕНИМОСТИ ВИРТУАЛИЗАЦИИ
Зачем делить узел на несколько машин, когда можно занять все ресурсы узла одной машиной?
Накладные расходы?
Повышение уровня параллелизма за
логического разделения
Не все решения по виртуализации
грешат накладными расходами
КОНТЕЙНЕРНАЯ ВИРТУАЛИЗАЦИЯ
Parallels Virtuozzo (OpenVZ)
Требуется специальное ядро
Linux
Идёт процесс интеграции в ядро
Linux
Зрелая техника контейнерной виртуализации
Docker
Использует средства LXC –разделение пространств имён
(namespaces) и вычислительных ресурсов (cgroups)
Каскадно-объёмное монтирование(AuFS)
DOCKER VS KVM ДЛЯ HADOOP
ЦПУ
1
26
ОЗУ
1
3
DOCKER-ОБРАЗЫ⇛ docker search hadoop
NAME DESCRIPTION STARS AUTOMATED
sequenceiq/hadoop-docker An easy way to try Hadoop 45 [OK]
sequenceiq/ambari Provision a Hadoop cluster with Apache Amb... 13 [OK]
sequenceiq/hadoop-ubuntu An easy way to try Hadoop on Ubuntu 5 [OK]
pcting/hadoop-single-node Hadoop 2.2.0, OpenSSH Server, Zookeeper on... 4 [OK]
ruo91/hadoop Apache hadoop 2.x - Pseudo-Distributed Mode 2 [OK]
ingensi/hadoop-cdh-base Cloudera Hadoop image base. Provides Oracl... 2 [OK]
bouil/hadoop-single-node Hadoop 2.2.0 single node installation 1
bioshrek/hadoop-hdfs-namenode 1 [OK]
meabed/hadoop-debian Apache Hadoop 2.5.1 - Debian Wheezy ! 1 [OK]
ingensi/hadoop-cdh-pseudo Easy to run Cloudera Hadoop pseudo distrib... 1 [OK]
bioshrek/hadoop-hdfs-datanode 1 [OK]
richhaase/hdp2-hadoop 1 [OK]
notyy/docker_hadoop hadoop image build on ubuntu,fully support... 1 [OK]
labianchin/hadoop 1 [OK]
raulbejarano/hadoop-mongodb Hadoop Single Node with MongoDB server. 1
beatworld/hadoop A 1.2.1 Hadoop on Ubuntu 12.04. Installat... 1
rogaha/apache-hadoop-hdfs-precise 1
pwiechow/hadoop 1 [OK]
⇛ docker pull sequenciq/hadoop-ambari
⇛ curl -Lo .amb j.mp/docker-ambari-170ea && . .amb
⇛ amb-deploy-cluster 4
n-узловый управляемый кластер
от SequencIQ за 2–3 мин.
DOCKER ВНУТРИ YARN?
Основной вопрос: не реализовать ли на уровне LXC и пространств имён?
Почему бы не контейнеризировать задания, задействовав Docker?
https://issues.apache.org/jira/browse/YARN-1964
Существует проблема зависимостей для разного набора инструментов
Flume + Pig + Hive OpenMPI
YARN
распределяет ресурсы для Hadoop-заданий
поддерживает мультиарендность
использует для ограничения ресурсов cgroups
АВТОМАТИЗАЦИЯ II
ДИСТРИБУТИВЫ И ПАКЕТЫ
Ap a c h e B i g To p – средство для сборки .rpm- и .deb-пакетов, собираются комплекты для:
Автоматизация средствами дистрибутивов
Cloudera Manager
Apache Ambari (Hortonworks)
Red HatEnterprise
LinuxFedora Debian Ubuntu
ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI
Изображения: ©2014, Hortonworks
ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI
Изображения: ©2014, Hortonworks
ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI
Изображения: ©2014, Hortonworks
ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI
Изображения: ©2014, Hortonworks
ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI
Изображения: ©2014, Hortonworks
РАСПРЕДЕЛЕНИЕ ЗАДАЧ АВТОМАТИЗАЦИИ
Высвободить ресурсы
«Заморозить» данные Освободить узлы оборудования
Запустить вычисления и отследить их
Определить параметры заданий Журналировать выполнение Вести мониторинг
Подключить наборы данныхИдентифицировать наборы
данныхСконфигурировать узлы имён
Загрузить или подключить к узлам обработки
Настроить сеть
DHCP Маршрутизация Раздача имён
Создать кластерВыделить узлы
(вычислительные ресурсы)Установить операционные
системыУстановить «экосистемы»
(Hadoop, Hive, Spark, Mahout, …)
– задачи, решаемые в средствах управления экосистемы Hadoop (Ambari, Hue)
PUPPET И CHEF
Средства централизованного управления конфигурациями программного обеспечения
Написаны на Ruby
Выполнены в Ruby-стиле (командная строка, «соглашение превыше конфигурации»)
Используют декларативный предметно-ориентированный язык
Puppet
Богаче веб-интерфейс
Больше выложенных «рецепетов»
Язык конфигураций – JSON-подобный
Chef
Серверная часть на Erlang
Язык конфигураций –подмножество Ruby
VAGRANT
Соглашения – превыше конфигураций!
Обёртка над средствами виртуализации
VirtualBox VMWare Workstation Docker Virtuozzo
Обёртка над средствами конфигурационного управления
Puppet Chef
$ git clone https://github.com/Cascading/vagrant-cascading-hadoop-cluster$ vagrant up$ vagrant ssh master$ (master) sudo prepare-cluster.sh$ (master) sudo start-all.sh
Кластер Hadoop2.0 +Hbase +
Cascading из 4 узлов
Под управлением
Puppet
APACHE BIGTOP
Apache BigTop – проект создания тиражируемых пакетов «экосистем» («упаковок») для программных средств вокруг Hadoop
Позволяет собирать RPM- и deb-пакеты с учётом зависимостей
Поддерживает автоматическое тестирование и непрерывную интеграцию (Jenkins)
ОТДЕЛЕНИЕ ХРАНЕНИЯ ОТ
ОБРАБОТКИIII
ОГРАНИЧЕНИЯ РАСПРЕДЕЛЁННОЙ ФАЙЛОВОЙ СИСТЕМЫ
George Porter. Decoupling storage and computation in Hadoop with
SuperDataNodes // SIGOPS Oper. Syst. Rev. , vol. 44 (2), 2010, 41–46
Жёстко заданный размер блока
Конфигурационно заданный коэффициент репликации (обычно 3)
Иерархическая структура
Отделить узлы хранения от узлов обработки?
Вывести проблему распределения данных
на сторону системы хранения?
ОБЪЕКТНЫЙ ПОДХОДСквозная уникальная
идентификация
Инкапсуляция
Наследование
Полиморфизм
Прототипирование
• GUID, который позволит идентифицировать любые объёмы мировых данных
• данные вместе с метаданными и методами доступа
• создание новых типов объектов на базе существующих
• работа с объектами через разные интерфейсы из разных сервисов
• наборы объектов-образцов, предварительно описанные
БОЛЬШОЕ ОБЛАЧНОЕ ОБЪЕКТНОЕ ХРАНИЛИЩЕ
GUID
Метаинфо
Содержимое
… …
Г е о з о н а 1 …
С е р в и с г е о п е р е н а п р а в л е н и я
С е р в и с г е о д о с т а в к и
К л а с с и ф и к а т о р
м е х а н и з м а х р а н е н и я
O b j e c t S t o r a g e A P I
M R A P I C I F S N F S T o r r e n tW e b D A V
NoSQL
DB
Hadoop
File
sharing
Media
Library
ECM
Archive
Г е о з о н а n
R E S T
ОБЪЕКТНЫЕ ХРАНИЛИЩА ВМЕСТО HDFS
Поддержка в стандартном дистрибутиве Apache
Hadoop
Amazon S3
CloudStore
OpenStack Swift
Отдельные разработки
Apache CloudStack
Azure Blob Storage
Hortonworks Ozone
МИНУСЫ ОБЪЕКТНОГО ХРАНИЛИЩА ДЛЯ HADOOP
• Но если приложение работало с Amazon S3 – то оно уже готово к объектному хранению
Возможные привязки к файлам и иерархиям в
унаследованных MapReduce-приложениях
• Но как только запускается задание – сырые данные распределяются по узлам обработки, то есть обработка локальна
Между узлами обработки и сырыми данными – сеть
• Но есть богатая история Amazon Elastic MapReduce
Новизна, отсутствие практики
• Но выгодно в условиях постоянной пересборки и изменений наборов данных
Невыгодно в условиях стабильного набора данных
(«тихого озера»)
ОЗЁРА ДАННЫХ
Предложены в 2011 году Джеймсом
Диксоном (генеральным
директором Pentaho)
собранные в большую распределённую
файловую систему данные в исходных
форматах, пригодные для Hadoop-обработки
«Если витрины данных – это бутылки с
отфильтрованной водой, то озеро – их
неисчерпаемый источник»
Изображение: ©2014, Gartner
СУММА ТЕХНОЛОГИЙ
ПУТИ К РАЗРАБОТЧЕСКОМУ«HADOOP-КАК-УСЛУГА»
Мониторинг
Управление
Конфигурирование
Автоматизация
Виртуализация
ХранениеLustre
Apache Ambari
OpenStack
Swift
Docker
LXCVirtuozzo VirtualBox
Vagrant
Puppet Chef
OpenStack
Sahara
Nagios
Cloudera
Manager
GPFS
DATASCIENCETOOLBOX.ORG
Ерун Янсенс. Наука о данных в командной строке. N. Y.: O’Reilly, 2013
Первый доклад на
Strata + Hadoop World’ 2014
ПУТЬ ОТ DATASCIENCETOOLBOX
Мониторинг
Управление
Конфигурирование
Автоматизация
Виртуализация
ХранениеLustre
Apache Ambari
OpenStack
Swift
Docker
LXCVirtuozzo VirtualBox
Vagrant
Puppet Chef
OpenStack
Sahara
Nagios
Cloudera
Manager
GPFS
ПУТЬ ОТ SEQUENCEIQ
Мониторинг
Управление
Конфигурирование
Автоматизация
Виртуализация
ХранениеLustre
Apache Ambari
OpenStack
Swift
Docker
LXCVirtuozzo VirtualBox
Vagrant
Puppet Chef
OpenStack
Sahara
Nagios
Cloudera
Manager
GPFS
ПРИМЕР ОТ CLOUDERA
Мониторинг
Управление
Конфигурирование
Автоматизация
Виртуализация
ХранениеLustre
Apache Ambari
OpenStack
Swift
Docker
LXCVirtuozzo VirtualBox
Vagrant
Puppet Chef
OpenStack
Sahara
Nagios
Cloudera
Manager
GPFS
ВАРИАНТ HORTONWORKS
Мониторинг
Управление
Конфигурирование
Автоматизация
Виртуализация
ХранениеLustre
Apache Ambari
OpenStack
Swift
Docker
LXCVirtuozzo VirtualBox
Vagrant
Puppet Chef
OpenStack
Sahara
Nagios
Cloudera
Manager
GPFS