我对 hadoop 和 docker 都很陌生。
我一直致力于扩展 cloudera/quickstart docker 镜像 docker 文件,并希望从主机挂载一个目录并将其映射到 hdfs 位置,以便提高性能并将数据保存在本地。
当我在任何地方安装卷时-v /localdir:/someDir
一切都很好,但这不是我的目标。但当我这样做时-v /localdir:/var/lib/hadoop-hdfs
datanode 和 namenode 都无法启动,我得到:“cd /var/lib/hadoop-hdfs:权限被拒绝”。当我这样做时-v /localdir:/var/lib/hadoop-hdfs/cache
没有权限被拒绝,但 datanode 和 namenode 或其中之一在启动 docker 映像时无法启动,并且我在日志文件中找不到有关其原因的任何有用信息。
也许有人遇到过这个问题,或者有其他解决方案将 hdfs 放在 docker 容器之外?
我有同样的问题,我已经解决了复制整个问题的情况/var/lib
从容器目录到本地目录
从终端启动cloudera/quickstart
没有启动所有hadoop服务的容器:
docker run -ti cloudera/quickstart /bin/bash
在另一个终端将容器目录复制到本地目录 https://docs.docker.com/engine/reference/commandline/cp/
:
mkdir /local_var_lib
docker exec your_container_id tar Ccf $(dirname /var/lib) - $(basename /var/lib) | tar Cxf /local_var_lib -
将所有文件从容器复制到本地目录后,停止容器并指向/var/lib
到新的目标。确保/local_var_lib
目录包含 hadoop 目录(hbase、hadoop-hdfs、oozie、mysql 等)。
启动容器:
docker run --name cloudera \
--hostname=quickstart.cloudera \
--privileged=true \
-td \
-p 2181:2181 \
-p 8888:8888 \
-p 7180:7180 \
-p 6680:80 \
-p 7187:7187 \
-p 8079:8079 \
-p 8080:8080 \
-p 8085:8085 \
-p 8400:8400 \
-p 8161:8161 \
-p 9090:9090 \
-p 9095:9095 \
-p 60000:60000 \
-p 60010:60010 \
-p 60020:60020 \
-p 60030:60030 \
-v /local_var_lib:/var/lib \
cloudera/quickstart /usr/bin/docker-quickstart
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)