Skip to content

Spark 作业耗时分析

Spark 作业执行流程(Cluster Mode On YARN)

外部影响

在线调度系统(e.g. Oozie、Airflow)

  • 用户提交作业到在线应用调度系统,系统根据应用或系统自身的约束条件,将作业分配到对应应用调度队列排队,执行机将作业提交到对应的集群或服务(资源调度系统)

资源调度系统(e.g. YARN、Mesos)

  • 根据约束条件,进入对应资源调度队列排队,申请资源,启动ApplicationMaster,ApplicationMaster启动Driver,申请资源,启动Executor
  • 资源不足时,满足最小注册资源比例或达到等待时间,开始执行

元数据系统(e.g. Hive Metastore)

  • 模型元数据信息,Catalog(e.g. databases、tables、columns,、partitions、functions)

存储系统(e.g. HDFS、Alluxio)

  • input(get splits):大文件分割问题;output(commit job):小文件存储问题
  • 文件格式:ORC、Parquet

权限/审计(e.g. Ranger、Sentry)

  • 鉴权:资源控制粒度、鉴权时机
  • 审计

内部机制

调度

  • Job
  • Stage
  • Task

Shuffle Service

  • read(remote、local)
  • write

DataSource V2

  • input(get splits):大文件分割问题
  • output(commit job):小文件存储问题

特性

  • Filter Push
  • Partitioning
  • Transactional

任务

  • 资源不充足:调度延迟、资源使用率高
  • 序列化与反序列化:调整序列化
  • 复杂计算:分段计算
  • 数据记录数量大:提高并行度
  • 数据记录存储大:减少冗余信息
  • 数据倾斜(TODO):加盐、分组

其他

  • GC
  • 本地化
  • 资源使用率
  • 超时与重试

度量

倾斜

  • 时间倾斜(数据倾斜、慢节点、依赖服务异常)
  • 数据倾斜(大小、数量)

Reference