【问题标题】:Moving data to hdfs using copyFromLocal switch使用 copyFromLocal 开关将数据移动到 hdfs
【发布时间】:2013-02-05 09:57:37
【问题描述】:

我不知道这里发生了什么,但我正在尝试将一个简单文件从本地文件系统中的目录复制到为 hdfs 指定的目录。

在我的 hdfs-site.xml 中,我使用以下属性指定 hdfs 的目录将是 /home/vaibhav/Hadoop/dataNodeHadoopData -

<name>dfs.data.dir</name>
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value>

and 

<name>dfs.name.dir</name>
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value>

我正在使用以下命令 -

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data /home/vaibhav/Hadoop/dataNodeHadoopData

将文件 u.data 从它的本地文件系统位置复制到我指定为 Hdfs 目录的目录。但是当我这样做时,什么都没有发生——没有错误,什么都没有。并且没有文件被复制到 hdsf。难道我做错了什么?可能存在任何权限问题?

需要建议。

我使用的是伪分布式单节点模式。

另外,在相关说明中,我想问一下,在我的 map reduce 程序中,我已将配置设置为指向 inputFilePath 作为 /home/vaibhav/ml-100k/u.data。那么它不会自动将文件从给定位置复制到 hdfs 吗?

【问题讨论】:

  • 我可以测量将数据从本地文件系统传输到 HDFS 所需的时间吗?

标签: hadoop hdfs


【解决方案1】:

我相信dfs.data.dir 和dfs.name.dir 必须指向两个不同的现有目录。此外,请确保您在更改配置中的目录后格式化了 namenode FS。

在复制到 HDFS 时,您错误地指定了目标。将本地文件复制到 HDFS 的正确语法是:

bin/hadoop dfs -copyFromLocal <local_FS_filename> <target_on_HDFS>

例子:

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data my.data

这将在您用户的 HDFS 主目录中创建一个文件 my.data。 在将文件复制到 HDFS 之前,请确保您首先掌握列出目录内容和目录创建。

【讨论】:

  • 酷。我尝试过这个。我将配置更改为指向两个不同的目录位置,格式化名称节点,启动所有守护进程并按照您的建议尝试 copyFromLocal。现在它说 - org.apache.hadoop.Security.AccessControlException : Permission denied : user = root, access = write, inode = "":vaibhav:supergroup:rwxr-xr-x
  • 所以我给了 chmod 777 -R 到 hdfs 目录(/home/vaibhav/Hadoop/dataNodeHadoopData/)。但现在还有一些其他错误 - 它说 File /user/vaibhav/u.data 只能复制到 0 个节点,而不是 1 个。我不知道它为什么要写入这个文件夹!
  • 默认文件被复制到用户在 HDFS 上的主目录。在你的情况下/user/vaibhav。有关复制错误,请参阅 this 和 runtime errors part if hadoop wiki。很可能是 hadoop dfs 守护进程没有正确启动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 2012-05-18
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2014-11-25
  • 2015-05-06
相关资源
最近更新 更多