在阅读了一些在线教程之后,我正在尝试在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时,输入文件会放到哪里?
发布于 2013-10-18 05:23:53
这是在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中的任何路径。此外,它不会具有相同的名称,因为它被划分为多个块,并且每个块都被分配了一个惟一的ID;块的名称类似于blk_1073741826。
结论: datanode使用的本地路径与您在HDFS中使用的路径不同。您可以进入您的本地目录查找文件,但您不应该这样做,因为您可能会搞乱HDFS元数据管理。只需使用hadoop命令行工具在HDFS中复制/移动/读取文件,即可使用您希望使用的任何逻辑路径(在HDFS中)。HDFS中的这些路径不需要绑定到您在中用于本地datanode存储的路径(这样做既没有理由,也没有好处)。
https://stackoverflow.com/questions/19437550
复制相似问题