HDFS作为cloudera quickstart docker中的音量

问题描述 投票:4回答:2

我对hadoop和docker都很新。

我一直在努力扩展cloudera / quickstart docker图像docker文件,并希望安装目录表单主机并将其映射到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容器之外?

hadoop docker hdfs cloudera bigdata
2个回答
0
投票

你应该跑一个

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

0
投票

我有同样的问题,我已经管理了将整个/var/lib目录从容器复制到本地目录的情况

从终端,启动cloudera/quickstart容器,而不启动所有hadoop服务:

docker run -ti cloudera/quickstart /bin/bash

在另一个终端copy the container directory to the local directory

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
© www.soinside.com 2019 - 2024. All rights reserved.