rapid deployment of hadoop development enviroments

50
СРЕДЫ РАЗРАБОТКИ HADOOP БЫСТРОГО РАЗВЁРТЫВАНИЯ Hadoop в стиле DevOps Андрей Николаенко, архитектор, IBS

Upload: andrei-nikolaenko

Post on 08-Jul-2015

328 views

Category:

Software


4 download

DESCRIPTION

Development of Hadoop-related project in DevOps culture with Hadoop distributions, management and configuration tools and modern container virtualization capabatilites

TRANSCRIPT

Page 1: Rapid Deployment of Hadoop Development Enviroments

СРЕДЫ РАЗРАБОТКИ HADOOP БЫСТРОГО

РАЗВЁРТЫВАНИЯ

Hadoop в стиле

DevOps

Андрей Николаенко,

архитектор, IBS

Page 2: Rapid Deployment of Hadoop Development Enviroments

DEVOPSИнтегрированные в единый процесс разработка, тестирование и администрирование

Планирование

Разработка

Сборка

ТестированиеВыпуск

Развёртывание

Мониторинг

Интенсификация: десятки выпусков в день

Тесное взаимодействие с «продуктивным ландшафтом»

Автоматизация всех этапов жизненного цикла

Универсализация специалистов и интеграция коллективов

Особая культура создания программных продуктов

Page 3: Rapid Deployment of Hadoop Development Enviroments

ФЕНОМЕН ПРОФЕССИИ “DATA SCIENTIST”

[Предметные]

экспертные навыки

(substantive expertise)

Навыки

программирования

(hacking skills)

Навыки применения

математической

статистики

(math&stats skills)

Наука о

данных

В о д н и х р у к а х :

П о с т а н о в к а з а д а ч

П о д б о р м е т о д о в

П р о е к т и р о в а н и е а л г о р и т м о в

Р е а л и з а ц и я а л г о р и т м о в

О т л а д к а и о п т и м и з а ц и я

Р а з в ё р т ы в а н и е к л а с т е р о в ?

Диаграмма Конвея

Page 4: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧА БЫСТРОГО РАЗВЁРТЫВАНИЯ КЛАСТЕРА

Высвободить ресурсы

«Заморозить» данные Освободить узлы оборудования

Запустить вычисления и отследить их

Определить параметры заданий Журналировать выполнение Вести мониторинг

Подключить наборы данных

Идентифицировать наборы данных Сконфигурировать узлы имёнЗагрузить или подключить к узлам

обработки

Настроить сеть

DHCP Маршрутизация Раздача имён

Создать кластер

Выделить узлы оборудования Установить операционные системыУстановить «экосистемы»

(Hadoop, Hive, Spark, Mahout, …)

Page 5: Rapid Deployment of Hadoop Development Enviroments

“ЭКОСИСТЕМА”ПРОЕКТОВ

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

Page 6: Rapid Deployment of Hadoop Development Enviroments

КЛАССИЧЕСКИЙ HADOOP

Установка на

«голом железе»

Page 7: Rapid Deployment of Hadoop Development Enviroments

КЛАССИЧЕСКОЕ ПОЗИЦИОНИРОВАНИЕ HADOOP

Горизонтально масштабируемый кластер

Узлы оборудования массового класса

Устройства хранения прямого подключения

Linux на«голом железе»

Один компьютер –

один узел кластера

Встроенные диски: узел обработки = узел данных

Page 8: Rapid Deployment of Hadoop Development Enviroments

ТИРАЖИРУЕМЫЙ КЛАССИЧЕСКИЙ КЛАСТЕРНа примере Oracle Big Data Appliance

18 узлов, в каждом:

2 восьмиядерныхXeon E5-2650 V2

64 ГБ ОЗУ

12 SAS-дисков (4 ТБ, 7200 об/мин)

Сети:

Infiniband QDR (40 Гбит/с), по 2 порта в

каждом узле

Ethernet 10 Гбит/с (по 4 порта в каждом узле)

Page 9: Rapid Deployment of Hadoop Development Enviroments

НЕУДОБСТВА ДЛЯ РАЗРАБОТКИ

Ограниченный уровень узлового

параллелизма

Жёсткая привязка к распределению данных по узлам

Ограничения по выбору различных

инструментов и версий

(зависимости…)

Однако, с появлением YARN и мультиарендности –

возможности запускать различные задания в разных «экосистемах», –

преодолены многие другие недостатки

классических конфигураций на «голом железе»

Page 10: Rapid Deployment of Hadoop Development Enviroments

HADOOP ИЗ ОБЛАКА

Hadoop в публичных

облаках

Page 11: Rapid Deployment of Hadoop Development Enviroments

ОСНОВНЫЕ ПРОВАЙДЕРЫ

• На базе MapR

• Интегрирован с S3

AmazonElastic MapReduce

• На базе Hortonworks

• Интегрирован с SwiftFSRackspace

• На базе HortonworksMicrosoft Azure

• BigInsightsIBM Bluemix

Page 12: Rapid Deployment of Hadoop Development Enviroments

AMAZON ELASTIC MAPREDUCE (1)

Page 13: Rapid Deployment of Hadoop Development Enviroments

AMAZON ELASTIC MAPREDUCE (2)

Page 14: Rapid Deployment of Hadoop Development Enviroments

AMAZON ELASTIC MAPREDUCE (3)

Page 15: Rapid Deployment of Hadoop Development Enviroments

AMAZON ELASTIC MAPREDUCE (4)

Page 16: Rapid Deployment of Hadoop Development Enviroments

НЕУДОБСТВА РАЗРАБОТКИ В ОБЛАКЕ

Дорогая и длительная доставка данных

Работа через брандмауэры,

зависимость от сетевой связности

Неэффективность заморозки данных

Ограниченность экосистем

Высокая стоимость

Невозможность обрабатывать

конфиденциальные данные

Page 17: Rapid Deployment of Hadoop Development Enviroments

ЧАСТНОЕ HADOOP-ОБЛАКО

Page 18: Rapid Deployment of Hadoop Development Enviroments

КЛЮЧЕВЫЕ ПРИНЦИПЫ

Использование средств

виртуализации

Использование средств

автоматизации развёртывания

Отделение узлов хранения

от узлов обработкиIII

II

I

Page 19: Rapid Deployment of Hadoop Development Enviroments

ВИРТУАЛИЗАЦИЯ I

Page 20: Rapid Deployment of Hadoop Development Enviroments

СОМНЕНИЯ В ПРИМЕНИМОСТИ ВИРТУАЛИЗАЦИИ

Зачем делить узел на несколько машин, когда можно занять все ресурсы узла одной машиной?

Накладные расходы?

Повышение уровня параллелизма за

логического разделения

Не все решения по виртуализации

грешат накладными расходами

Page 21: Rapid Deployment of Hadoop Development Enviroments

КОНТЕЙНЕРНАЯ ВИРТУАЛИЗАЦИЯ

Parallels Virtuozzo (OpenVZ)

Требуется специальное ядро

Linux

Идёт процесс интеграции в ядро

Linux

Зрелая техника контейнерной виртуализации

Docker

Использует средства LXC –разделение пространств имён

(namespaces) и вычислительных ресурсов (cgroups)

Каскадно-объёмное монтирование(AuFS)

Page 22: Rapid Deployment of Hadoop Development Enviroments

DOCKER VS KVM ДЛЯ HADOOP

ЦПУ

1

26

ОЗУ

1

3

Page 23: Rapid Deployment of Hadoop Development Enviroments

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 мин.

Page 24: Rapid Deployment of Hadoop Development Enviroments

DOCKER ВНУТРИ YARN?

Основной вопрос: не реализовать ли на уровне LXC и пространств имён?

Почему бы не контейнеризировать задания, задействовав Docker?

https://issues.apache.org/jira/browse/YARN-1964

Существует проблема зависимостей для разного набора инструментов

Flume + Pig + Hive OpenMPI

YARN

распределяет ресурсы для Hadoop-заданий

поддерживает мультиарендность

использует для ограничения ресурсов cgroups

Page 25: Rapid Deployment of Hadoop Development Enviroments

АВТОМАТИЗАЦИЯ II

Page 26: Rapid Deployment of Hadoop Development Enviroments

ДИСТРИБУТИВЫ И ПАКЕТЫ

Ap a c h e B i g To p – средство для сборки .rpm- и .deb-пакетов, собираются комплекты для:

Автоматизация средствами дистрибутивов

Cloudera Manager

Apache Ambari (Hortonworks)

Red HatEnterprise

LinuxFedora Debian Ubuntu

Page 27: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI

Изображения: ©2014, Hortonworks

Page 28: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI

Изображения: ©2014, Hortonworks

Page 29: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI

Изображения: ©2014, Hortonworks

Page 30: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI

Изображения: ©2014, Hortonworks

Page 31: Rapid Deployment of Hadoop Development Enviroments

ЗАДАЧИ АВТОМАТИЗАЦИИ В ПОТОКЕ AMBARI

Изображения: ©2014, Hortonworks

Page 32: Rapid Deployment of Hadoop Development Enviroments

РАСПРЕДЕЛЕНИЕ ЗАДАЧ АВТОМАТИЗАЦИИ

Высвободить ресурсы

«Заморозить» данные Освободить узлы оборудования

Запустить вычисления и отследить их

Определить параметры заданий Журналировать выполнение Вести мониторинг

Подключить наборы данныхИдентифицировать наборы

данныхСконфигурировать узлы имён

Загрузить или подключить к узлам обработки

Настроить сеть

DHCP Маршрутизация Раздача имён

Создать кластерВыделить узлы

(вычислительные ресурсы)Установить операционные

системыУстановить «экосистемы»

(Hadoop, Hive, Spark, Mahout, …)

– задачи, решаемые в средствах управления экосистемы Hadoop (Ambari, Hue)

Page 33: Rapid Deployment of Hadoop Development Enviroments

PUPPET И CHEF

Средства централизованного управления конфигурациями программного обеспечения

Написаны на Ruby

Выполнены в Ruby-стиле (командная строка, «соглашение превыше конфигурации»)

Используют декларативный предметно-ориентированный язык

Puppet

Богаче веб-интерфейс

Больше выложенных «рецепетов»

Язык конфигураций – JSON-подобный

Chef

Серверная часть на Erlang

Язык конфигураций –подмножество Ruby

Page 34: Rapid Deployment of Hadoop Development Enviroments

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

Page 35: Rapid Deployment of Hadoop Development Enviroments

APACHE BIGTOP

Apache BigTop – проект создания тиражируемых пакетов «экосистем» («упаковок») для программных средств вокруг Hadoop

Позволяет собирать RPM- и deb-пакеты с учётом зависимостей

Поддерживает автоматическое тестирование и непрерывную интеграцию (Jenkins)

Page 36: Rapid Deployment of Hadoop Development Enviroments

ОТДЕЛЕНИЕ ХРАНЕНИЯ ОТ

ОБРАБОТКИIII

Page 37: Rapid Deployment of Hadoop Development Enviroments

ОГРАНИЧЕНИЯ РАСПРЕДЕЛЁННОЙ ФАЙЛОВОЙ СИСТЕМЫ

George Porter. Decoupling storage and computation in Hadoop with

SuperDataNodes // SIGOPS Oper. Syst. Rev. , vol. 44 (2), 2010, 41–46

Жёстко заданный размер блока

Конфигурационно заданный коэффициент репликации (обычно 3)

Иерархическая структура

Отделить узлы хранения от узлов обработки?

Вывести проблему распределения данных

на сторону системы хранения?

Page 38: Rapid Deployment of Hadoop Development Enviroments

ОБЪЕКТНЫЙ ПОДХОДСквозная уникальная

идентификация

Инкапсуляция

Наследование

Полиморфизм

Прототипирование

• GUID, который позволит идентифицировать любые объёмы мировых данных

• данные вместе с метаданными и методами доступа

• создание новых типов объектов на базе существующих

• работа с объектами через разные интерфейсы из разных сервисов

• наборы объектов-образцов, предварительно описанные

Page 39: Rapid Deployment of Hadoop Development Enviroments

БОЛЬШОЕ ОБЛАЧНОЕ ОБЪЕКТНОЕ ХРАНИЛИЩЕ

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

Page 40: Rapid Deployment of Hadoop Development Enviroments

ОБЪЕКТНЫЕ ХРАНИЛИЩА ВМЕСТО HDFS

Поддержка в стандартном дистрибутиве Apache

Hadoop

Amazon S3

CloudStore

OpenStack Swift

Отдельные разработки

Apache CloudStack

Azure Blob Storage

Hortonworks Ozone

Page 41: Rapid Deployment of Hadoop Development Enviroments

МИНУСЫ ОБЪЕКТНОГО ХРАНИЛИЩА ДЛЯ HADOOP

• Но если приложение работало с Amazon S3 – то оно уже готово к объектному хранению

Возможные привязки к файлам и иерархиям в

унаследованных MapReduce-приложениях

• Но как только запускается задание – сырые данные распределяются по узлам обработки, то есть обработка локальна

Между узлами обработки и сырыми данными – сеть

• Но есть богатая история Amazon Elastic MapReduce

Новизна, отсутствие практики

• Но выгодно в условиях постоянной пересборки и изменений наборов данных

Невыгодно в условиях стабильного набора данных

(«тихого озера»)

Page 42: Rapid Deployment of Hadoop Development Enviroments

ОЗЁРА ДАННЫХ

Предложены в 2011 году Джеймсом

Диксоном (генеральным

директором Pentaho)

собранные в большую распределённую

файловую систему данные в исходных

форматах, пригодные для Hadoop-обработки

«Если витрины данных – это бутылки с

отфильтрованной водой, то озеро – их

неисчерпаемый источник»

Изображение: ©2014, Gartner

Page 43: Rapid Deployment of Hadoop Development Enviroments

СУММА ТЕХНОЛОГИЙ

Page 44: Rapid Deployment of Hadoop Development Enviroments

ПУТИ К РАЗРАБОТЧЕСКОМУ«HADOOP-КАК-УСЛУГА»

Мониторинг

Управление

Конфигурирование

Автоматизация

Виртуализация

ХранениеLustre

Apache Ambari

OpenStack

Swift

Docker

LXCVirtuozzo VirtualBox

Vagrant

Puppet Chef

OpenStack

Sahara

Nagios

Cloudera

Manager

GPFS

Page 45: Rapid Deployment of Hadoop Development Enviroments

DATASCIENCETOOLBOX.ORG

Ерун Янсенс. Наука о данных в командной строке. N. Y.: O’Reilly, 2013

Первый доклад на

Strata + Hadoop World’ 2014

Page 46: Rapid Deployment of Hadoop Development Enviroments

ПУТЬ ОТ DATASCIENCETOOLBOX

Мониторинг

Управление

Конфигурирование

Автоматизация

Виртуализация

ХранениеLustre

Apache Ambari

OpenStack

Swift

Docker

LXCVirtuozzo VirtualBox

Vagrant

Puppet Chef

OpenStack

Sahara

Nagios

Cloudera

Manager

GPFS

Page 47: Rapid Deployment of Hadoop Development Enviroments

ПУТЬ ОТ SEQUENCEIQ

Мониторинг

Управление

Конфигурирование

Автоматизация

Виртуализация

ХранениеLustre

Apache Ambari

OpenStack

Swift

Docker

LXCVirtuozzo VirtualBox

Vagrant

Puppet Chef

OpenStack

Sahara

Nagios

Cloudera

Manager

GPFS

Page 48: Rapid Deployment of Hadoop Development Enviroments

ПРИМЕР ОТ CLOUDERA

Мониторинг

Управление

Конфигурирование

Автоматизация

Виртуализация

ХранениеLustre

Apache Ambari

OpenStack

Swift

Docker

LXCVirtuozzo VirtualBox

Vagrant

Puppet Chef

OpenStack

Sahara

Nagios

Cloudera

Manager

GPFS

Page 49: Rapid Deployment of Hadoop Development Enviroments

ВАРИАНТ HORTONWORKS

Мониторинг

Управление

Конфигурирование

Автоматизация

Виртуализация

ХранениеLustre

Apache Ambari

OpenStack

Swift

Docker

LXCVirtuozzo VirtualBox

Vagrant

Puppet Chef

OpenStack

Sahara

Nagios

Cloudera

Manager

GPFS

Page 50: Rapid Deployment of Hadoop Development Enviroments

СПАСИБО ЗА ВНИМАНИЕ!

mailto:[email protected]