FlumeNGについて - hadoopアドベントカレンダー2011
hadoopアドベントカレンダー2011 22日目を書きます。
私からはFlumeNGについて、
とりあえず理解できたところまで紹介します。
#間違えているところがあればすみません。
参考にしたページはこちら
https://cwiki.apache.org/FLUME/flume-ng.html
Apache Flume - Architecture of Flume NG : Apache Flume
また、私はまだ見終わっていないのですが、
12/16にアメリカで行われたFlumeNGに関する勉強会(?)が公開されています。
Docにはかかれていないような質問がされている気がします。
Flume NG Teach-In - 80 mins - December 16, 2011 on Vimeo
まず、
①FlumeNGは何者か?
FlumeNGは現在リリースされているFlumeをリファクタしてできるものです。
現在のFlume(以降FlumeOG)からbranch切って開発されています。
FlumeOGは影響範囲の大きいCoreな部分を修正しないと直らないバグを抱えています。
それらを今のうちに直そうとしているようです。
私が実際にFlumeOGを使ってみた感想ですが、
確かにFlumeOGのバグは若干多い気がします。
・FlumeNodeが多いとFlumeの設定中(exec config)にフリーズする
・設定の上書きしようとすると必ず例外(InterruptedException)が出て、設定反映できないことがある
・Collectorが起動直後、高い確率で死ぬ(待ち受けポートが閉じる)
…
大体はissueの記事を見つけ、運用で回避可能だと分かったのですがね。
②FlumeNGで何が変わるか?
ざっくり大きいものを。
(1)SourceとSinkの間に「Channel」ができます。
⇒簡単に言えばキューです。
Sourceからきたデータを一時的にChannelに蓄えてからSinkに渡すことで、
SourceからSinkへ確実にデータを受け渡します。
FlumeOGではPumperThreadというスレッド内で1イベントごとに受け渡ししているのですが、
SourceがSinkを、またはSinkがSourceをブロックしてしまうことがあるそうで、
Open()またはClose()するときに影響を出す(タイムアウトしてスレッドに割り込もうとする)ケースがあるそうです。
(2)データの送信先を「Group」で指定します。
⇒FlumeNGではマシンのホスト名を指定する必要がありましたが、
FlumeNGが使用するホスト名とFlumeNode名はDocとして別にまとめて管理する必要があり、
そこでFlumeNGでは、データの送信先・受信元の指定をGroupとして名前を指定することで解決できます。
(3)設定を読み込む/溜め込むインターフェース追加
⇒FlumeOGで問題になったCore部分にメスを入れた結果、できた機構と思われます。
冒頭で私が書いたバグから分かる通り、
FlumeNGには設定読み込み/反映のときに起こるバグがあります。
その他「LifecycleAware」というものがあり、
論理Nodeの状態・ライフサイクルを管理する(?)クラスが増えるようですが、
Docが「TODO」となっているので、詳細は不明です。
以下の図はオマケです。
FlumeNG読んで読み取れたところをクラス図に起こしてみました。
#乏しい英語読解力で起こした図のため、間違えている箇所がある気がします。
#参考程度に。
③FlumeNGはいつリリースされるか?
FlumeUserMLで質問している人がいました。
その回答が以下のリンクになります。
Re: Flume 0.9.x vs Flume NG
回答者のEric Sammerさん(Flumeコミッター)としては、
アルファ版が早ければ今年中、
安定版は2012の上旬に出したいそうです。
以上です。