2025年5月10日
eBPF的入门例子,python + c代码,原理:辅助函数、验证器、虚拟机,编译器,映射,各种bpf指令;bpf系统调用,辅助函数,bpftool工具,bpf映射,类型格式。bpf事件,跟踪类型(进而为监控、排错、性能优化等提供数据支撑),网络类型(网络的观测、过滤、流量控制以及性能优化等),其他类型(如安全控制、BPF 扩展等)
阅读全文
2025年3月29日
MemorySegment 是Flink的最小内存分配单元、默认 32KB,先放到内存中,也可以序列化,借助KryoSerializer等、内存不够序列化到 磁盘。 HeapMemorySegment 提供了操作堆内存的方法;DataOutputView 扩展了java.io.DataOuput,提供多个写入视图、DataInputView 接口扩展了 java.io.DataInput,提供多个读取视图、MemoryManager主要用于管理排序、哈希和缓存等操作对应的内存空间,且这些操作主要集中在离线计算场景中、NetworkBufferPool通过MemorySegmentFactory申请用于存储NetworkBuffer的MemorySegment内存空间。调用过程:TaskManager –> TaskSlot –> MemorySegment。序列化和反序列化,TypeInformation 分为:BasicTypeInfo、BasicArrayTypeInfo、CompositeType、WritableTypeInfo、GenericTypeInfo
阅读全文
2025年3月23日
由Akka 构建的 RPC通讯,Dispatcher,JobMaster、ResourceManager等都继承了RpcEndpoint。RpcServer接口通过AkkaInvocationHandler动态代理类实现。TaskManager之间通过Netty 做通讯,RecordWriter先写到本地buffer,在根据选择输出到ResultPartition,最后发送到netty-server,对端的netty-client接收后,转发给 InputGate–>OperatorChain 的 head 算子,再转给StreamTaskInput(同样也有local buffer)。直接从外部源数据读取数据的SourceStreamTask和SourceReaderStreamTask、支持从网络或本地获取数据的OneInputStreamTask和TwoInputStreamTask。ResultPartition:实际上是ExecutionGraph 中 IntermediateResultPartition 对应的底层物理实现,含多个 ResultSubPartiton 实例。PipelinedResultPartition(类似presto)、BoundedBlockingResultPartition(类似spark)、HsResultPartition (Hybrid Shuffle)、SortMergeResultPartition、BufferWritingResultPartition。ConnectorManager 和 NettyConnectionManager。基于信用的反压机制,每个 creadit 表示一个上游的 buffer(默认 32KB)
阅读全文
2025年3月15日
状态管理类图,都是继承 State 的,通用的包括MapState,ValueState,BroadcastState等,还有InternalKvState 接口内部使用。根据DataStream数据集是否基于key 分组,操作分为:KeyedState 类型、OperatorState 类型。 KeyedStateBackend,通过SPI 技术用loader加载工厂类,再创建对应的后端,如:HeapKeyedStateBackend 、RocksDBKeyedStateBackend。StateTable抽象类,实现包括CopyOnWriteStateTable、NestedMapsStateTable。OperatorState 状态管理后端:OperatorStateBackend、RawKeyedStateInputs,所有算子的状态数据都只能存储在JVM堆内存中。StateBackend包括:MemoryStateBackend、FsStateBackend、RocksDBStateBackend。Checkpoint的执行过程分为三个阶段:启动、执行、确认完成。通过job-manager触发,下游算子对齐barrier事件,触发算子checkpoint操作,并继续发送到下游和返回ack,直到所有sink完成checkpoint,job-manager通知所有task,完成此次checkpoint操作
阅读全文