转发请注明原创地址:http://www.cnblogs.com/dongxiao-yang/p/7700600.html <flink-connector-kafka consumer的topic分区分配源码>一文提到了在flink-connector-kafka的consumer初始化的时候有三种offset提交模式:KAFKA_PERIODIC,DISABLED和ON_CHECKPOINTS. 其中ON_CHECKPOINTS表示在flink做完checkpoint后主动向kafka提交…
转发请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/8260370.html flink checkpoint 源码分析 (一)一文主要讲述了在JobManager端定时生成TriggerCheckpoint的代码部分,本文继续研究下TaskManager端如何处理收到的TriggerCheckpoint消息并执行对应的备份操作. TriggerCheckpoint消息进入TaskManager的处理路径为 handleMessage -> handl…
前言 在Flink原理——容错机制一文中,已对checkpoint的机制有了较为基础的介绍,本文着重从源码方面去分析checkpoint的过程.当然本文只是分析做checkpoint的调度过程,只是尽量弄清楚整体的逻辑,没有弄清楚其实现细节,还是有遗憾的,后期还是努力去分析实现细节.文中若是有误,欢迎大伙留言指出! 本文基于Flink1.9. 1.参数设置 1.1 有关checkpoint常见的参数如下: StreamExecutionEnvironment env = StreamExecut…
这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一剑! 往期文章 Kafka 探险 - 架构简介 Kafka 探险 - 源码环境搭建 前言 我们说 Kafka 是一个消息队列,其实更加确切的说:是 Broker 这个核心部件.为何这么说?你会发现我们可以通过控制台. Java 代码. C++ 代码.甚至是 Socket 向 Broker 写入消息,只要我们遵从了 Kafka 写入…
引言 Kafka是一款很棒的消息系统,今天我们就来深入了解一下它的实现细节,首先关注Producer这一方. 要使用kafka首先要实例化一个KafkaProducer,需要有brokerIP.序列化器等必要Properties以及acks(0.1.n).compression.retries.batch.size等非必要Properties,通过这个简单的接口可以控制Producer大部分行为,实例化后就可以调用send方法发送消息了. 核心实现是这个方法: public Future<Rec…
1.HighLevelApi High Level Api是多线程的应用程序,以Topic的Partition数量为中心.消费的规则如下: 一个partition只能被同一个ConsumersGroup的一个线程所消费. 线程数小于partition数,某些线程会消费多个partition. 线程数等于partition数,一个线程正好消费一个线程. 当添加消费者线程时,会触发rebalance,partition的分配发送变化. 同一个partition的offset保证消费有序,不同的par…
转发请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/8029356.html checkpoint是Flink Fault Tolerance机制的重要构成部分,flink checkpoint的核心类名为org.apache.flink.runtime.checkpoint.CheckpointCoordinator. 定期产生的checkpoint事件 flink的checkpoint是由CheckpointCoordinator内部的一个time…
初始化state类 //org.apache.flink.streaming.runtime.tasks.StreamTask#initializeState initializeState(); private void initializeState() throws Exception { ​ StreamOperator<?>[] allOperators = operatorChain.getAllOperators(); ​ for (StreamOperator<?>…
这篇文章主要介绍从命令行到任务在Driver端运行的过程 通过flink run 命令提交jar包运行程序 以yarn 模式提交任务命令类似于: flink run -m yarn-cluster XXX.jar 先来看一下脚本中的调用类 在flink.sh脚本中可以看到提交的命令走到了这样一个外观类上,用于提交job解析用户命令行参数 在其main方法中 先会解析对应需要的flink参数包括flink-conf-dir等,接着 1处会根据是否有hadoop权限安全控制走对应的doas(),具体…
https://sites.google.com/a/mammatustech.com/mammatusmain/kafka-architecture/4-kafka-detailed-architecture.pdf?attredirects=2&d=1 https://news.ycombinator.com/item?id=7386652 https://www.quora.com/Why-does-Kafka-scale-better-than-other-messaging-syste…