1

次の要件で HDFS にファイルを書き込むことができる Java プログラムのオプションを検討しています。

1) トランザクション サポート: 各ファイルは、書き込み時に、完全に正常に書き込まれたか、部分的なファイル ブロックが書き込まれずに完全に失敗しました。

2) 圧縮のサポート/ファイル形式: コンテンツを書き込むときに、圧縮の種類またはファイル形式を指定できます。

ここFSDataOutputStreamに示すを開いて、HDFS 上のファイルにデータを書き込む方法を知っています。上記のサポートを提供するすぐに使用できるソリューションのライブラリがいくつかあるかどうか疑問に思っています。

トランザクション、圧縮、ファイル ローテーションなどをサポートできる HDFS シンクを提供する Flume に出くわしました。しかし、ライブラリとして使用する API を提供していないようです。Flume が提供する機能は、ソース、チャネル、シンクなどの Flume アーキテクチャ コンポーネントと高度に結合されており、単独では使用できないようです。必要なのは、HDFS の読み込み部分だけです。

誰か良い提案はありますか?

4

1 に答える 1

0

Flume を HDFS への「ゲートウェイ」として使用することは、良い解決策になると思います。プログラムはデータを Flume に送信し (ソースによって提供されるインターフェースの 1 つを使用)、Flume は HDFS に書き込みます。

この方法では、HDFS とやり取りするための一連のカスタム コードをサポートする必要はありません。一方、Flume をインストールして構成する必要がありますが、私の経験でははるかに簡単です (インストールの推奨事項については、このコメントを参照してください)。

最後に、Flume HDFS シンクはオープンソース コンポーネントであるため、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 に答える