【问题标题】:How to persist HDFS data in docker container如何在 docker 容器中持久化 HDFS 数据
【发布时间】:2017-10-11 21:01:18
【问题描述】:

我有一个用于 hadoop 的 docker 映像。 (在我的例子中是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”?

【问题讨论】:

    标签: hadoop docker hdfs


    【解决方案1】:

    您应该检查 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 文件的块,而不是整个文件本身

    【讨论】:

    • 谢谢 v.much cricket_007 我从 hdfs-site.xml 查找了 datanode、namenode 值。然后我将目录安装在我的 docker run 中,如下所示。 docker run -itd .. -v ~/mynamenode:/root/hdfs/namenode \ -v ~/mydatanode:/root/hdfs/datanode \ --privileged \ 现在当我启动容器时,执行它并发出命令hadoop fs -mkdir test 我收到错误 Call from hadoop-master/172.18.0.2 to hadoop-master:9000 failed on connection exception: java.net.ConnectionException: Connection denied。我正在特权模式下运行容器。我错过了什么吗?
    • 看起来是网络问题。如果您使用的是 Mac/Windows,则网络不像本地 Linux Docker 容器那样工作
    • @Jzl 喜欢垃圾邮件的人有时会贬低我 ;)
    • 谢谢 Mr.Cricket.. 我通过使用格式化命名节点解决了这个问题。就我的问题而言,您的回答是正确的,我看到 hdfs 数据被保留了。我将您的答案标记为已接受。
    • 对不起,不知道为什么你的答案被否决了.. 它完美。
    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 2018-10-05
    • 2016-04-09
    • 2016-12-20
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多