首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HDFS在Hadoop上的位置是什么?

HDFS在Hadoop上的位置是什么?
EN

Stack Overflow用户
提问于 2013-10-18 05:22:08
回答 1查看 29.9K关注 0票数 9

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

代码语言:javascript
复制
hadoop fs -copyFromLocal /host/tut/python-tutorial.pdf /usr/local/myhadoop-tmp/

当我执行以下命令时,我在HDFS上看不到我的python-tutorial.pdf。

代码语言:javascript
复制
hadoop fs -ls

这把我搞糊涂了。我已经在core-site.xml中指定了"myhadoop-tmp“目录。我认为这个目录将成为存储所有输入文件的HDFS目录。

代码语言:javascript
复制
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时,输入文件会放到哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-18 05:23:53

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

但是,在您的情况下,问题是您没有在HDFS中使用完整路径。取而代之的是:

代码语言:javascript
复制
hadoop fs -ls /usr/local/myhadoop-tmp/

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

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19437550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档