kafka batch.size怎么设置_基于flume的高可用kafka数据投递管道架构与实践

业务场景:

需要从一个Kafka集群投递消息到多个Kafka 集群,这个过程可能只是对某些topic进行分发;同时topic也能支持分发到不同集群;

经过选型后,决定使用flume来实现高可用管道,并使用flume的复制分流拓扑结构来实现源集群的一次消费即可投递到下游的不同目标。

整体设计架构图:

44e0dc868f175eece5974c8c39e9222d.png

节点说明:

2个agent节点,2个collector节点;

2个agent 节点,完全相同的配置起flume agent ,组高可用的Kafka消费组,同步一个topic起一个flume进程;

2个collector节点的作用是,统一投递管理,新加topic source 无需重启应用,减少对全局应用的影响;

agent通过avro sink 向collector的avro source投递数据;

agent 通过设置sink group 来实现高可用或者负载均衡方式向collector投递数据;

注意:为了保证数据不丢失,使用file channel不要使用memory channel 。


详细配置说明:

一、agent 上的消费进程配置:

kafka source配置:

agent.sources.kafkaSource.type = org.apache.flume.source.kafka.KafkaSourceagent.sources.kafkaSource.kafka.bootstrap.servers = xx1:9092,xx2:9092,xx3:9092agent.sources.kafkaSource.kafka.topics = testTopicagent.sources.kafkaSource.kafka.consumer.group.id = dataDelever.flume

source interceptor设置,添加kv对,kfCluster值用于区分Kafka 集群,kfCluster取值:cluster1表示投递消息到Kafka集群cluster1,cluster2表示投递消息到Kafka 集群cluster2,clusterall表示两个集群都投递该topic。

agent.sources.kafkaSource.interceptors = i1agent.sources.kafkaSource.interceptors.i1.type = staticagent.sources.kafkaSource.interceptors.i1.key = kfClusteragent.sources.kafkaSource.interceptors.i1.value = clusterall
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。您可以按照以下步骤来使用Flume采集Kafka数据到HDFS和Hive中: 1. 首先,确保您已经安装了FlumeKafka、HDFS和Hive等必要的软件。 2. 然后,在Flume的配置文件中添加Kafka作为Source和HDFS/Hive作为Sink。例如,以下是一个简单的配置文件示例: ``` agent.sources = kafka-source agent.channels = hdfs-channel agent.sinks = hdfs-sink hive-sink agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.batchSize = 1000 agent.sources.kafka-source.kafka.bootstrap.servers = localhost:9092 agent.sources.kafka-source.kafka.topics = my-topic agent.sources.kafka-source.kafka.consumer.group.id = my-group agent.channels.hdfs-channel.type = memory agent.channels.hdfs-channel.capacity = 10000 agent.channels.hdfs-channel.transactionCapacity = 100 agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/flume/kafka agent.sinks.hdfs-sink.hdfs.fileType = DataStream agent.sinks.hdfs-sink.hdfs.writeFormat = Text agent.sinks.hdfs-sink.channel = hdfs-channel agent.sinks.hive-sink.type = hive agent.sinks.hive-sink.hive.metastore = thrift://localhost:9083 agent.sinks.hive-sink.hive.database = my-db agent.sinks.hive-sink.hive.table = my-table agent.sinks.hive-sink.hive.partition = dt=%Y-%m-%d agent.sinks.hive-sink.channel = hdfs-channel ``` 在上面的配置文件中,我们使用Kafka作为Source,将数据写入到HDFS和Hive中。我们使用Memory Channel将数据缓存在内存中,然后将其写入到HDFS和Hive中。在Hive Sink中,我们还定义了一个分区,以便按日期对数据进行分区。 3. 最后,运行Flume代理以开始从Kafka读取数据并将其写入到HDFS和Hive中。您可以使用以下命令来启动Flume代理: ``` $ bin/flume-ng agent -n agent -c conf -f conf/flume-kafka-hdfs-hive.conf ``` 这样,Flume代理就会开始从Kafka读取数据,并将其写入到HDFS和Hive中。 希望这些信息能够帮助您采集Kafka数据到HDFS和Hive中。如果您有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值