Описание
Цель занятия
- Запуск кластера Hadoop в docker-е, для того чтобы продемонстрировать базовые принципы работы Hadoop
Docker
Контейнеры — это способ упаковать приложение и все его зависимости в единый образ. Этот образ запускается в изолированной среде, не влияющей на основную операционную систему. Контейнеры позволяют отделить приложение от инфраструктуры: разработчикам не нужно задумываться, в каком окружении будет работать их приложение, будут ли там нужные настройки и зависимости. Они просто создают приложение, упаковывают все зависимости и настройки в единый образ. Затем этот образ можно запускать на других системах, не беспокоясь, что приложение не запустится.
Docker — это платформа для разработки, доставки и запуска контейнерных приложений. Docker позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Он позволяет запускать множество контейнеров на одной хост-машине.
Документация: https://docs.docker.com/
docker-cosmpose - https://docs.docker.com/compose/install/
Hadoop
Hadoop – это свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. Эта основополагающая технология хранения и обработки больших данных (Big Data) является проектом верхнего уровня фонда Apache Software Foundation.
Архитектура hdfs: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
Архитектура YARN: https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html
Hive
Apache Hive – это SQL интерфейс доступа к данным для платформы Apache Hadoop. Hive позволяет выполнять запросы, агрегировать и анализировать данные используя SQL синтаксис. Для данных в файловой системе HDFS используется схема доступа на чтение, позволяющая обращаться с данными, как с обыкновенной таблицей или реляционной СУБД
Описание: https://habr.com/ru/post/283212/
Hue
HUE (Hadoop User Experience) – это веб интерфейс для анализа данных на Hadoop-е. HUE – это открытый проект(open source), выпускающийся под лицензией Apache. Принадлежит HUE, на момент написания статьи, компании Cloudera.
Документация: https://docs.gethue.com
Процедура сборки:
# for RHEL yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel git maven git clone https://github.com/cloudera/hue.git cd hue git checkout -b release-4.8.0 release-4.8.0 make prod
В итоге в директории build/release/ появится файл hue-4.10.0.tgz
Сборка образов
Spark cluster
Сборка и запуск
Структура директорий и файлы для сборки и запуска лежат в spark_cluster.zip
docker-compose.yml содержит инструкции и для сборки и для запуска. Команда
docker-compose up
скачает с docker hub нужные образы, соберет из них образ spark-а (версия 3.1.2) и запустит кластер.
Spark консоль мастер ноды поднимется по адресу http://docker_host_machine:9090
Запуск с удаленной машины
Чтобы запустить spark application на удаленном кластере создаем SparkSession:
val spark = SparkSession .builder .master("spark://cluster_ip:7077") .config("spark.driver.host", InetAddress.getLocalHost.getHostAddress) .config("spark.sql.warehouse.dir", "/opt/spark-data/warehouse") .appName("Spark Application") .getOrCreate()
- В качестве cluster_ip указываем ip адрес хост машины, где поднят кластер. При деплое этого job-а нужно будет убрать эту строку кода
- В качестве узла драйвера указывается наша локальная машина. При деплое этого job-а нужно будет убрать эту строку кода.
Деплой spark job-а на кластер
Для этого нужно скопировать jar-ник с spark job-ом на развернутый кластер.
Для этого нужно положить его в директорию apps, к которой примонтирован volume на путь /opt/spark-apps/ во всех нодах кластера.
Далее запускаем spark-submit:
/opt/spark/bin/spark-submit \ --master spark://spark-master:7077 \ --driver-memory 4G --executor-memory 4G \ --class full_qualified_class_name \ /opt/spark-apps/file_name_of_your_jar.jar
Hadoop cluster
Сборка и запуск
Структура директорий и файлы для сборки и запуска лежат в hadoop3.zip
docker-compose.yml содержит инструкции и для сборки и для запуска. Команда
docker-compose up
скачает с docker hub нужные образы, соберет из них образ и запустит hadoop кластер. Кластер содержит развернутый hadoop 3.2.0, hive 3.1.0, spark 3.1.2
YARN консоль поднимется на http://docker_host_machine:8088
Работа с компонентами кластера
Работать с компонентами кластера предполагается из командой строки. Сборки и данные можно выкладывать в директорию config. Директория примонтирована на путь /var/input.
#запуск консоли hive docker exec -it spark3_hive3_1 /bin/bash hive #засабмитить spark job docker exec -it spark3_hive3_1 /bin/bash spark-submit \ --driver-memory 4G --executor-memory 4G \ --class full_qualified_class_name \ /var/input/file_name_of_your_jar.jar