批量处理生产者聚合了一批消息,然后再做2次rpc将消息存入broker(ack) 客户端优化采用了双线程:主线程和Sender线程。主线程负责将消息置入客户端缓存,Sender线程负责从缓存中发送消息,而这个缓存会聚合多个消息为一个批次 日志格式https://guosmilesmile.githu ...
Flink源码分析 获取JobGraph过程
作业图(JobGraph)作业图(JobGraph)是唯一被Flink的数据流引擎所识别的表述作业的数据结构,也正是这一共同的抽象体现了流处理和批处理在运行时的统一。 作业顶点(JobVertex)、中间数据集(IntermediateDataSet)、作业边(JobEdge)是组成JobGraph ...
Flink源码分析 获取StreamGraph的过程
env.execute(); StreamContextEnvironmentpublic JobExecutionResult execute(String jobName) throws Exception { Preconditions.checkNotNull("Streami ...
HDFS File Block 和 Input Split
Blocks 是物理分区而 input splits 是逻辑分区,一个input splits可以对应多个物理block。当提交一个hadoop任务的时候,会将输入数据逻辑切分交给每个Mapper task. Mapper的数量与切分的数据是一致的. 很重要的一点,InputSplit 不储存真实的 ...
Flink operation算子源码解析
FlatMap为例public <R> SingleOutputStreamOperator<R> flatMap(FlatMapFunction<T, R> flatMapper) { TypeInformation<R> outTyp ...
Flink 读取HDFS中的数据源码解析
FileInputFormat.java主要是createInputSplits这个函数 源码中会得到文件系统(这里会得到HDFS),和文件的总大小。然后考虑了输入文件时文件夹,输入文件不可切分等情况,然后根据HDFS的分块(block)大小,文件总大小和Source的并行度来计算每个split的大 ...