gpt4 book ai didi

java - Hadoop 上的 HDFS 位置是什么?

转载 作者:可可西里 更新时间:2023-11-01 14:13:52 25 4
gpt4 key购买 nike

在学习了一些在线教程之后,我尝试在 Hadoop 中运行 WordCount 示例。然而,当我们执行以下命令时,我不清楚文件从我们的本地文件系统复制到 HDFS 的位置。

hadoop fs -copyFromLocal /host/tut/python-tutorial.pdf /usr/local/myhadoop-tmp/

当我执行以下命令时,我没有在 HDFS 上看到我的 python-tutorial.pdf 在这里列出。

hadoop fs -ls

这让我很困惑。我已经在 core-site.xml 中指定了“myhadoop-tmp”目录。我认为这个目录将成为 HDFS 目录,用于存储所有输入文件。

core-site.xml
=============
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/myhadoop-tmp</value>
<description>A base for other temporary directories.</description>
</property>

如果不是这种情况,我机器上的 HDFS 在哪里?当我们将输入文件从本地文件系统复制到 HDFS 时,什么配置决定了 HDFS 目录以及输入文件的去向?

最佳答案

这是在dfs.datanode.data.dir属性中设置的,默认为file://${hadoop.tmp.dir}/dfs/data (详见 here)。

但是,在您的情况下,问题是您没有使用完整路径 HDFS 中。相反,做:

hadoop fs -ls /usr/local/myhadoop-tmp/

请注意,您似乎还混淆了 HDFS 中的路径与本地文件系统中的路径。在 HDFS 中,您的文件位于 /usr/local/myhadoop-tmp/ 中。在您的本地系统中(并根据您的配置设置),它位于 /usr/local/myhadoop-tmp/dfs/data/ 下;在那里,有一个由 HDFS 定义的目录结构和命名约定,它独立于您决定使用的 HDFS 中的任何路径。此外,它不会有相同的名称,因为它被分成 block ,每个 block 都分配有一个唯一的 ID; block 的名称类似于 blk_1073741826

总结:数据节点使用的本地路径与您在 HDFS 中使用的路径不同。您可以进入本地目录查找文件,但您不应该这样做,因为您可能会搞乱 HDFS 元数据管理。只需使用 hadoop 命令行工具在 HDFS 中复制/移动/读取文件,使用您希望使用的任何逻辑路径(在 HDFS 中)。 HDFS 中的这些路径不需要绑定(bind)到您用于本地数据节点存储的路径(没有理由也没有这样做的好处)。

关于java - Hadoop 上的 HDFS 位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com