如何在docker容器中保留HDFS数据

时间:2017-10-11 21:01:18

标签: hadoop docker hdfs

我有一个hadoop的码头图像。 (在我的情况下,它是https://github.com/kiwenlau/hadoop-cluster-docker,但问题适用于任何hadoop docker图像)

我正在运行docker容器,如下所示..

sudo docker run -itd --net=hadoop --user=root -p 50070:50070 \
-p 8088:8088 -p 9000:9000 --name hadoop-master --hostname hadoop-master \
kiwenlau/hadoop

我正在从主机ubuntu机器上运行的java中将数据写入hdfs文件系统。

FileSystem hdfs = FileSystem.get(new URI(hdfs://0.0.0.0:9000"), configuration)
hdfs.create(new Path("hdfs://0.0.0.0:9000/user/root/input/NewFile.txt")),

启动docker时应如何装入卷,以便“NewFile1.txt”保持不变。

容器内的“路径”对应于HDFS路径“/user/root/input/NewFile.txt”?

1 个答案:

答案 0 :(得分:4)

您应该检查hdfs-site.xml文件中的dfs.datanode.data.dir以了解数据存储到容器文件系统的位置

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///root/hdfs/datanode</value>
    <description>DataNode directory</description>
</property>

如果没有此文件/属性,默认位置将位于file:///tmp/hadoop-${user.name}/dfs/data

对于码头工人。请注意,运行进程的默认用户是root用户。

您还需要保留namenode文件,再次从该XML文件中看到

  

容器内的“路径”对应于HDFS路径“/user/root/input/NewFile.txt”

容器路径包含HDFS文件的块,而不是整个文件本身