Rapid Deployment of Hadoop Development Enviroments

Post on 08-Jul-2015

321 views 4 download

description

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

Transcript of Rapid Deployment of Hadoop Development Enviroments

СРЕДЫ РАЗРАБОТКИ 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

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

mailto:anikolaenko@ibs.ru