2016-07-12 9 views
-1

Javaでファイルジェネレータを使用すると、HDFSで移動する必要のあるローカルファイルシステムのディレクトリとファイルのストリームが作成されます。私はインターネットで検索し、私はFlumeを使うことができることを知ったが、私にそれをする方法を説明するリソースは見つけられなかった。これを実装する方法はありますか? Flumeを使用してローカルファイルシステムからHDFSにファイルをコピー

はありがとう

(あなたが環境について、コメントで述べたように)私は、同じマシン上でそれをやったことがないので、あなたは以下の構成を動作させるためのいくつかのテストや調整を行う必要があります
+0

ヒットを得るためには、さらに詳しい情報が必要です。まず最初に、複数のマシンを持っているか、同じノード上のすべてをやっていることです(例えば、テストのため)。ファイルの性質は何ですか:あなたは一度にすべてを読む静的ファイルか、または例えば時々作成されるログファイルなどですか? – Serhiy

+0

今のところ、私はテストのために同じノードを使用しています。ユーザーによって作成されたログファイルであり、作成ごとの間隔は数分から数時間までさまざまです。しかし、今私はHDFSが小さなファイルのストリーミングにどのように反応するかを見るためにランダムなファイルを生成しています。 – Yassine

答えて

0

ファイルが1つ(または複数のディレクトリ)で動的に作成されるため、Spooling Directory Source(ディレクトリごと)とHDFS Sinkを構成することをお勧めします。ファイルを置く

bin/flume-ng agent -n agent -c conf -f conf/test.conf 

スタート:水路のインストールフォルダにconfディレクトリ内のファイルtest.confを作成し、同様の構成に置く:エージェントを実行するには

# Name the components on this agent 
agent.sources = file-source 
agent.sinks = hdfs-sink 
agent.channels = mem-channel 

# Associate channel with source and sink 
agent.sources.file-source.channels = mem-channel 
agent.sinks.hdfs-sink.channel = mem-channel 

# Configure the source 
agent.sources.file-source.type = spooldir 
agent.sources.file-source.spoolDir = /tmp/spool/ 
agent.sources.file-source.fileHeader = true 

# Configure the sink 
agent.sinks.hdfs-sink.type = hdfs 
agent.sinks.hdfs-sink.hdfs.path = /tmp/log.log 
agent.sinks.hdfs-sink.hdfs.fileType = DataStream 
agent.sinks.hdfs-sink.hdfs.path = /flume/test/ 

# Use a channel which buffers events in memory 
agent.channels.mem-channel.type = memory 
agent.channels.mem-channel.capacity = 1000 
agent.channels.mem-channel.transactionCapacity = 100 

を、水路のインストールディレクトリで次のコマンドを実行します/tmp/spool/を開き、HDFSに表示されているかどうかを確認します。

システムに配布するときは、クライアントにAvro Sink、サーバーにAvro Sourceを使用することをお勧めします。そこにいるときに取得します。

関連する問題