工作常用之Spark调优一

Posted 码农Maynor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作常用之Spark调优一相关的知识,希望对你有一定的参考价值。

1 Explain 查看执行计划 Spark 3.0 大版本发布, Spark SQL 的优化占比将近 50% Spark SQL 取代 Spark Core ,成 为新一代的引擎内核,所有其他子框架如 Mllib Streaming Graph ,都可以共享 Spark SQL 的性能优化,都能从 Spark 社区对于 Spark SQL 的投入中受益。 要优化 SparkSQL 应用时,一定是要了解 SparkSQL 执行计划的。发现 SQL 执行慢的根 本原因,才能知道应该在哪儿进行优化,是调整 SQL 的编写方式、还是用 Hint 、还是调参, 而不是把优化方案拿来试一遍。 1.1 准备测试用表和数据 1 、上传 3 log hdfs 新建的 sparkdata 路径 2 hive 中创建 sparktuning 数据库 3 、执行 spark-submit --master yarn --deploy-mode client --driver-memory 1g --num executors 3 --executor-cores 2 --executor-memory 4g --class com.atguigu.sparktuning.utils. InitUtil spark-tuning-1.0-SNAPSHOT-jar with-dependencies.jar 1.2 基本语法 .explain( mode="xxx" ) 3.0 开始, explain 方法有一个新的参数 mode ,该参数可以指定执行计划展示格式: explain(mode="simple") :只展示物理执行计划。 explain(mode="extended") :展示物理执行计划和逻辑执行计划。 explain(mode="codegen") :展示要 Codegen 生成的可执行 Java 代码。 explain(mode="cost") :展示优化后的逻辑执行计划以及相关的统计。 explain(mode="formatted") :以分隔的方式输出,它会输出更易读的物理执行计划, 并展示每个节点的详细信息。 1.3 执行计划处理流程

 

核心的执行过程一共有 5 个步骤:   这些操作和计划都是 Spark SQL 自动处理的,会生成以下计划: Unresolved 逻辑执行计划: == Parsed Logical Plan == Parser 组件检查 SQL 语法上是否有问题,然后生成 Unresolved (未决断)的逻辑计划, 不检查表名、不检查列名。 Resolved 逻辑执行计划: == Analyzed Logical Plan == 通过访问 Spark 中的 Catalog 存储库来解析验证语义、列名、类型、表名等。 优化后的逻辑执行计划: == Optimized Logical Plan == Catalyst 优化器根据各种规则进行优化。 物理执行计划: == Physical Plan == 1 HashAggregate 运算符表示数据聚合,一般 HashAggregate 是成对出现,第一个 HashAggregate 是将执行节点本地的数据进行局部聚合,另一个 HashAggregate 将各个分区的数据进一步进行聚合计算。 2 Exchange 运算符其实就是 shuffle ,表示需要在集群上移动数据。很多时候 HashAggregate 会以 Exchange 分隔开来。 3 Project 运算符是 SQL 中的投影操作,就是选择列(例如: select name, age …)。 4 BroadcastHashJoin 运算符表示通过基于广播方式进行 HashJoin 5 LocalTableScan 运算符就是全表扫描本地的表。 1.4 案例实操 将提供的代码打成 jar 包,提交到 yarn 运行
spark-submit --master yarn --deploy-mode client --driver-memory 1g --num
executors 3 --executor-cores 2 --executor-memory 4g --class
com.atguigu.sparktuning.explain.ExplainDemo spark-tuning-1.0-SNAPSHOT
jar-with-dependencies.jar

以上是关于工作常用之Spark调优一的主要内容,如果未能解决你的问题,请参考以下文章

工作常用之Spark调优[二资源调优

工作常用之Spark调优

Spark常规性能调优

Spark 常规性能调优

Kafka系列之:深入理解Kafka集群调优

性能调优一次监控数据错误的性能调优经历