2016-11-10 6 views
0

flumeを使用してリモートファイルをhdfsにコピーする用途があります。また、コピーしたファイルをHDFSブロックサイズ(128MB/256MB)に合わせる必要があります。リモートデータの合計サイズは33GBです。flumeファイルサイズに基づいてローリング時にデータをhdfsにコピーする時間がかかります

リモートデータをhdfsにコピーするためにavro sourceとsinkを使用しています。同様にシンク側から私はリモートマシンからファイルをコピーし、それをhdfs(ファイルサイズ128/256 MB)に保存するためにファイルサイズローリング(128,256)を行っています。flumeは2分の平均を取っています。

水路構成: アブロソース(リモートマシン)

### Agent1 - Spooling Directory Source and File Channel, Avro Sink ### 
# Name the components on this agent 
Agent1.sources = spooldir-source 
Agent1.channels = file-channel 
Agent1.sinks = avro-sink 

# Describe/configure Source 
Agent1.sources.spooldir-source.type = spooldir 
Agent1.sources.spooldir-source.spoolDir =/home/Benchmarking_Simulation/test 


# Describe the sink 
Agent1.sinks.avro-sink.type = avro 
Agent1.sinks.avro-sink.hostname = xx.xx.xx.xx #IP Address destination machine 
Agent1.sinks.avro-sink.port = 50000 

#Use a channel which buffers events in file 
Agent1.channels.file-channel.type = file 
Agent1.channels.file-channel.checkpointDir = /home/Flume_CheckPoint_Dir/ 
Agent1.channels.file-channel.dataDirs = /home/Flume_Data_Dir/ 
Agent1.channels.file-channel.capacity = 10000000 
Agent1.channels.file-channel.transactionCapacity=50000 

# Bind the source and sink to the channel 
Agent1.sources.spooldir-source.channels = file-channel 
Agent1.sinks.avro-sink.channel = file-channel 

アブロシンク(HDFSを実行しているマシン)

### Agent1 - Avro Source and File Channel, Avro Sink ### 
# Name the components on this agent 
Agent1.sources = avro-source1 
Agent1.channels = file-channel1 
Agent1.sinks = hdfs-sink1 

# Describe/configure Source 
Agent1.sources.avro-source1.type = avro 
Agent1.sources.avro-source1.bind = xx.xx.xx.xx 
Agent1.sources.avro-source1.port = 50000 

# Describe the sink 
Agent1.sinks.hdfs-sink1.type = hdfs 
Agent1.sinks.hdfs-sink1.hdfs.path =/user/Benchmarking_data/multiple_agent_parallel_1 
Agent1.sinks.hdfs-sink1.hdfs.rollInterval = 0 
Agent1.sinks.hdfs-sink1.hdfs.rollSize = 130023424 
Agent1.sinks.hdfs-sink1.hdfs.rollCount = 0 
Agent1.sinks.hdfs-sink1.hdfs.fileType = DataStream 
Agent1.sinks.hdfs-sink1.hdfs.batchSize = 50000 
Agent1.sinks.hdfs-sink1.hdfs.txnEventMax = 40000 
Agent1.sinks.hdfs-sink1.hdfs.threadsPoolSize=1000 
Agent1.sinks.hdfs-sink1.hdfs.appendTimeout = 10000 
Agent1.sinks.hdfs-sink1.hdfs.callTimeout = 200000 


#Use a channel which buffers events in file 
Agent1.channels.file-channel1.type = file 
Agent1.channels.file-channel1.checkpointDir = /home/Flume_Check_Point_Dir 
Agent1.channels.file-channel1.dataDirs = /home/Flume_Data_Dir 
Agent1.channels.file-channel1.capacity = 100000000 
Agent1.channels.file-channel1.transactionCapacity=100000 


# Bind the source and sink to the channel 
Agent1.sources.avro-source1.channels = file-channel1 
Agent1.sinks.hdfs-sink1.channel = file-channel1 

両方のマシン間のネットワーク接続が686 Mbpsです。

誰かが設定や代替設定で何か問題があるかどうかを確認して、コピーに時間がかからないように助けてください。

答えて

1

両方のエージェントはファイルチャネルを使用します。したがって、HDFSに書き込む前に、データはディスクに2回書き込まれました。エージェントごとにメモリチャネルを使用して、パフォーマンスが向上しているかどうかを確認できます。

+0

メモリチャネルを使用してパフォーマンスを確認しようとしています。ファイルチャネルを使用しています。これは耐久チャネルであり、本番環境で実行したいからです。 – mandar

+0

@マンダル私はあなたがファイルチャネルを使用する場合は、(メモリチャネルと比較して)パフォーマンスの低下の問題に直面する必要があります恐れて、 –

関連する問題