我正在做一个关于如何将数据从共享网络驱动器导入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
我的要求很简单:
答案 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。