从本地加载到hdfs的最大方法是什么?

时间:2016-08-28 17:09:07

标签: hadoop

我的dir包含多个文件夹,每个目录中有N个文件。单个文件大小为15 GB。我不知道将文件从本地复制/移动到HDFS的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点(使用传统方法),例如,

  1. hdfs dfs -put /path/to/localdir/ hdfs://path/to/hdfsdir
  2. hdfs dfs -copyFromLocal /path/to/localdir/ hdfs://path/to/hdfsdir
  3. hdfs dfs -moveFromLocal /path/to/localdir/ hdfs://path/to/hdfsdir
  4. hadoop distcp file:///path/to/localdir/ hdfs://namenode:port/path/to/hdfsdir
  5. 选项1& 2在你的情况下是相同的。复制时间不会有任何差异。

    选项3可能需要一些时间,因为它将数据复制到HDFS文件系统(与-put相同),然后从本地文件系统中删除该文件。

    选项4是一个棘手的问题。它专为大型群间/群集内复制而设计。但是,您也可以使用相同的命令为本地文件提供本地文件URL,其中包含" file://"字首。它不是w.r.t distcp的最佳解决方案,因为该工具被设计为并行工作(使用MapReduce),并且由于文件在本地,它无法利用其强度。 (您可以尝试在群集节点上创建可能会提高distcp性能的挂载)