ファイルcall.logのデータをkafkaに収集し、kafkaコンシューマーコンソールからデータを取得します。
Flume + kafkaは、ビッグデータ用の古典的なログ収集ツールです。ファイルデータは、flumeによって収集され、kafkaを通じてサブスクライブおよびパブリッシュされてキャッシュされます。これは、メッセージミドルウェアとして非常に適しています。
準備
飼育係、kafkaクラスターを開始します。
./bin/zkServer.sh start
./bin/kafka-server-start.sh /config/server.properties
kafkaでctテーマを作成し、パーティションの数とコピーの数を設定します。これらの情報は、飼育係に保存されます。
./bin/kafka-topics.sh --zookeeper master:2181 --create --topic ct --partitions 3 --replication-factor 2
Kafkaコンソールコンシューマーを起動すると、このプロセスで収集されたデータを確認できます。
./bin/kafka-console-consumer.sh --zookeeper master:2181 --topic ct --from-beginning
flumeを起動します。ここで、flume-kafka.conf構成ファイルは以下のとおりです。
./bin/flume-ng agent --conf ./conf/ --name a1 --conf-file ./flume-kafka.conf
flume-kafka.conf
# define
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F -c +0 /usr/local/data/call.log
a1.sources.r1.shell = /bin/bash -c
# sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers = master:9092,slave1:9092,slave2:9092
a1.sinks.k1.kafka.topic = ct
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
# channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# bind
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
まとめ
- カフカの操作は、飼育係を通過する必要があることがわかります。飼育係は、カフカクラスターにおける飼育係の役割をよく理解できます。
- 実行後、call.logファイルのデータがkafkaに送信されます。どのノードでも、kafkaを介してコンシューマーを作成し、トピックトピックを取得するとデータが取得されます。
- Flumeシンクには直接カフカソースがあり、2つを簡単に組み合わせることができます