Apache kafka 卡夫卡中的默认消费者组id
我正在使用卡夫卡2.11,而且对它还相当陌生。我试图了解卡夫卡消费群体,我有3个spark应用程序使用同一主题,每个应用程序都接收来自该主题的所有消息。由于我在应用程序中没有提到任何消费者组id,我假设Kafka正在为每个应用程序分配一些不同的消费者组id。 我需要使用下面的命令为其中一个应用程序重置kafka偏移量。因为我不知道我的应用程序的消费者组名称,所以我有点被困在这里。我是否需要在应用程序中显式分配组id,然后在下面的命令中使用它Apache kafka 卡夫卡中的默认消费者组id,apache-kafka,kafka-consumer-api,spark-structured-streaming,Apache Kafka,Kafka Consumer Api,Spark Structured Streaming,我正在使用卡夫卡2.11,而且对它还相当陌生。我试图了解卡夫卡消费群体,我有3个spark应用程序使用同一主题,每个应用程序都接收来自该主题的所有消息。由于我在应用程序中没有提到任何消费者组id,我假设Kafka正在为每个应用程序分配一些不同的消费者组id。 我需要使用下面的命令为其中一个应用程序重置kafka偏移量。因为我不知道我的应用程序的消费者组名称,所以我有点被困在这里。我是否需要在应用程序中显式分配组id,然后在下面的命令中使用它 ./kafka-consumer-groups.sh
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --to-datetime 2017-11-1907:52:43:00:000 --group <group_name> --topic <topic_name> --execute
如果这是真的,如何获取每个应用程序的消费者组id?我不能消费者组。id是必需的。如果未设置consumer group.id,则会出现异常。很明显,您正在代码中的某个地方设置它,或者您正在使用的框架或库正在内部设置它。您应该始终自己设置group.id
您可以使用以下命令获取使用者组ID:
bin/kafka-consumer-groups.sh --list --bootstrap-server <kafka-broker-ip>:9092
Consumer group.id是必填项。如果未设置consumer group.id,则会出现异常。很明显,您正在代码中的某个地方设置它,或者您正在使用的框架或库正在内部设置它。您应该始终自己设置group.id
您可以使用以下命令获取使用者组ID:
bin/kafka-consumer-groups.sh --list --bootstrap-server <kafka-broker-ip>:9092
由于我在应用程序中没有提到任何消费者组id,我假设Kafka正在为每个应用程序分配一些不同的消费者组id
卡夫卡代理不会将消费者组名称分配给与其连接的消费者。
当消费者连接、订阅某个主题时,它就加入了一个组。
如果您在使用Spark应用程序时未指定任何使用者组,则这意味着您用于从Spark应用程序连接到Kafka的库/框架在某种程度上正在分配使用者组名称本身
由于我在应用程序中没有提到任何消费者组id,我假设Kafka正在为每个应用程序分配一些不同的消费者组id
卡夫卡代理不会将消费者组名称分配给与其连接的消费者。
当消费者连接、订阅某个主题时,它就加入了一个组。
如果您在使用Spark应用程序时未指定任何使用者组,这意味着您用于从Spark应用程序连接到Kafka的库/框架在某种程度上正在分配使用者组名称本身。如果您转到Spark代码,您可以找到KafkaSourceProvider类,该类负责Kafka源代码读取器,您可以看到生成了random group.id: 私有[kafka010]类KafkaSourceProvider扩展了DataSourceRegister 覆盖def createSource sqlContext:sqlContext, metadataPath:String, 架构:选项[StructType], providerName:String, 参数:映射[字符串,字符串]:源={ ValidateStreamOptions参数 //每个正在运行的查询都应该使用自己的组id。否则,只能分配查询 //部分数据,因为Kafka会将分区分配给具有相同组的多个使用者 //因此,我们应该为每个查询生成一个唯一的id。 val uniqueGroupId=sspark kafka source-${UUID.randomUUID}-${metadataPath.hashCode} ... } 您可以使用spark kafka源前缀搜索group.id,但找不到特定组的group.id 要查找所有消费者组ID,可以使用以下命令: ./kafka-consumer-groups.sh-引导服务器KAFKKA_地址-列表 要检查用户组偏移,可以使用以下命令:
./kafka-consumer-groups.sh-引导服务器kafka_ADDRESS-group=group_ID-description如果您转到Spark code,您可以找到负责kafka源代码读取器的KafkaSourceProvider类,您可以看到生成了random group.ID: 私有[kafka010]类KafkaSourceProvider扩展了DataSourceRegister 覆盖def createSource sqlContext:sqlContext, metadataPath:String, 架构:选项[StructType], providerName:String, 参数:映射[字符串,字符串]:源={ ValidateStreamOptions参数 //每个正在运行的查询都应该使用自己的组id。否则,只能分配查询 //部分数据,因为Kafka会将分区分配给具有相同组的多个使用者 //因此,我们应该为每个查询生成一个唯一的id。 val uniqueGroupId=sspark kafka source-${UUID.randomUUID}-${metadataPath.hashCode} ... } 您可以使用spark kafka源前缀搜索group.id,但找不到特定组的group.id 要查找所有消费者组ID,可以使用以下命令: ./kafka-consumer-groups.sh-引导服务器KAFKKA_地址-列表 要检查用户组偏移,可以使用以下命令: ./kafka-consumer-groups.sh-引导服务器KAFKKA_地址-组=组ID-描述