...
- Запуск кластера 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.
...
Блок кода |
---|
# 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.108.0 release-4.108.0 export PYTHON_VER=python3.8 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() |
Информация |
---|
|
Деплой 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 |