当我们需要在两个kafka集群之间同步数据时,我们Kafka自带工具MirrorMaker,该工具用于镜像Kafka集群之间的数据。从一个或多个源集群读取并写入目标集群。
一个最基本的应用就是可以为另一个数据中心提供一个数据复制。您可以运行许多这样的镜像过程,以提高吞吐量和容错能力(如果一个进程死亡,其他人将采取额外的负载)。 数据将从源集群中的Topic中读取,并写入目标集群中具有相同名称的Topic。事实上,MirrorMaker只不过是一个Kafka的消费者加生产者。
创建镜像配置目录
cd $KAFKA_HOME
mkdir mirrorconf
创建源集群配置文件mirrorconf/sourceCluster.config
zookeeper.connect=sourcezk:2181/kafka0822
group.id=mirror1
zookeeper.connection.timeout.ms=1000000
consumer.timeout.ms=-1
创建目标集群配置文件mirrorconf/targetCluster.config
compression.codec=none
metadata.broker.list=targetbroker:9092
producer.type=async
执行命令进行mirror复制,这里测试Topic为mirrortest
bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config mirrorconf/sourCluster.config --num.streams 1 --producer.config mirrorconf/targetCluster.config --whitelist="mirrortest"
工具参数
$ bin/kafka-run-class.sh kafka.tools.MirrorMaker --help
Continuously copy data between two Kafka clusters.
Option Description
------ -----------
--blacklist <Java regex (String)> Blacklist of topics to mirror.
--consumer.config <config file> Consumer config to consume from a
source cluster. You may specify
multiple of these.
--help Print this message.
--new.producer Use the new producer implementation.
--num.producers <Integer: Number of Number of producer instances (default:
producers> 1)
--num.streams <Integer: Number of Number of consumption streams.
threads> (default: 1)
--producer.config <config file> Embedded producer config.
--queue.size <Integer: Queue size in Number of messages that are buffered
terms of number of messages> between the consumer and producer
(default: 10000)
--whitelist <Java regex (String)> Whitelist of topics to mirror.