- driver-core是Java的
- 提交 脚本命令 提交 客户端 集群 resource application master Java进程
Java申请资源 分发 创建 汇报给Java 任务执行代码 worker端分布式执行
- Action算子 决定Job任务
- 根据key进行重分区
*task-reducetask
image.png- 一个worker端 可能多个小文件
- 一个worker一个task下的文件 =CPU个数 CPU文件复用追加
*少了根据Key在内存中排序的操作
image.png- reduceByKey=GroupBykey+Map操作
*增大分区 产生shuffer; repartition
*减小分区 coalesce
*Spark默认分区200个参数 改变分区方式:根据算子 改变参数SparkConf
- 广播变量 Redis单节点集群运行 Java端变量分发到worker上;累加器可写;共享变量;
- checkpoint小文件问题;Zookerper中偏移量;预写日志会频繁访问namenode节点
- 偏移量在kafka中
- 窗口函数 基于checkpoint 基于历史数据叠加
-
Key聚合 sortBy
image.png
*Key聚合 分区 迭代排序;
*基于原有分区 不影其他分区
image.png*DF 内存不够溢写到磁盘;RDD:内存不够 内存&初始端拉取
image.png image.png image.png*小表在Java本地Join 然后广播到worker
image.png image.png image.png- 数据倾斜导致某个task运行较慢
-
等数据处理完 再关闭
image.png
网友评论