【问题标题】:How to use Flume's Kafka Channel without specifying a source如何在不指定源的情况下使用 Flume 的 Kafka Channel
【发布时间】:2017-12-28 18:15:06
【问题描述】:

我有一个现有的 Kafka 主题和一个从那里读取并写入 HDFS 的水槽代理。我想重新配置我的水槽代理,使其远离现有设置; Kafka Source,文件 Channel 到 HDFS Sink,以使用 Kafka Channel。

我在cloudera documentation 中读到,可以通过仅使用 Kafka 通道和 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 快速入门 VM 2.6.3
  • Flume 版本 1.5.2
  • HDFS 目录确实存在
  • ps -ef | grep flume 仅在我添加了 kafka 源后才返回一个进程,但这不可能是正确的,因为这样做会为发布到该主题的任何消息创建一个无限循环。

是否可以只使用 Kafka Channel 和 HDFS Sink,还是我需要使用 kafka-source 但更改一些其他配置以防止消息无限循环?

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

【问题讨论】:

  • flume 启动时出现什么错误?
  • 机箱上没有启动水槽进程,因此没有任何水槽日志。通过 Ambari 启动 Flume 服务也不会产生任何错误消息。
  • 您需要手动启动代理,以找出启动时遇到的水槽错误。
    $ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

标签: apache-kafka flume flume-ng


【解决方案1】:

经过一番挖掘后,我注意到 Ambari 没有为指定的代理创建任何 Flume conf 文件。如果我指定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 创建水槽配置并启动代理。

【讨论】:

    【解决方案2】:

    这并不能直接回答您关于 Flume 的问题,但总的来说,由于您已经在使用 Apache Kafka,因此最好使用 Kafka Connect(它是 Apache Kafka 的一部分)来解决此模式。 根据this guide here,有一个简单易用的 Kafka Connect HDFS 连接器。

    【讨论】:

    • 谢谢罗宾,这是战略计划,但现在我需要这个作为短期解决方案。我也很想知道这是如何实现的。
    • Confluent 连接器不是 Kafka Connect 的一部分。您的链接假定​​ Confluent Kafka 可用
    • 也可以standalone
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多