全文共 285 字 预计阅读 1 分钟
bg

spark 使用经验

spark web ui

1、spark web ui 可以通过 tracking url 点击访问到具体的 spark 页面,可以看到 jobs、stages、storage(rdd、dataset 的 cache() / persist() 的缓存视图)、environment(所有生效的配置)、executors(监控 executors 实例的资源)、sql(dag + 执行计划,等价于 explain extended)

2、spark sql = n * job(一个 sql 一个 job,多一个广播也会多一个 job,扫分区 > 32,也会多一个 job,用于读取全部分区文件的 HDFS 路径存储到 Driver 中) = n * n * stage(stage 数 = shuffle 数 + 读表的数量)= n * n * n task(MapStage 中的 task 数 = 128M 的切片数,小文件情况,ReduceStage 中的 task 数 = spark.sql.shuffle.partitions = 200 默认值)

3、Stage 分为 MapStage 和 ReduceStage,其中 读表的 MapStage shuffle write > 0, input > 0, 写结果的 ReduceStage shuffle read > 0, output > 0

4、数据倾斜可以看一个 stage 中每个 task 的 duration,和 shuffle read size / records,一般都是 shuffle read 倾斜,也就是发生在 ReduceStage 中,因为 Shuffle Write 的每个 Task 的数据量 = 该 Map 任务处理的原始输入数据 Shuffle Read 的每个 Task 的数据量 = 所有 Map 中,哈希到该 Reduce 分区的全部 key 的数据总和

Back to Blog