У меня есть три узла с установленным докером, один мастер и два слэйва, и я хочу запустить Месос, марафон и hadoop на докере. У меня есть эти файлы для создания докера:
Это окно настройки для главного узла для запуска Mesos и Marathon:
version: '3.7'
services:
zookeeper:
image: hadoop_marathon_mesos_flink_2
command: >
sh -c "
echo zookeeper && /home/zookeeper-3.4.14/bin/zkServer.sh
restart &&
sleep 30 && /home/mesos-1.7.2/build/bin/mesos-master.sh
--ip=10.32.0.1 --hostname=10.32.0.1 --roles=marathon,flink |
/home/marathon-1.7.189-48bfd6000/bin/marathon --master
10.32.0.1:5050 --zk zk://10.32.0.1:2181/marathon
--hostname 10.32.0.1 --webui_url 10.32.0.1:8080
--logging_level debug"
privileged: true
network_mode: "bridge"
environment:
WEAVE_CIDR: 10.32.0.1/12
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 10
ZOOKEEPER_SYNC_LIMIT: 5
ZOOKEEPER_SERVERS: 10.32.0.1:2888:3888
MESOS_CLUSTER: Yekta
LIBPROCESS_IP: 10.32.0.1
MESOS_QUORUM: 1
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
HOSTNAME: 10.32.0.1
MESOS_NATIVE_JAVA_LIBRARY: /usr/local/lib/libmesos.so
MESOS_DOCKER_SOCKET: /var/run/weave/weave.sock
volumes:
- /home/cfms11/.ssh:/root/.ssh
expose:
- 2181
- 2888
- 3888
- 5050
- 4040
- 7077
- 8080
- 9000
- 50070
- 50090
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 5050:5050
- 4040:4040
- 7077:7077
- 8080:8080
- 9000:9000
- 50070:50070
- 50090:50090
networks:
default:
external:
name: weave
Docker создает в подчиненных узлах:
version: '3.7'
services:
slave:
image: hadoop_marathon_mesos_flink_2
command: sh -c "/home/mesos-1.7.2/build/bin/mesos-slave.sh
--master=10.32.0.1:5050 --work_dir=/var/run/mesos
--systemd_enable_support=false"
privileged: true
network_mode: "weave"
environment:
WEAVE_CIDR: 10.32.0.1/12
MESOS_RESOURCES: ports(*):[11000-11999]
LIBPROCESS_IP: 10.32.0.2
MESOS_HOSTNAME: 10.32.0.2
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins #also in Dockerfile
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_LOGGING_LEVEL: INFO
volumes:
- /home/spark/.ssh:/root/.ssh
expose:
- 5051
ports:
- 5051:5051
networks:
default:
external:
name: weave
После запуска docker compose files, марафон и мезо запускаются без проблем. Затем я должен войти в контейнер, созданный с помощью docker compose, и запустить hasoop. Поэтому я делаю эти этапы:
В каждом узле:
sudo docker-compose ps
Копирую имя вывода вышеприведенной команды.
sudo docker exec -it "the_name" /bin/bash
После входа в этот контейнер в главном узле я запускаю следующие команды:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod -R 750 /root/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*
chown -R root ~/.ssh/
chgrp -R root ~/.ssh/
service ssh restart
Кроме того, я запускаю следующие команды в подчиненных контейнерах:
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*
chown -R root ~/.ssh/
chgrp -R root ~/.ssh/
service ssh restart
После выполнения этих работ я могу запустить hadoop с помощью этой команды:
/opt/hadoop/sbin/start-dfs.sh
Но это не началось. Я получаю эту ошибку:
Запуск наменодов в [compose-weave-ok-for-master-node_zookeeper_1.weave.local]
compose-weave-ok-for-master-node_zookeeper_1.weave.local: ОШИБКА: невозможно установить приоритет процесса namenode 1985
Начальные датододы
Запуск вторичных наменодов [compose-weave-ok-for-master-node_zookeeper_1.weave.local]
Я думаю, это потому, что ID Container не находится в / etc / hosts. На самом деле, / etc / hosts выглядит следующим образом:
# created by Weave - BEGIN
# container hostname
10.32.0.1 compose-weave-ok-for-master-node_zookeeper_1.weave.local
compose-weave-ok-for-master-node_zookeeper_1
# static names added with --add-host
# default localhost entries
127.0.0.1 localhost
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# created by Weave - EN
Кто-нибудь, пожалуйста, скажите мне, как я могу запустить hadoop рядом с Марафоном и Месосом?
Заранее спасибо.