用于将文件从本地文件系统移动到HDFS的Hadoop工具

时间:2014-08-12 00:24:36

标签: hadoop hdfs apache-apex

我正在做一个关于如何将数据从共享网络驱动器导入HDFS的POC。数据将位于共享驱动器上的不同文件夹中,每个文件夹将对应HDFS上的不同目录。我查看了一些流行的工具,但是大多数工具都用于移动小块数据,而不是整个文件。这些是我找到的工具,还有其他工具吗?

Apache Flume:如果只有少数生产服务器生成数据并且数据不需要实时写出,那么将数据移动到也可能也是有意义的HDFS通过Web HDFS或NFS,特别是如果写出的数据量相对较少 - 每几个小时几GB的几个文件不会伤害HDFS。在这种情况下,规划,配置和部署Flume可能不值得。 Flume实际上是为了实时推送事件,数据流是连续的,其数量相当大。 [来自safari online和flume cookbook的Flume书]

Apache Kafka:生产者 - 消费者模型:消息持久存储在磁盘上并在群集中复制,以防止数据丢失。每个代理都可以处理数TB的消息,而不会对性能产生影响。

亚马逊Kinesis :像Flume这样的实时数据的付费版

WEB HDFS:提交HTTP PUT请求,不会自动关注重定向,也不会发送文件数据。使用Location头中的URL和要写入的文件数据提交另一个HTTP PUT请求。 [http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#CREATE]

开源项目: https://github.com/alexholmes/hdfs-file-slurper

我的要求很简单:

  • 轮询目录中的文件,如果有文件,则将其复制到HDFS并将文件移动到“已处理”目录。
  • 我需要为多个目录执行此操作

3 个答案:

答案 0 :(得分:2)

尝试dtingest,它支持从不同来源(如共享驱动器,NFS,FTP到HDFS)提取数据。他们还定期支持轮询目录。它应该可用于免费试用版下载。 它是在Apache Apex平台上开发的。

答案 1 :(得分:1)

使用spooling directory source尝试使用水槽。你没有提到你的数据量或速度,但是我使用在边缘节点上运行的单个flume代理,从本地linux文件系统到Kerberized hdfs集群进行了类似的POC,结果很好。

答案 2 :(得分:-1)

查看Toad for Hadoop 1.5。最新版本引入了一个受ftp启发的Local to HDFS Sync界面,其中有许多选项可帮助用户保持本地和HDFS环境同步。链接到博文here