如何在Docker容器中保存HDFS数据

我有一个hadoop的docker形象。 (在我的情况是https://github.com/kiwenlau/hadoop-cluster-docker ,但问题适用于任何hadoop泊坞窗图像)

我正在运行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”。

容器内的哪个“path”对应于HDFSpath“/user/root/input/NewFile.txt”?

您应该检查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

对于docker工人来说。 请注意,运行这些进程的默认用户是root用户。

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

容器内的哪个“path”对应于HDFSpath“/user/root/input/NewFile.txt”

容器path保存HDFS文件的块,而不是整个文件本身