2013-12-17 11 views
6

私は012SSourceとHDFSシンクを設定するためにlinkに従った。エージェントを開始するために使用FlumeがHDFSに書き込まれない限り、

コマンド:

bin/flume-ng agent -n TwitterAgent -c conf -f conf/flume-conf.properties -Dflume.root.logger=DEBUG,console 

私はそれを行うことに成功したが、一つの問題は、今そこにあります。 flumeエージェントを停止するまで、出力は書き込まれません。それは私がflumeエージェントを殺すとHDFSに書き込まれます。

私はここで二つの質問があります。

1)水路エージェントを停止する方法を - CTRL + Cを行う以外の方法はあります。

2)私は、エージェントを強制終了することなく、外出先でHDFSに水銀剤を書き込むことができますか?

注:プロセスを強制終了した後、書き込まれるファイルの拡張子は.tmpです。それは期待されていますか?

EDIT:書かれてきているどのくらいのデータ

TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000 
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600 

答えて

7

?私はデフォルトの設定パラメータでHDFSへのフラッシュをトリガーするのに十分な量を収集していないので、その執筆ではないと賭けています。 number of ways to configure the HDFS sinkがあり、予測可能な方法でフラッシュされます。いくつかのイベント(hdfs.rollCount)、間隔(hdfs.rollInterval)、またはサイズ(hdfs.rollSize)でフラッシュするように設定できます。何が起こっているのは、あなたがエージェントを殺すとき、それが現在何をしているのかを洗い流すことです。だから、基本的にあなたはそれを強制終了します。

hdfs.batchSizeを下げてみることもできます。

Hadoopは大きなファイルが好きです。一般的には、たくさんの小さなファイルを避けてください。だからあまりにも頻繁に転がることにここで注意してください。


あなたのようにフォアグラウンドで実行すると、ctrl + cまたはkillが唯一の停止方法です。生産では、あなたはおそらく/停止/再起動を開始していinitスクリプトを使用する必要があります。

+0

ありがとう、それは私が推測するすべてを説明します。私はロールパラメータで私の質問を編集しました。私のrollCountは10000、rollIntervalは600です。私はこれらの値を減らして、やり直してみます。 :) –

+0

1日に1つのファイルを作成したいので、ロールポリシーは使用できませんが、batchSizeは1で、まだOPの問題があります。これらは私のロール構成です:round = true、roundValue = 1、roundUnit = day、rollInterval = 0、rollSize = 0、rollCount = 0.あらゆるイベントでHDFSにフラッシュするにはどうすればよいですか? – ffleandro

1

はあなたのドナルドやPraveenさんありがとう:

私は私の水路-confファイルに

TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000 
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000 

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600 

今、水路、このエントリを削除して、以下を設定することで問題を解決できます外出先でHDFSに書き込んでいます。

関連する問題