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