如何在不指定源的情况下使用Flume的Kafka频道

问题描述 投票:3回答:2

我有一个现有的Kafka主题和一个从那里读取并写入HDFS的水槽代理。我想重新配置我的水槽代理,这样它就会远离现有的设置;一个Kafka源,文件通道到HDFS接收器,使用Kafka频道。

我在cloudera documentation中读到,只有使用Kafka Channel和HDFS接收器(没有水槽源)才能实现这一目标..(除非我得到了错误的结束。)所以我尝试创建这个配置但是它不工作。它甚至没有启动盒子上的水槽过程。

# Test
test.channels = kafka-channel
test.sinks = hdfs-sink

test.channels.kafka-channel.type = 
org.apache.flume.channel.kafka.KafkaChannel
test.channels.kafka-channel.kafka.bootstrap.servers = localhost:9092
test.channels.kafka-channel.kafka.topic = test
test.channels.kafka-channel.parseAsFlumeEvent = false

test.sinks.hdfs-sink.channel = kafka-channel
test.sinks.hdfs-sink.type = hdfs
test.sinks.hdfs-sink.hdfs.path = hdfs://localhost:8082/data/test/

我正在使用:

  • HDP Quickstart VM 2.6.3
  • Flume版本1.5.2
  • HDFS目录确实存在
  • ps -ef | grep flume只在我添加kafka-source时返回一个进程,但这不可能是正确的,因为这样做会为发布到主题上的任何消息创建一个无限循环。

是否可以仅使用Kafka频道和HDFS接收器,或者我是否需要使用kafka-source但更改一些其他配置以防止无限循环的消息?

Kafka-source - > kafka-channel - > HDFS Sink - 这对我来说似乎不对。

apache-kafka flume flume-ng
2个回答
1
投票

在挖了一下后,我注意到Ambari没有为指定的代理创建任何水槽配置文件。如果我指定test.sources = kafka-source,Ambari似乎只创建/更新水槽配置。一旦我将其添加到水槽配置中(通过ambari),就会在盒子上创建配置,并且水槽代理成功启动。

最终的水槽配置看起来像这样:

test.sources=kafka-source
test.channels = kafka-channel
test.sinks = hdfs-sink

test.channels.kafka-channel.type = org.apache.flume.channel.kafka.KafkaChannel
test.channels.kafka-channel.kafka.bootstrap.servers = localhost:9092
test.channels.kafka-channel.kafka.topic = test
test.channels.kafka-channel.parseAsFlumeEvent = false

test.sinks.hdfs-sink.channel = kafka-channel
test.sinks.hdfs-sink.type = hdfs
test.sinks.hdfs-sink.hdfs.path = hdfs:///data/test

注意我没有设置源上的任何属性(这会导致我在我的问题中提到的无限循环问题),它只需要提及所以Ambari创建了flume配置并启动代理。


0
投票

这并没有直接回答你关于Flume的问题,但总的来说,因为你已经在使用Apache Kafka,所以使用Kafka Connect(它是Apache Kafka的一部分)可以最好地解决这种模式。根据this guide here,有一个Kafka Connect HDFS连接器,使用简单。

© www.soinside.com 2019 - 2024. All rights reserved.