![](/img/trans.png)
[英]Does Spark read data from Kafka partition into executor, for a batch which is queued?
[英]Cannot read data from Kafka partition on exact listener port
我有 3 个节点的 Kafka 集群。 我正在使用kafkacat列出来自 Kafka 的数据。 我配置PLAINTEXT和VPN_PLAINTEXT侦听器:
listeners=PLAINTEXT://0.0.0.0:6667,VPN_PLAINTEXT://0.0.0.0:6669
advertised.listeners=PLAINTEXT://hadoop-kafka1-stg.local.company.cloud:6667,VPN_PLAINTEXT://hadoop-kafka1-stg-vip.local.company.cloud:6669
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,VPN_PLAINTEXT:PLAINTEXT
我们发现,我们不能(仅)使用来自节点 1 的数据——来自分区领导者是节点 1 的主题,但有错误:
kafkacat -C -b hadoop-kafka1-stg-vip.local.company.cloud:6669 -t <topic-name> -o beginning -e -q -p 11
% ERROR: Topic <topic-name> [11] error: Broker: Not leader for partition
我可以看到,节点 1 是该分区的领导者:
Metadata for <topic-name> (from broker 3: hadoop-kafka3-stg-vip.local.company.cloud:6669/3):
3 brokers:
broker 2 at hadoop-kafka2-stg-vip.local.company.cloud:6669
broker 3 at hadoop-kafka3-stg-vip.local.company.cloud:6669 (controller)
broker 1 at hadoop-kafka1-stg-vip.local.company.cloud:6669
1 topics:
topic "<topic-name>" with 12 partitions:
partition 0, leader 2, replicas: 2,1,3, isrs: 3,2,1
partition 1, leader 3, replicas: 3,2,1, isrs: 3,2,1
partition 2, leader 1, replicas: 1,3,2, isrs: 3,2,1
partition 3, leader 2, replicas: 2,3,1, isrs: 3,2,1
partition 4, leader 3, replicas: 3,1,2, isrs: 3,2,1
partition 5, leader 1, replicas: 1,2,3, isrs: 3,2,1
partition 6, leader 2, replicas: 2,1,3, isrs: 3,2,1
partition 7, leader 3, replicas: 3,2,1, isrs: 3,2,1
partition 8, leader 1, replicas: 1,3,2, isrs: 3,2,1
partition 9, leader 2, replicas: 2,3,1, isrs: 3,2,1
partition 10, leader 3, replicas: 3,1,2, isrs: 3,2,1
partition 11, leader 1, replicas: 1,2,3, isrs: 3,2,1
我认为节点上的数据可能已损坏,所以我从 Kafka 的数据目录kafka_data_dir
中删除了所有内容。 当我启动守护进程时,我可以看到它正在同步。 之后,问题仍然存在。 日志中没有任何可疑之处。
任何人都可以描述并帮助找出根本原因在哪里吗? 只有节点号 1 遇到此问题。 当我在端口6667上询问同一个节点时,它运行顺利。
在使用 tcpdump 深入调查流量后,我发现 Kafka 配置没有任何问题。 当我向node1询问主题分区时, node1上的 tcpdump 没有抓到任何数据包。 请求已发送到node3 。 请求应该基于 DNS 通过 Citrix 转发到正确的 Kafka 节点,但配置错误:
这就是为什么对node1不是领导者的分区的请求有效,以及当请求node1是领导者的分区失败并显示消息Broker: Not leader for partition
因为它总是被 Citrix 转发到node3的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.