Ядро сброшено в работающий кластер Mesos на докере - PullRequest
0 голосов
/ 23 января 2019

У меня есть образ докера, который называется ubuntu_mesos_spark.Я установил зоопарк на нем.Я изменяю файл «zoo.cfg» следующим образом: это «zoo.cfg» в node1 (150.20.11.157)

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2187
dataDir=/var/lib/zookeeper
server.1=0.0.0.0:2888:3888
server.2=150.20.11.157:2888:3888
server.3=150.20.11.137:2888:3888

Это «zoo.cfg» в node1 (150.20.11.134)

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2187
dataDir=/var/lib/zookeeper
server.1=150.20.11.157:2888:3888
server.2=0.0.0.0:2888:3888
server.3=150.20.11.137:2888:3888

Это «zoo.cfg» в node1 (150.20.11.137)

 tickTime=2000
 initLimit=10
 syncLimit=5
 clientPort=2187
 dataDir=/var/lib/zookeeper
 server.1=150.20.11.157:2888:3888
 server.2=150.20.11.134:2888:3888
 server.3=0.0.0.0:2888:3888

Также я создал файл «myid» в «/ var / lib / zookeeper» каждого узла,Например, для «150.20.11.157» его идентификатор равен «1» в файле myid.Я установил Mesos и Spark на докер тоже.У меня есть кластер Mesos этих трех узлов тоже.Я определил IP-адрес подчиненных узлов в этом файле: «spark / conf / slaves»

150.20.11.134
150.20.11.137

Я добавил эти строки в «spark / conf / spark-env.sh»:

export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export SPARK_EXECUTOR_URI=/home/spark/program_file/spark-2.3.2-bin- 
hadoop2.7.tgz

Более того, я добавил эти строки в свой файл «~ / .bashrc»:

export SPARK_HOME="/home/spark"
PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7- 
src.zip:$PYTHO$
export PYSPARK_HOME=/usr/bin/python3.6
export PYSPARK_DRIVER_PYTHON=python3.6
export ZOO_LOG_DIR=/var/log/zookeeper

Я хочу запустить мастер-код в «150.20.11.157». Мой docker-compose:

 version: '3.7'
 services:
  zookeeper:
  image: ubuntu_mesos_spark
  command: /zookeeper-3.4.12/bin/zkServer.sh start
  environment:
   ZOOKEEPER_SERVER_ID: 1
   ZOOKEEPER_CLIENT_PORT: 2187
   ZOOKEEPER_TICK_TIME: 2000
   ZOOKEEPER_INIT_LIMIT: 10
   ZOOKEEPER_SYNC_LIMIT: 5
   ZOOKEEPER_SERVERS: 
   0.0.0.0:2888:3888;150.20.11.134:2888:3888;150.20.11.137:2888:3888
 network_mode: host
 expose:
  - 2187 
  - 2888
  - 3888
 ports:
  - 2187:2187
  - 2888:2888
  - 3888:3888

master:
image: ubuntu_mesos_spark
command: bash -c "sleep 20; /home/mesos-1.7.0/build/bin/mesos- 
master.sh --ip=150.20.11.157 --work_dir=/var/run/mesos"
restart: always
depends_on:
 - zookeeper
environment:
 - MESOS_HOSTNAME="150.20.11.157,150.20.11.134,150.20.11.137"
 - MESOS_QUORUM=1
 - MESOS_LOG_DIR=/var/log/mesos
expose:
 - 5050
 - 4040
 - 7077
 - 8080
ports:
  - 5050:5050
  - 4040:4040
  - 7077:7077
  - 8080:8080

Кроме того, я запускаю этот составной файл на подчиненных узлах: «150.20.11.134,150.20.11.137»:

 version: '3.7'
 services:
  zookeeper:
  image: ubuntu_mesos_spark
  command: /zookeeper-3.4.12/bin/zkServer.sh start
  environment:
   ZOOKEEPER_SERVER_ID: 2
   ZOOKEEPER_CLIENT_PORT: 2187
   ZOOKEEPER_TICK_TIME: 2000
   ZOOKEEPER_INIT_LIMIT: 10
   ZOOKEEPER_SYNC_LIMIT: 5
   ZOOKEEPER_SERVERS: 
   0.0.0.0:2888:3888;150.20.11.134:2888:3888;150.20.11.137:2888:3888
 network_mode: host
 expose:
  - 2187 
  - 2888
  - 3888
 ports:
  - 2187:2187
  - 2888:2888
  - 3888:3888

slave:
image: ubuntu_mesos_spark
command: bash -c "/home/mesos-1.7.0/build/bin/mesos-slave.sh -- 
master=150.20.11.157:5050 --work_dir=/var/run/mesos  
--systemd_enable_support=false"
restart: always
privileged: true
network_mode: host
depends_on:
- zookeeper
environment:
 - MESOS_HOSTNAME="150.20.11.157,150.20.11.134,150.20.11.137"
 - MESOS_MASTER=150.20.11.157
 - MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins #also in Dockerfile
 - MESOS_CONTAINERIZERS=docker,mesos
 - MESOS_LOG_DIR=/var/log/mesos
 - MESOS_LOGGING_LEVEL=INFO
expose:
  - 5051
ports:
  - 5051:5051

Сначала я запускаю «sudo docker-compose up» на главном узле.Затем я запускаю его на узлах рабов.Но я получаю эту ошибку:

На главном узле ошибка:

Запуск marzieh-compose_zookeeper_1 ... done

Воссоздание marzieh-compose_master_1 ...сделано

Присоединение к marzieh-compose_zookeeper_1, marzieh-compose_master_1

zookeeper_1 |ZooKeeper JMX включен по умолчанию

zookeeper_1 |Используя config: /zookeeper-3.4.12/bin/../conf/zoo.cfg

zookeeper_1 |Запуск zookeeper ... STARTED

marzieh-compose_zookeeper_1 завершен с кодом 0

master_1 |I0123 11: 46: 59.585522 7 logging.cpp: 201] Журнал уровня INFO запущен!

master_1 |I0123 11: 46: 59.586066 7 main.cpp: 242] Сборка: 2019-01-21 05:16:39 от master_1 |I0123 11: 46: 59.586097 7 main.cpp: 243] Версия: 1.7.0

master_1 |F0123 11: 46: 59.587368 7 process.cpp: 1115] Не удалось инициализировать: не удалось выполнить привязку 150.20.11.157:5050: невозможно назначить запрошенный адрес

master_1 |* Проверка трассировки стека сбоев: *

master_1 |@ 0x7f505ce54b9c google :: LogMessage :: Fail ()

master_1 |@ 0x7f505ce54ae0 google :: LogMessage :: SendToLog ()

master_1 |@ 0x7f505ce544b2 google :: LogMessage :: Flush ()

master_1 |@ 0x7f505ce57770
google :: LogMessageFatal :: ~ LogMessageFatal ()

master_1 |Процесс @ 0x7f505cd19ed1 :: initialize ()

master_1 |@ 0x55fb7b12981a main

master_1 |@ 0x7f504f0d0830 (неизвестно)

master_1 |@ 0x55fb7b1288b9 _start

master_1 |bash: строка 1: 7 прервана (ядро сброшено) /home/mesos-1.7.0/build/bin/mesos-master.sh --ip = 150.20.11.157 --work_dir = / var / run / mesos

Более того, когда я запускаю sudo docker-compose up на подчиненных узлах.Я получил эту ошибку:

slave_1 |F0123 11: 40: 06.878793 1 process.cpp: 1115] Не удалось инициализировать: не удалось выполнить привязку 0.0.0.0:5051: адрес уже используется

slave_1 |* Проверка трассировки стека сбоев: *

slave_1 |@ 0x7fee9d319b9c google :: LogMessage :: Fail ()

slave_1 |@ 0x7fee9d319ae0 google :: LogMessage :: SendToLog ()

slave_1 |@ 0x7fee9d3194b2 google :: LogMessage :: Flush ()

slave_1 |@ 0x7fee9d31c770
google :: LogMessageFatal :: ~ LogMessageFatal ()

slave_1 |Процесс @ 0x7fee9d1deed1 :: initialize ()

slave_1 |@ 0x55e99f661784 main

slave_1 |@ 0x7fee8f595830 (неизвестно)

slave_1 |@ 0x55e99f65f139 _stискусство

раб_1 | * Прервано в 1548243606 (время Unix), попробуйте "date -d @ 1548243606", если вы используете GNU date *

раб_1 | ПК: @ 0x7fee8f5ac196 (неизвестно)

раб_1 | * SIGSEGV (@ 0x0), полученный PID 1 (TID 0x7fee9f9f38c0) из PID 0; трассировка стека: *

раб_1 | @ 0x7fee8fee8390 (неизвестно)

раб_1 | @ 0x7fee8f5ac196 (неизвестно)

раб_1 | @ 0x7fee9d32055b google :: DumpStackTraceAndExit ()

раб_1 | @ 0x7fee9d319b9c google :: LogMessage :: Fail ()

раб_1 | @ 0x7fee9d319ae0 google :: LogMessage :: SendToLog ()

раб_1 | @ 0x7fee9d3194b2 google :: LogMessage :: Flush ()

раб_1 | @ 0x7fee9d31c770 google :: LogMessageFatal :: ~ LogMessageFatal ()

раб_1 | @ 0x7fee9d1deed1 process :: initialize ()

раб_1 | @ 0x55e99f661784 main

раб_1 | @ 0x7fee8f595830 (неизвестно)

раб_1 | @ 0x55e99f65f139 _start

раб_1 | I0123 11: 41: 07.818897 1 logging.cpp: 201] Регистрация уровня INFO началась!

раб_1 | I0123 11: 41: 07.819437 1 main.cpp: 349] Сборка: 2019-01-21 05:16:39 от

раб_1 | I0123 11: 41: 07.819470 1 main.cpp: 350] Версия: 1.7.0

раб_1 | I0123 11: 41: 07.823354 1 resolver.cpp: 69] Создание секретного распознавателя по умолчанию

раб_1 | E0123 11: 41: 07.927773 1 main.cpp: 483] EXIT со статусом 1: не удалось создать контейнерный контейнер: не удалось создать DockerContainerizer: не удалось создать докер: не удалось получить версию докера: не удалось выполнить 'docker -H unix: ///var/run/docker.sock - версия ': выход со статусом 127

Я много об этом искал и не мог этого понять. Не могли бы вы рассказать мне, как правильно написать docker compose для запуска Mesos и Spark cluster на докере?

Любая помощь будет принята с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Проблема решена.Я изменил docker compose таким образом, и Master и Slaves работают без проблем:

"docker-compose.yaml" в узле Master имеет следующий вид:

version: '3.7'
services:
zookeeper:
 image: ubuntu_mesos_spark_python3.6_client
 command: /home/zookeeper-3.4.12/bin/zkServer.sh start
 environment:
  ZOOKEEPER_SERVER_ID: 1
  ZOOKEEPER_CLIENT_PORT: 2188
  ZOOKEEPER_TICK_TIME: 2000
  ZOOKEEPER_INIT_LIMIT: 10
  ZOOKEEPER_SYNC_LIMIT: 5
  ZOOKEEPER_SERVERS: 0.0.0.0:2888:3888;150.20.11.157:2888:3888
 network_mode: host
 expose:
  - 2188
  - 2888
  - 3888
 ports:
  - 2188:2188
  - 2888:2888
  - 3888:3888

master:
image: ubuntu_mesos_spark_python3.6_client
command: bash -c "sleep 30; /home/mesos-1.7.0/build/bin/mesos-master.sh 
--ip=150.20.10.136 --work_dir=/var/run/mesos --hostname=x.x.x.x"  ##hostname : 
IP of the master node
restart: always
network_mode: host
depends_on:
 - zookeeper
environment:
- MESOS_HOSTNAME="150.20.11.136"
- MESOS_QUORUM=1
- MESOS_LOG_DIR=/var/log/mesos
expose:
 - 5050
 - 4040
 - 7077
 - 8080
ports:
 - 5050:5050
 - 4040:4040
 - 7077:7077
 - 8080:8080

Кроме того, "docker-compose.yaml "файл в подчиненном узле выглядит следующим образом:

 version: '3.7'
 services:
  zookeeper:
   image: ubuntu_mesos_spark_python3.6_client
   command: /home/zookeeper-3.4.12/bin/zkServer.sh start
   environment:
     ZOOKEEPER_SERVER_ID: 2
     ZOOKEEPER_CLIENT_PORT: 2188
     ZOOKEEPER_TICK_TIME: 2000
     ZOOKEEPER_INIT_LIMIT: 10
     ZOOKEEPER_SYNC_LIMIT: 5
     ZOOKEEPER_SERVERS: 150.20.11.136:2888:3888;0.0.0.0:2888:3888
   network_mode: host
   expose:
   - 2188 
   - 2888
   - 3888
   ports:
   - 2188:2188
   - 2888:2888
   - 3888:3888

 slave:
 image: ubuntu_mesos_spark_python3.6_client
 command: bash -c "sleep 30; /home/mesos-1.7.0/build/bin/mesos-slave.sh 
 --master=150.20.11.136:5050 --work_dir=/var/run/mesos  
 --systemd_enable_support=false"
 restart: always
 privileged: true
 network_mode: host
 depends_on:
 - zookeeper
 environment:
 - MESOS_HOSTNAME="150.20.11.157"
 #- MESOS_MASTER=172.28.10.136
 #- MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins #also in Dockerfile
 #- MESOS_CONTAINERIZERS=docker,mesos
 - MESOS_LOG_DIR=/var/log/mesos
 - MESOS_LOGGING_LEVEL=INFO
expose:
 - 5051
ports:
 - 5051:5051

Затем я запускаю" docker-compose up "в каждом узле, и они запускаются без проблем.

...