Development of Hadoop-related project in DevOps culture with Hadoop distributions, management and configuration tools and modern container virtualization capabatilites
2. DEVOPS
Интегрированные в единый процесс разработка, тестирование и администрирование
Планирование
Разработка
Сборка
Тестирование
Выпуск
Развёртывание
Мониторинг
Интенсификация: десятки выпусков в день
Тесное взаимодействие с «продуктивным ландшафтом»
Автоматизация всех этапов жизненного цикла
Универсализация специалистов и интеграция коллективов
Особая культура создания программных продуктов
3. ФЕНОМЕН ПРОФЕССИИ “DATA SCIENTIST”
[Предметные] экспертные навыки
(substantive expertise)
Навыки программирования
(hacking skills)
Навыки применения математической статистики
(math&statsskills)
Наука о данных
В одних руках:
Постановка задач
Подбор методов
Проектирование алгоритмов
Реализация алгоритмов
Отладка и оптимизация
Развёртывание кластеров?
Диаграмма Конвея
4. ЗАДАЧА БЫСТРОГО РАЗВЁРТЫВАНИЯ КЛАСТЕРА
Высвободить ресурсы
«Заморозить» данные
Освободить узлы оборудования
Запустить вычисления и отследить их
Определить параметры заданий
Журналироватьвыполнение
Вести мониторинг
Подключить наборы данных
Идентифицировать наборы данных
Сконфигурировать узлы имён
Загрузить или подключить к узлам обработки
Настроить сеть
DHCP
Маршрутизация
Раздача имён
Создать кластер
Выделить узлы оборудования
Установить операционные системы
Установить «экосистемы» (Hadoop, Hive, Spark, Mahout, …)
7. КЛАССИЧЕСКОЕ ПОЗИЦИОНИРОВАНИЕ HADOOP
Горизонтально масштабируемый кластер
Узлы оборудования массового класса
Устройства хранения прямого подключения
Linuxна «голом железе»
Один компьютер – один узел кластера
Встроенные диски: узел обработки = узел данных
8. ТИРАЖИРУЕМЫЙ КЛАССИЧЕСКИЙ КЛАСТЕР
На примере Oracle Big Data Appliance
18 узлов, в каждом:
2 восьмиядерныхXeon E5-2650 V2
64ГБ ОЗУ
12 SAS-дисков (4 ТБ, 7200об/мин)
Сети:
InfinibandQDR (40 Гбит/с), по 2 порта в каждом узле
Ethernet 10 Гбит/с (по 4 порта в каждом узле)
9. НЕУДОБСТВА ДЛЯ РАЗРАБОТКИ
Ограниченный уровень узлового параллелизма
Жёсткая привязка к распределению данных по узлам
Ограничения по выбору различных инструментов и версий (зависимости…)
Однако, с появлением YARN и мультиарендности– возможности запускать различные задания в разных «экосистемах», – преодолены многие другие недостатки классических конфигураций на «голом железе»
11. ОСНОВНЫЕ ПРОВАЙДЕРЫ
•На базе MapR
•Интегрирован с S3
AmazonElastic MapReduce
•На базе Hortonworks
•Интегрирован с SwiftFS
Rackspace
•На базе Hortonworks
Microsoft Azure
•BigInsights
IBM Bluemix
16. НЕУДОБСТВА РАЗРАБОТКИ В ОБЛАКЕ
Дорогая и длительная доставка данных
Работа через брандмауэры, зависимость от сетевой связности
Неэффективность заморозки данных
Ограниченность экосистем
Высокая стоимость
Невозможность обрабатывать конфиденциальные данные
18. КЛЮЧЕВЫЕ ПРИНЦИПЫ
Использование средств виртуализации
Использование средств автоматизации развёртывания
Отделение узлов хранения от узлов обработки
III
II
I
20. СОМНЕНИЯ В ПРИМЕНИМОСТИ ВИРТУАЛИЗАЦИИ
Зачем делить узел на несколько машин, когда можно занять все ресурсы узла одной машиной?
Накладные расходы?
Повышение уровня параллелизма за логического разделения
Не все решения по виртуализации грешат накладными расходами
21. КОНТЕЙНЕРНАЯ ВИРТУАЛИЗАЦИЯ
Parallels Virtuozzo(OpenVZ)
Требуется специальное ядро Linux
Идёт процесс интеграции в ядро Linux
Зрелая техника контейнерной виртуализации
Docker
Используетсредства LXC– разделение пространств имён (namespaces) и вычислительных ресурсов (cgroups)
Каскадно-объёмное монтирование(AuFS)
23. DOCKER-ОБРАЗЫ
⇛dockersearch hadoop
NAME DESCRIPTION STARS AUTOMATED
sequenceiq/hadoop-dockerAn easy way to try Hadoop45 [OK]
sequenceiq/ambariProvision a Hadoopcluster with Apache Amb... 13 [OK]
sequenceiq/hadoop-ubuntuAn easy way to try Hadoopon Ubuntu 5 [OK]
pcting/hadoop-single-node Hadoop2.2.0, OpenSSHServer, Zookeeper on... 4 [OK]
ruo91/hadoopApache hadoop2.x -Pseudo-Distributed Mode 2 [OK]
ingensi/hadoop-cdh-base ClouderaHadoopimage base. Provides Oracl... 2 [OK]
bouil/hadoop-single-node Hadoop2.2.0 single node installation 1
bioshrek/hadoop-hdfs-namenode1 [OK]
meabed/hadoop-debianApache Hadoop2.5.1 -DebianWheezy ! 1 [OK]
ingensi/hadoop-cdh-pseudo Easy to run ClouderaHadooppseudo distrib... 1 [OK]
bioshrek/hadoop-hdfs-datanode1 [OK]
richhaase/hdp2-hadoop 1 [OK]
notyy/docker_hadoophadoopimage build on ubuntu,fullysupport... 1 [OK]
labianchin/hadoop1 [OK]
raulbejarano/hadoop-mongodbHadoopSingle Node with MongoDBserver. 1
beatworld/hadoopA 1.2.1 Hadoopon Ubuntu 12.04. Installat... 1
rogaha/apache-hadoop-hdfs-precise 1
pwiechow/hadoop1 [OK]
⇛dockerpull sequenciq/hadoop-ambari
⇛curl -Lo .amb j.mp/docker-ambari-170ea && . .amb
⇛amb-deploy-cluster 4
n-узловыйуправляемый кластерот SequencIQза 2–3 мин.
24. DOCKERВНУТРИ YARN?
Основной вопрос: не реализовать ли на уровне LXCипространств имён?
Почему бы не контейнеризировать задания, задействовав Docker? https://issues.apache.org/jira/browse/YARN-1964
Существует проблема зависимостей для разного набора инструментов
Flume + Pig + Hive
OpenMPI
YARN
распределяет ресурсы для Hadoop-заданий
поддерживает мультиарендность
использует для ограничения ресурсов cgroups
32. РАСПРЕДЕЛЕНИЕ ЗАДАЧ АВТОМАТИЗАЦИИ
Высвободить ресурсы
«Заморозить» данные
Освободить узлы оборудования
Запустить вычисления и отследить их
Определить параметры заданий
Журналироватьвыполнение
Вести мониторинг
Подключить наборы данных
Идентифицировать наборы данных
Сконфигурировать узлы имён
Загрузить или подключить к узлам обработки
Настроить сеть
DHCP
Маршрутизация
Раздача имён
Создать кластер
Выделить узлы (вычислительные ресурсы)
Установить операционные системы
Установить «экосистемы» (Hadoop, Hive, Spark, Mahout, …)
–задачи, решаемые в средствах управления экосистемы Hadoop(Ambari, Hue)
33. PUPPET И CHEF
Средства централизованного управления конфигурациями программного обеспечения
Написаны на Ruby
Выполнены в Ruby-стиле (командная строка, «соглашение превыше конфигурации»)
Используют декларативный предметно-ориентированный язык
Puppet
Богаче веб-интерфейс
Больше выложенных «рецепетов»
Язык конфигураций –JSON- подобный
Chef
Серверная часть на Erlang
Язык конфигураций – подмножество Ruby
34. VAGRANT
Соглашения –превыше конфигураций!
Обёртка над средствами виртуализации
VirtualBox
VMWare Workstation
Docker
Virtuozzo
Обёртка над средствами конфигурационного управления
Puppet
Chef
$ gitclone https://github.com/Cascading/vagrant-cascading-hadoop-cluster
$ vagrant up
$ vagrant sshmaster
$ (master) sudoprepare-cluster.sh
$ (master) sudostart-all.sh
КластерHadoop2.0 +Hbase+ Cascading из 4 узлов
Под управлением Puppet
35. APACHE BIGTOP
Apache BigTop–проект создания тиражируемых пакетов «экосистем» («упаковок») для программных средств вокруг Hadoop
Позволяет собирать RPM-и deb-пакеты с учётом зависимостей
Поддерживает автоматическое тестирование и непрерывную интеграцию (Jenkins)
37. ОГРАНИЧЕНИЯ РАСПРЕДЕЛЁННОЙ ФАЙЛОВОЙ СИСТЕМЫ
GeorgePorter. DecouplingstorageandcomputationinHadoopwithSuperDataNodes//SIGOPS Oper. Syst. Rev. , vol. 44(2), 2010, 41–46
Жёстко заданный размер блока
Конфигурационнозаданный коэффициент репликации (обычно 3)
Иерархическая структура
Отделить узлы хранения от узлов обработки?
Вывести проблему распределения данныхна сторону системы хранения?
38. ОБЪЕКТНЫЙ ПОДХОД
Сквозная уникальная идентификация
Инкапсуляция
Наследование
Полиморфизм
Прототипирование
•GUID, который позволит идентифицировать любые объёмы мировых данных
•данные вместе с метаданными и методами доступа
•создание новых типов объектов на базе существующих
•работа с объектами через разные интерфейсы из разных сервисов
•наборы объектов- образцов, предварительно описанные
39. БОЛЬШОЕ ОБЛАЧНОЕ ОБЪЕКТНОЕ ХРАНИЛИЩЕ
GUID
Метаинфо
Содержимое……
Геозона1…
Сервис геоперенаправления
Сервис геодоставки
Классификатор механизма хранения
Object Storage API
MR API
CIFS
NFS
Torrent
WebDAV
NoSQLDB
Hadoop
File sharing
Media Library
ECM
Archive
Геозонаn
REST
40. ОБЪЕКТНЫЕ ХРАНИЛИЩА ВМЕСТОHDFS
Поддержка в стандартном дистрибутиве Apache Hadoop
Amazon S3
CloudStore
OpenStack Swift
Отдельные разработки
Apache CloudStack
Azure Blob Storage
Hortonworks Ozone
41. МИНУСЫ ОБЪЕКТНОГО ХРАНИЛИЩА ДЛЯ HADOOP
•Но если приложение работало с Amazon S3 –то оно уже готово к объектному хранению
Возможные привязки к файлам и иерархиям в унаследованных MapReduce-приложениях
•Но как только запускается задание –сырые данные распределяются по узлам обработки, то есть обработка локальна
Между узлами обработки и сырымиданными –сеть
•Но есть богатая история Amazon Elastic MapReduce
Новизна, отсутствие практики
•Но выгодно в условиях постоянной пересборки и изменений наборов данных
Невыгодно в условиях стабильного набора данных («тихого озера»)