Описание

Цель занятия

  1. Запуск кластера 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()
  1. В качестве cluster_ip указываем ip адрес хост машины, где поднят кластер. При деплое этого job-а нужно будет убрать эту строку кода
  2. В качестве узла драйвера указывается наша локальная машина. При деплое этого 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



























  • Нет меток