如何在保持基本名称的同时将文件发送到hdfs

时间:2017-05-02 08:45:06

标签: ftp hdfs cloudera hadoop2 flume

有人向我建议,什么是从不同来源发送文件并根据其名称将它们存储在hdfs中的最佳解决方案。我的情况是: 我有一个服务器,有大量的文件,我需要将它们发送到HDFS。 实际上我使用了水槽,在配置中我尝试使用spooldir和ftp作为源,但它们都有缺点 所以任何想法,怎么做?

1 个答案:

答案 0 :(得分:0)

使用hadoop put命令:

<强>把

用法:hadoop fs -put [-f] [-p] [-l] [-d] [ - | ..]。

将单个src或多个srcs从本地文件系统复制到目标文件系统。如果源设置为“ - ”

,还从stdin读取输入并写入目标文件系统

如果文件已经存在,则复制失败,除非给出了-f标志。

选项

-p:保留访问和修改时间,所有权和权限。 (假设权限可以跨文件系统传播)

-f:覆盖已存在的目的地。

-l:允许DataNode懒惰地将文件持久保存到磁盘,强制复制因子为1.此标志将导致持久性降低。小心使用。

-d:跳过创建带后缀的临时文件。 COPYING

<强>实施例

hadoop fs -put localfile / user / hadoop / hadoopfile

hadoop fs -put -f localfile1 localfile2 / user / hadoop / hadoopdir

hadoop fs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile

hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile从stdin读取输入。

退出代码:

成功时返回0,错误时返回-1。

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#put