首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

flink-connector-kafka consumertopic分区分配源码

转载请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/7200599.html flink官方提供了连接kafkaconnector实现,由于调试时候发现部分消费行为与预期不太一致...flink-connector-kafka目前已有kafka 0.8、0.9、0.10三个版本实现,本文以FlinkKafkaConsumer010版本代码为例。...,context.isRestored()会被判定为true,程序会试图从flink checkpoint里获取原来分配到kafka partition以及最后提交完成offset。...根据kafkaauto commit ,setCommitOffsetsOnCheckpoints()值(默认为true)以及flink运行时有没有开启checkpoint三个参数组合, offsetCommitMode...采用分区号逐个对flink并发任务数量取余方式来分配partition,如果i % numParallelSubtasks == indexOfThisSubtask,那么这个i分区就归属当前分区拥有

93720
您找到你想要的搜索结果了吗?
是的
没有找到

【源码解读】Flink-Kafka序列器和分区

开篇导语 Flink将数据sink至Kafka过程中,在初始化生产者对象FlinkKafkaProducer时通常会采用默认分区器和序列化器,这样数据只会发送至指定Topic某一个分区中。...FlinkKafka分区器 源码解读 在Flink中,自定义Kafka分区器需要继承FlinkKafkaPartitioner抽象类,看一下源码: @PublicEvolving public abstract...Flink并行实例id和Kafka分区数量取余来决定这个实例数据写到哪个Kafka分区,并且一个实例只写Kafka一个分区。...中Kafka生产者源码FlinkKafkaProducer时发现其多个构造函数,凡是参数中包含FlinkKafkaProducer都被标记为了deprecated,说明官方已经不推荐使用自定义分区器来进行数据分区操作...并且阅读源码过程中可以发现,KafkaSerializationSchema中也有对数据分区操作。只需要结合KafkaContextAware接口即可实现获取Flink并行实例ID和数量功能。

58320

Flink SQL Kafka Connector

在作业开始运行时,所有匹配该正则表达式 topic 都将被 Kafka consumer 订阅。...后缀名必须与 Kafka 文档中相匹配。Flink 会删除 “properties.” 前缀并将变换后配置和值传入底层 Kafka 客户端。...default:使用 Kafka 默认分区器对消息进行分区。fixed:每个 Flink partition 对应最多一个 Kafka partition。...6.3 Sink 分区 配置项 sink.partitioner 指定了从 Flink 分区Kafka 分区映射关系。默认情况下,Flink 使用 Kafka 默认分区器来对消息进行分区。...为了控制消息到分区路由,也可以提供一个自定义 Sink 分区器。’fixed’ 分区器会将相同 Flink 分区消息写入同一个 Kafka 分区,从而减少网络连接开销。

4.8K21

Flink Kafka Connector

2.2 起始位置配置 Flink Kafka Consumer 可以配置如何确定 Kafka 分区起始位置。...对于每个分区,第一个大于或者等于指定时间戳记录会被用作起始位置。如果分区最新记录早于时间戳,则分区简单读取最新记录即可。在这个模式下,提交到 Kafka 偏移量可以忽略,不用作起始位置。...在恢复时,每个 Kafka 分区起始位置由存储在保存点或检查点中偏移量确定。...2.4 分区与主题发现 2.4.1 分区发现 Flink Kafka Consumer 支持发现动态创建 Kafka 分区,并使用 Exactly-Once 语义来消费。...当作业开始运行,首次检索分区元数据后发现所有分区会从最早偏移量开始消费。 默认情况下,分区发现是禁用

4.6K30

Flink如何管理Kafka消费偏移量

在这篇文章中我们将结合例子逐步讲解 Flink如何Kafka 工作来确保将 Kafka Topic 中消息以 Exactly-Once 语义处理。...Flink Kafka 消费者是一个有状态算子(operator)并且集成了 Flink 检查点机制,它状态是所有 Kafka 分区读取偏移量。...当一个检查点被触发时,每一个分区偏移量都保存到这个检查点中。Flink 检查点机制保证了所有算子任务存储状态都是一致,即它们存储状态都是基于相同输入数据。...下面我们将一步步介绍 Flink 如何Kafka 消费偏移量做检查点。在本文例子中,数据存储在 Flink JobMaster 中。...第一步 如下实例,从包含两个分区 Kafka Topic 中读取数据,每个分区都含有 ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ 5条消息。我们将两个分区偏移量都设置为0。 ? 2.

6.8K51

从开发到生产上线,如何确定集群大小?

翻译|毛家琦 校对|秦江杰 在 Flink 社区中,最常被问到问题之一是:在从开发到生产上线过程中如何确定集群大小。这个问题标准答案显然是“视情况而定”,但这并非一个有用答案。...正在读取 Kafka 消息源数据(在 Kafka 中)可能会根据不同分区方案进行分区。...Shuffle 过程将具有相同所有数据发送到一台计算机,因此需要将来自 Kafka 400 MB/s 数据流拆分为一个 user id 分区流: 400 MB/s ÷ 5 台机器 = 80 MB...由于每个任务管理器上都有一个 Kafka 发送端(和窗口运算符在同一个任务管理器中),并且没有进一步重新分区,所以这得到FlinkKafka 发送数据量。 ?...Flink 通过维护五个窗口来实现滑动窗口,每次滑动都对应一个 1 分钟窗口。如前所述,当使用窗口实现即时聚合时,将为每个窗口中每个(key)维护 40 字节状态。

1.1K20

如何Kafka集群确定合适分区数以及分区数过多带来弊端

此外,服务器端开销也不小,如果阅读Kafka源码的话可以发现,服务器端很多组件都在内存中维护了分区级别的缓存,比如controller,FetcherManager等,因此分区数越多,这种缓存成本就越大...当前版本kafka每个broker会为每个日志段文件打开一个index文件句柄和一个数据文件句柄。...所有的数据副本中,有一个数据副本为leader,其他数据副本为follower。 在Kafka集群内部,所有的数据副本皆采用自动化方式进行管理,并且确保所有的数据副本数据皆保持同步状态。...假如,一个2节点kafka集群中存在2000个partition,每个partition拥有2个数据副本。当其中一个broker非计划地宕机,所有1000个partition同时变得不可用。...那么如何确定合理分区数量呢?

2.1K30

Flink实战(八) - Streaming Connectors 编程

3.8 Kafka消费者开始位置配置 Flink Kafka Consumer允许配置如何确定Kafka分区起始位置。...对于每个分区,时间戳大于或等于指定时间戳记录将用作起始位置。如果分区最新记录早于时间戳,则只会从最新记录中读取分区。在此模式下,Kafka已提交偏移将被忽略,不会用作起始位置。...偏移值应该是消费者应为每个分区读取下一条记录。...在恢复时,每个Kafka分区起始位置由存储在保存点或检查点中偏移量确定。...3.10 Kafka消费者及其容错 启用Flink检查点后,Flink Kafka Consumer将使用主题中记录,并以一致方式定期检查其所有Kafka偏移以及其他 算子操作状态。

2.8K40

Flink-Kafka 连接器及exactly-once 语义保证

在恢复时,每个 kafka 分区起始位移都是由保存在 savepoint 或者 checkpoint 中位移来决定 DeserializationSchema 反序列化 如何将从 kafka 中获取字节流转换为...", new JsonNodeDeserializationSchema, prop) 自动发现 kafka 新增分区 在上游数据量猛增时候,可能会选择给 kafka 新增 partition 以增加吞吐量...,那么 Flink 这段如果不配置的话,就会永远读取不到 kafka 新增分区了 prop.put("flink.partition-discovery.interval-millis", "30000...") 表示每30秒自动发现 kafka 新增分区信息 Flink容错机制 当 Flink 开启了 checkpoint 时候,Flink 会一边消费 topic 数据,一边定时将 offset...Flink 如何保证端到端 exacly-once 语义 Flink 基于异步轻量级分布式快照技术提供 Checkpoint 容错机制。

1.5K20

【译】如何调整ApacheFlink®集群大小How To Size Your Apache Flink® Cluster: A Back-of-the-Envelope Calculation

默认情况下(如果所有运算符具有相同并行性且没有特殊调度限制),则每个计算机上都会运行流式作业所有运算符。...The Kafka source calculation 混洗和分区 接下来,您需要确保具有相同key所有事件(在本例中为userId)最终位于同一台计算机上。...您正在读取Kafka主题中数据可能会根据不同分区方案进行分区。...窗口运算符为每个保留4个数字(表示为长整数)汇总。 每分钟一次,操作员发出当前聚合值。...由于每个TaskManager上都运行一个Kafka接收器(窗口运算符旁边),并且没有进一步重新分区,这是从Flink发送到Kafka数据量。 ?

1.7K10

干货 | Flink Connector 深度解析

使用flink同学,一定会很熟悉kafka,它是一个分布式分区、多副本、 支持高吞吐、发布订阅消息系统。...针对场景二,设置前面的动态发现参数,在定期获取kafka最新meta信息时会匹配新partition。为了保证数据正确性,新发现partition从最早位置开始读取。 ?...如果构建FlinkKafkaProducer时,partition设置为null,此时会使用kafka producer默认分区方式,非key写入情况下,使用round-robin方式进行分区每个...task都会轮训写下游所有partition。...该方式下游partition数据会比较均衡,但是缺点是partition个数过多情况下维持过多网络链接,即每个task都会维持跟所有partition所在broker链接。 ?

2.1K40

【天衍系列 05】Flink集成KafkaSink组件:实现流式数据可靠传输 & 高效协同

它允许将 Flink 数据流中元素转换为 Kafka 生产者记录,并定义了如何序列化元素逻辑。...,每个并行数据流由一个Kafka生产者实例负责向Kafka主题写入数据。...Kafka主题(topic)通常被划分为多个分区每个分区都包含有序消息序列。分区器决定了生产者发送消息应该被分配到哪个分区中。...自定义分区器可以根据消息内容、(如果有)、以及其他上下文信息,灵活地决定消息应该被发送到哪个分区。...在没有显式配置 partitioner.class 情况下,Kafka 使用默认分区器,该分区器根据消息(如果有)或者采用轮询方式将消息平均分配到所有分区

48210
领券