0

私は Flume-Ng を初めて使用し、ファイルを追跡するのに助けが必要です。リモートで実行されているflumeでhadoopを実行しているクラスターがあります。パテを使用してこのクラスターと通信します。自分の PC でファイルを追跡し、クラスター内の HDFS に配置したいと考えています。これには次のコードを使用しています。

#flume.conf: http source, hdfs sink
# Name the components on this agent 

tier1.sources = r1
tier1.sinks = k1
tier1.channels = c1


# Describe/configure the source
tier1.sources.r1.type = exec
tier1.sources.r1.command = tail -F /(Path to file on my PC)


# Describe the sink
tier1.sinks.k1.type = hdfs
tier1.sinks.k1.hdfs.path = /user/ntimbadi/flume/
tier1.sinks.k1.hdfs.filePrefix = events-
tier1.sinks.k1.hdfs.round = true
tier1.sinks.k1.hdfs.roundValue = 10
tier1.sinks.k1.hdfs.roundUnit = minute



 # Use a channel which buffers events in memory
 tier1.channels.c1.type = memory
 tier1.channels.c1.capacity = 1000
 tier1.channels.c1.transactionCapacity = 100


 # Bind the source and sink to the channel
 tier1.sources.r1.channels = c1
 tier1.sinks.k1.channel = c1

間違いはソースにあると思います。この種類のソースは、検索するホスト名または IP を使用しません (この場合は私の PC である必要があります)。Flume を使用してリモートにある HDFS にファイルをアップロードするために、PC 上のファイルを追跡する方法についてのヒントを教えてください。

4

1 に答える 1

0

構成内のソースは、flume のエージェントexecを開始するマシンで実行されます。tier1別のマシンからデータを収集したい場合は、そのマシンでも Flume エージェントを起動する必要があります。要約すると、次のものが必要です。

  • remote1ソースを持つリモート マシン上で実行されるエージェント ( ) avro。コレクタ エージェントからのイベントをリッスンし、アグリゲータのように動作します。
  • ソースを持ち、シンク経由でリモート エージェントにデータを送信する(コレクタのように動作する)local1マシン上で実行されるエージェント ( )。execavro

または、代わりに、ローカル マシンで 1 つの Flume エージェントのみを実行し (投稿した構成と同じ)、hdfs パスを "hdfs://REMOTE_IP/hdfs/path" として設定することもできます (ただし、これが確実に実行されるかどうかは完全にはわかりません)。仕事)。

編集: 以下は、2 エージェントのシナリオのサンプル構成です (変更しないと機能しない場合があります)。

remote1.channels.mem-ch-1.type = memory

remote1.sources.avro-src-1.channels = mem-ch-1
remote1.sources.avro-src-1.type = avro
remote1.sources.avro-src-1.port = 10060
remote1.sources.avro-src-1.bind = 10.88.66.4 /* REPLACE WITH YOUR MACHINE'S EXTERNAL IP */

remote1.sinks.k1.channel = mem-ch-1
remote1.sinks.k1.type = hdfs
remote1.sinks.k1.hdfs.path = /user/ntimbadi/flume/
remote1.sinks.k1.hdfs.filePrefix = events-
remote1.sinks.k1.hdfs.round = true
remote1.sinks.k1.hdfs.roundValue = 10
remote1.sinks.k1.hdfs.roundUnit = minute

remote1.sources = avro-src-1
remote1.sinks = k1
remote1.channels = mem-ch-1

local1.channels.mem-ch-1.type = memory

local1.sources.exc-src-1.channels = mem-ch-1
local1.sources.exc-src-1.type = exec
local1.sources.exc-src-1.command = tail -F /(Path to file on my PC)

local1.sinks.avro-snk-1.channel = mem-ch-1
local1.sinks.avro-snk-1.type = avro
local1.sinks.avro-snk-1.hostname = 10.88.66.4 /* REPLACE WITH REMOTE IP */
local1.sinks.avro-snk-1.port = 10060

local1.sources = exc-src-1
local1.sinks = avro-snk-1
local1.channels = mem-ch-1
于 2013-06-07T06:52:37.167 に答える