hdfs作为cloudera quickstart docker中的卷

eni9jsuy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(638)

我是hadoop和docker的新手。
我一直在扩展cloudera/quickstart docker映像docker文件,并希望挂载一个目录表单主机并将其Map到hdfs位置,以便提高性能并在本地持久保存数据。
当我用 -v /localdir:/someDir 一切正常,但那不是我的目标。但当我这么做的时候 -v /localdir:/var/lib/hadoop-hdfs datanode和namenode都无法启动,我得到:“cd/var/lib/hadoop hdfs:permission denied”。当我这么做的时候 -v /localdir:/var/lib/hadoop-hdfs/cache 没有权限被拒绝,但是datanode和namenode,或者其中一个在启动docker映像时无法启动,并且我在日志文件中找不到任何有关原因的有用信息。
可能有人遇到了这个问题,或者有其他解决方案将hdfs放到docker容器之外?

2wnc66cl

2wnc66cl1#

你应该跑一趟

docker exec -it "YOUR CLOUDERA CONTAINER" chown -R hdfs:hadoop /var/lib/hadoop-hdfs/
jfewjypa

jfewjypa2#

我也有同样的问题,我把整个事情都处理了 /var/lib 从容器到本地目录的目录
从终端,启动 cloudera/quickstart 不启动所有hadoop服务的容器:

docker run -ti cloudera/quickstart /bin/bash

在另一个终端中,将容器目录复制到本地目录:

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

相关问题