第一部分:Kop架构介绍:
KoP是Kafka on Pulsar的简写,顾名思义就是如何在Pulsar上实现对Kafka数据的读写。KoP 将 Kafka 协议处理插件引入 Pulsar broker。这样一来,Apache Pulsar 就支持原生 Apache Kafka 协议。将 KoP 协议处理插件添加到现有 Pulsar 集群后,用户不用修改代码就可以将现有的 Kafka 应用程序和服务迁移到 Pulsar。其主要特点如下:
-
利用企业级多租户特性简化运营。
-
避免数据搬迁,简化操作。
-
利用 Apache BookKeeper 和分层存储持久保留事件流。
-
利用 Pulsar Functions 进行无服务器化事件处理。
kop架构如下图,kop引入一个新的协议处理插件,该协议处理插件利用 Pulsar 的现有组件(例如 Topic 发现、分布式日志库-ManagedLedger、cursor 等)来实现 Kafka 传输协议。

第二部分:Routine Load 接收Pular思路Doris Routine Load支持了将Kafka数据接入Doris,并保障了数据接入过程中的事务性操作。Apache Pulsar定位一个云原生时代的企业级的消息发布和订阅系统。已经在很多线上服务使用。那么Pulsar用户如何将数据数据接入Doris呢?
由于Kop直接在Pulsar侧提供了对Kafka的兼容,那么对于Doris来说可以像使用Kafka一样使用Plusar。整个过程对于Doris来说无需任务改变,就能将Pulsar数据接入Doris,并且可以获得Routine Load的事务性保障。

通过对比发现通过Kop方案实现将Pulsar数据接入Kafka是一个简单并且可靠的方案,下面我们对该方案进行介绍和测试。
第三部分:操作实战:
1. Pulsar Standalone部署:
- JDK安装:略
- 下载Pulsar二进制包,并解压:
#下载
wget https://archive.apache.org/dist/pulsar/pulsar-2.10.0/apache-pulsar-2.10.0-bin.tar.gz
#解压并进入安装目录
tar xvfz apache-pulsar-2.10.0-bin.tar.gz
cd apache-pulsar-2.10.0
2. Kop组件添加:
- 下载Kop原理
git clone https://github.com/streamnative/kop.git
cd kop
- 编译Kop项目:
mvn clean install -DskipTests
- 配置:在pulsar根目录下创建protocols文件夹并把编译好的nar包添加到protocols文件夹中
mkdir apache-pulsar-2.10.0/protocols
# mv kop/kafka-impl/target/pulsar-protocol-handler-kafka-{
{protocol:version}}.nar apache-pulsar-2.10.0/protocols
cp kop/kafka-impl/target/pulsar-protocol-handler-kafka-2.11.0-SNAPSHOT.nar apache-pulsar-2.10.0/protocols
- 添加后的结果查看:
[root@17a5da45700b apache-pulsar-2.10.0]# ls protocols/
pulsar-protocol-handler-kafka-2.11.0-SNAPSHOT.nar
3. Kop配置添加:
- 在standalone.conf或者broker.conf添加如下配置
#kop适配的协议
messagingProtocols=kafka
#kop 的NAR文件路径
protocolHandlerDirectory=./protocols
#是否允许自动创建topic
allowAutoTopicCreationType=partitioned
- 添加如下服务监听
# Use `kafkaListeners` here for KoP 2.8.0 because `listeners` is marked as deprecated from KoP 2.8.0
kafkaListeners=PLAINTEXT://127.0.0.1:9092# This config is not required unless you want to expose another address to the Kafka client.
# If it’s not configured, it will be the same with `kafkaListeners` config by default
kafkaAdvertisedListeners=PLAINTEXT://127.0.0.1:9092
brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor
brokerDeleteInactiveTopicsEnabled=false
当出现如下错误:
java.lang.IllegalArgumentException: Broker has disabled transaction coordinator, please enable it before using transaction.
添加如下配置,开启transactionCoordinatorEnabled
kafkaTransactionCoordi

本文档详细介绍了如何使用Kafka-on-Pulsar(KoP)在Pulsar上实现Kafka协议支持,以及如何将Pulsar数据无损接入Doris。通过Kop,用户无需修改代码即可迁移Kafka应用至Pulsar,同时利用Pulsar的多租户特性简化运营。在Doris中创建RoutineLoad任务,实现从Kafka到Doris的数据同步,确保事务性操作。文中还给出了Pulsar的部署、Kop组件添加、配置以及Doris建表和RoutineLoad任务创建的步骤,最后验证了数据导入的完整性和准确性。
最低0.47元/天 解锁文章
897

被折叠的 条评论
为什么被折叠?



