用于将文件从本地文件系统移动到 HDFS 的 Hadoop 工具 [关闭]
Posted
技术标签:
【中文标题】用于将文件从本地文件系统移动到 HDFS 的 Hadoop 工具 [关闭]【英文标题】:Hadoop tools for moving files from local file system to HDFS [closed] 【发布时间】:2014-08-12 00:24:36 【问题描述】:我正在就如何将数据从共享网络驱动器导入 HDFS 进行 POC。数据将位于共享驱动器上的不同文件夹中,每个文件夹将对应于 HDFS 上的不同目录。我查看了一些流行的工具来执行此操作,但其中大多数是用于移动小块数据而不是整个文件。这些是我找到的工具,还有其他的吗?
Apache Flume:如果只有少数生产服务器产生数据并且数据不需要实时写出,那么将数据移动到HDFS 通过 Web HDFS 或 NFS,尤其是在写入的数据量相对较少的情况下 - 每几个小时几个几 GB 的文件不会损害 HDFS。在这种情况下,规划、配置和部署 Flume 可能不值得。 Flume 的真正目的是实时推送事件,并且数据流是连续的,并且其容量相当大。 [来自 safari online 的 Flume book 和 flume cookbook]
Apache Kafka: 生产者-消费者模型:消息被持久化在磁盘上并在集群内复制以防止数据丢失。每个代理都可以处理数 TB 的消息而不会影响性能。
Amazon 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 并将文件移动到“已处理”目录。 我需要为多个目录执行此操作【问题讨论】:
【参考方案1】:用spooling directory source 试试flume。您没有提及您的数据量或速度,但我使用在边缘节点上运行的单个水槽代理,从本地 linux 文件系统到 Kerberized hdfs 集群进行了类似的 POC。
【讨论】:
【参考方案2】:试试dtingest,它支持从不同来源摄取数据,如共享驱动器、NFS、FTP 到 HDFS。他们还支持定期轮询目录。它应该可以免费试用下载。 它是在Apache Apex平台上开发的。
【讨论】:
【参考方案3】:查看Toad for Hadoop 1.5。最新版本引入了一个受 ftp 启发的 Local to HDFS Sync 界面,其中包含许多选项来帮助用户保持本地和 HDFS 环境同步。链接到博文here。
【讨论】:
以上是关于用于将文件从本地文件系统移动到 HDFS 的 Hadoop 工具 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章