Flink+Spark相关记录
- FlinkSQL
- Flink Streaming的一些点
- 覆写RichSource、RichSink、RichMap
1.Source自动负载均衡,CDC源端加入一个全局调控的节点监控流量流速
2.Sink并发写入
3.Map与Iterator与增量迭代等用法 - 关于Checkpoint几个用法
1.提交Commit至目的端数据库
2.UnalignedCheckpoint与ChandyLamport与ChangeLog存增量快照
3.Buffer写盘
4.ckp与record共抢一把锁,独占writeBuffer(1.16版本),ckp禁止太快
5.State写盘+broadcast+JVM+keyState+operatorState+并行度自动扩缩容时恢复
Spark记录
- groupByKey
- reduceByKey
- combineByKey(createCombiner+mergeValue+mergeCombiner)
- aggregate(n)(seqOp,combOp)
- 关于ByKey和Join不一定会产生shuffle,先设置好new HashPartition或Custom或Range、之后直接forward不需要shuffle
- Driver产生一个DAG
1.一个DAG里的一个节点=>一个RDD
2.一个RDD=>多个分区
3.一个分区=>一个Task
===>一个DAG有多个RDD,一个RDD有多个Task
===>也就是DAG控制多个弹性数据集流转
- JVM与堆外内存
- JVM里的StorageMemory(读RDD用)和ExecutionMemory(shuffle/agg/join用)
- 关于合理设计Block->TaskPartition大小,(4G-200M)*0.5,又因为动态可以弹性,可直接3.8G
- Spark设置cache和persist缓存级别(每个分区的都会cache,cache务必保证100%否则重算)
- 对于Flink又有一个slot(JVM)里运行多个算子,所以可以考虑slot内数据总量和资源消耗整体分析
- 关于Executor add后很久才执行,说明任务调度拥堵
- 堆外内存