1

我正在查看 Java 程序中的选项,这些选项可以将文件写入 HDFS 并满足以下要求。

1)事务支持:每个文件在写入时,要么完全写入成功,要么完全失败,没有写入任何部分文件块。

2) Compression Support/File Formats:可在写入内容时指定压缩类型或文件格式。

我知道如何通过打开此处FSDataOutputStream显示的文件将数据写入 HDFS 上的文件。只是想知道是否有一些开箱即用的解决方案库可以提供我上面提到的支持。

我偶然发现了 Flume,它提供了可以支持事务、压缩、文件旋转等的 HDFS 接收器。但它似乎没有提供用作库的 API。Flume 提供的功能与 Flume 架构组件(如源、通道和接收器)高度耦合,似乎不能独立使用。我只需要在 HDFS 加载部分。

有没有人有一些好的建议?

4

1 回答 1

0

我认为使用 Flume 作为 HDFS 的“网关”将是一个很好的解决方案。您的程序将数据发送到 Flume(使用其提供的接口之一),Flume 写入 HDFS。

这样你就不需要支持一堆自定义代码来与 HDFS 交互。另一方面,您需要安装和配置 Flume,但根据我的经验,这要容易得多(有关安装建议,请参阅此评论)。

最后,Flume HDFS sink 是开源组件,因此您可以根据 Apache 许可条款自由重用其代码。在此处获取来源:https ://git-wip-us.apache.org/repos/asf?p=flume.git;a=tree;f=flume-ng-sinks/flume-hdfs-sink;h=b9414a2ebc976240005895e3eafe37b12fad4716 ;hb=主干

于 2013-05-06T23:21:26.867 回答