Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flink 在本地执行模式下停止/启动Kafka消费者/生产者流_Apache Flink - Fatal编程技术网

Apache flink 在本地执行模式下停止/启动Kafka消费者/生产者流

Apache flink 在本地执行模式下停止/启动Kafka消费者/生产者流,apache-flink,Apache Flink,设置: 爪哇8 Flink 1.2(Mac OSX) 卡夫卡0.10.0(VirtualBox/Ubuntu) FlinkKafkaConsumer010 FlinkKafkaProducer010 创建了一个简单的示例程序,以使用来自一个卡夫卡主题的1M消息并生成到另一个主题-以本地执行模式运行。这两个主题都有32个分区 当我让它从头到尾运行时,它会消耗并生成所有消息。如果在完成之前启动然后停止(SIGINT),然后重新启动,则生产者仅接收原始1M消息的子集 我已经为消费者确认了我的补偿,

设置:

  • 爪哇8
  • Flink 1.2(Mac OSX)
  • 卡夫卡0.10.0(VirtualBox/Ubuntu)
  • FlinkKafkaConsumer010
  • FlinkKafkaProducer010
创建了一个简单的示例程序,以使用来自一个卡夫卡主题的1M消息并生成到另一个主题-以本地执行模式运行。这两个主题都有32个分区

当我让它从头到尾运行时,它会消耗并生成所有消息。如果在完成之前启动然后停止(SIGINT),然后重新启动,则生产者仅接收原始1M消息的子集

我已经为消费者确认了我的补偿,它读取了所有100万条信息

final StreamExecutionEnvironment env = 
    StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(32);
env.enableCheckpointing(1000L, CheckpointingMode.EXACTLY_ONCE);
--

在本地执行模式下,这是预期的吗?我是否需要启用保存点来停止和重新启动流作业?出现这种情况时,生产者似乎没有提交所有消息


提前谢谢

首先,在后续运行中,它只接收消息的子集,因为
FlinkKafkaConsumer
使用Kafka中提交的偏移量作为起始位置。目前,在发行版中(截至目前
1.2.0
为止)避免这种情况的唯一方法是始终分配一个新的
group.id
。在下一个版本中,将有以下新选项:

作为旁注,还请注意,卡夫卡中的承诺补偿根本不用于Flink中的一次处理保证。Flink仅依赖于检查点偏移量。有关这方面的更多详细信息,请参见上面链接中的Flink Kafka connector文档

producer.setFlushOnCheckpoint(true);
producer.setLogFailuresOnly(false);