如何将文件从HDFS复制到本地文件系统


135

如何将文件从HDFS复制到本地文件系统。文件下没有文件的物理位置,甚至目录也没有。我如何将它们移到我的本地进行进一步的验证。我已通过winscp尝试过。

Answers:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. 将您的Web浏览器指向HDFS WEBUInamenode_machine:50070),浏览到要复制的文件,向下滚动页面,然后单击下载文件

完美的tariq,我明白了,文件下没有文件的物理位置,甚至目录也没有。bin / hadoop dfs -ls / use / hadoop / myfolder我可以查看文件,从我得到的信息如下:要检查文件,可以将其从HDFS复制到本地文件系统,尽管我可以将它们从winscp中移出
Surya 2013年

2
我需要再次提及tariq,非常感谢您为我们付出的时间和知识。非常感谢 。你确实给予了很多支持,这给像我这样的新生带来了很多信心。
Surya 2013年

1
我懂了。如果希望查看文件的内容或在Webui上打开文件,则可以实际使用hdfs cat命令。这样可以避免您将文件下载到本地fs。别客气。而且,如果您对问题的答案感到100%满意,则可以标记问题,以便其他人可以从中受益。
Tariq 2013年

2
仅添加到我的lat注释中,如果它是二进制文件,则cat不会向您显示实际内容。要查看二进制文件的内容,可以使用:bin / hadoop fs -text / path / to / file
Tariq 2013年

1
似乎是一个错误(已修复)。查看答案。
塔里克(Tariq)

27

在Hadoop 2.0中,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

哪里,

  • hdfs_input_file_path 也许从 http://<<name_node_ip>>:50070/explorer.html

  • output_path 是文件要复制到的本地路径。

  • 您也可以get代替copyToLocal


15

为了将文件从HDFS复制到本地文件系统,可以运行以下命令:

hadoop dfs -copyToLocal <input> <output>

  • <input>:要复制的HDFS目录路径(例如/ mydata)
  • <output>:目标目录路径(例如〜/ Documents)

1
这似乎对我不起作用。它总是说找不到<input>文件。我正在使用具有
centos

@SutharMonil您确定文件确实存在吗?您可以通过浏览hadoop fs -ls吗?
Dennis Jaheruddin

6

您可以通过这两种方式来完成。

1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>

例如:

我的文件位于/sourcedata/mydata.txt中, 我想在此路径/ user / ravi / mydata中将文件复制到本地文件系统

hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/

3

如果您的源“文件”分散在同一个目录树中的多个文件中(可能是map-reduce的结果),则可以使用以下命令将其复制到本地文件中:

hadoop fs -getmerge /hdfs/source/dir_root/ local/destination

这应该被接受。这是大多数人想要的,而不是分割的文件。
詹姆斯·奥布莱恩

2

这对我的Ubuntu虚拟机实例很有效。

hdfs dfs -copyToLocal [hadoop目录] [本地目录]


0

如果您使用的是docker,则必须执行以下步骤:

  1. 将文件从hdfs复制到namenode(hadoop fs -get output / part-r-00000 / out_text)。“ / out_text”将存储在名称节点上。

  2. 通过(docker cp namenode:/ out_text output.txt)将文件从namenode复制到本地磁盘

  3. output.txt将存在于您当前的工作目录中


-3
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path 

1
hdfs dfs -put是用于将文件从本地FS推送到HDFS的命令。hdfs dfs -get是正确的选项
b_rousseau
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.