【发布时间】:2019-11-08 04:51:49
【问题描述】:
我是大数据领域的新手,这是我第一次使用 Docker。我刚刚发现了这个惊人的项目:https://kiwenlau.com/2016/06/26/hadoop-cluster-docker-update-english/,它使用 Docker 创建了一个 hadoop 集群,由一个主服务器和两个从服务器组成。
完成所有安装后,我只运行容器,它们工作正常。有 start-containers.sh 文件可以帮助我为集群提供午餐。我决定安装一些像 sqoop 这样的工具来将我的本地关系数据库导入到 Hbase,这很好。之后,我通过点击
停止我电脑中的所有 Docker 容器docker stop $(docker ps -a -q)
第二天,当我尝试通过运行相同的脚本 ./start-container.sh 重新启动容器时,我发现了这个错误:
启动 hadoop-master 容器...
启动 hadoop-slave1 容器...
启动 hadoop-slave2 容器...
来自守护进程的错误响应:容器
e942e424a3b166452c9d2ea1925197d660014322416c869dc4a982fdae1fb0ad 是 没有运行
甚至,我午餐这个守护进程;我的集群的容器无法相互连接,我无法访问存储在 Hbase 上的数据。
首先谁能告诉我为什么这个守护进程不起作用。
PS:在 start-container.sh 文件中有一行在创建容器之前删除容器(如果它们存在),我删除了这一行,因为如果我不删除它们,每次我从头做所有事情。
经过搜索,我发现最好使用 docker compose,它可以帮助我将所有容器一起午餐。
但我找不到如何将我的 start-container.sh 文件转换为 docker-compose.yml 文件。这是同时吃我所有容器的最佳方式吗?这是 start-containers.sh 文件的内容:
#!/bin/bash
sudo docker network create --driver=bridge hadoop
# the default node number is 3
N=${1:-3}
# start hadoop master container
#sudo docker rm -f hadoop-master &> /dev/null
echo "start hadoop-master container..."
sudo docker run -itd \
--net=hadoop \
-p 50070:50070 \
-p 8088:8088 \
-p 7077:7077 \
-p 16010:16010 \
--name hadoop-master \
--hostname hadoop-master \
spark-hadoop:latest &> /dev/null
# sudo docker run -itd \
# --net=hadoop \
# -p 5432:5432 \
# --name postgres \
# --hostname hadoop-master \
# -e POSTGRES_PASSWORD=0000
# --volume /media/mobelite/0e5603b2-b1ad-4662-9869-8d0873b65f80/postgresDB/postgresql/10/main:/var/lib/postgresql/data \
# sameersbn/postgresql:10-2 &> /dev/null
# start hadoop slave container
i=1
while [ $i -lt $N ]
do
# sudo docker rm -f hadoop-slave$i &> /dev/null
echo "start hadoop-slave$i container..."
port=$(( 8040 + $i ))
sudo docker run -itd \
-p $port:8042 \
--net=hadoop \
--name hadoop-slave$i \
--hostname hadoop-slave$i \
spark-hadoop:latest &> /dev/null
i=$(( $i + 1 ))
done
# get into hadoop master container
sudo docker exec -it hadoop-master bash
【问题讨论】:
-
对我来说有点不清楚这个问题是关于什么的:是关于启动集群的一些问题(如开头所述)还是关于创建 docker-compose.yml文件?
-
@linux-fan 我有两个问题,第一个问题是“如何解决 docker 的启动问题,究竟为什么第一次所有容器都正常工作而第二次出现错误”我的第二个问题是“使用 docker-compose 运行容器更好吗?如果是,如何从我的启动脚本创建 docker-compose.yml”
标签: bash docker hadoop docker-compose