• 记一次Spark 提交任务执行缓慢之问题解决了


    任务背景

    5分钟一个批次,实现大小表的join,单批次大表数据量3GB,小表数据量5MB。

    提交任务参数

    1. /usr/bin/spark-submit \
    2. --master yarn \
    3. --deploy-mode client \
    4. --queue root.xxx \
    5. --executor-memory 8g \
    6. --num-executors 20 \
    7. --executor-cores 4 \
    8. --driver-memory 10G \
    9. --conf spark.sql.shuffle.partitions=10 \
    10. --class com.xxx.Xxx \
    11. hdfs://xxx/xxx.jar 202208170015

    现象

    Spark History 页面

     Yarn 页面

    思路步骤

    • 通过client 模式提交任务,打印执行日志到客户端

    --deploy-mode client

    • 通过执行日志分析任务执行阶段的耗时情况,通过下图可以发现,在注册块管理器和之间有1分26秒的时间(11分47秒到13分13秒)是没有日志打印的,占整个任务时长的34%

    • 执行job之前,注册 Executor之后,有1分26秒的耗时,没有详细的日志,修改spark client log4j的日志等级为DEBUG

    vim $SPARK_HOME/conf/log4j.properties

    1. # Set everything to be logged to the console
    2. # log4j.rootCategory=INFO, console # 默认是INFO
    3. log4j.rootCategory=DEBUG, console
    4. log4j.appender.console=org.apache.log4j.ConsoleAppender
    5. log4j.appender.console.target=System.err
    6. log4j.appender.console.layout=org.apache.log4j.PatternLayout
    7. log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
    8. # Settings to quiet third party logs that are too verbose
    9. log4j.logger.org.eclipse.jetty=WARN
    10. log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
    11. log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
    12. log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

    • 重新执行任务,查看在注册和执行job之间,一直在跟resourcemanager通信,来获取 application 报告信息

    问题产生原因

    spark sql where 条件当中,分区字段的值没有用引号括起来,导致谓词没有成功下推,通过查看执行计划,现象如下:

     

    解决办法

    分区字段的值加上''就好了,通过查看执行计划,现象如下:

    InMemroyFileIndex数组中包含要计算的hive分区对应的hdfs路径,避免了全hdfs目录扫描的过程,很大程度降低了任务耗时。

  • 相关阅读:
    数据结构(一)综述
    剑指 Offer 12. 矩阵中的路径
    Postman如何做接口测试,那些不得不知道的技巧
    【C语言基础】分享近期学习到的volatile关键字、__NOP__()函数以及# #if 1 #endif
    【动态规划】45. 跳跃游戏 II
    数字化采购管理系统开发:精细化采购业务流程管理,赋能企业实现“阳光采购”
    对知识蒸馏的一些理解
    HC32_HC32F072FAUA_DAC的使用
    2023年6月电子学会Python等级考试试卷(六级)答案解析
    ABB机器人随机物料抓取优化升级
  • 原文地址:https://blog.csdn.net/zpf_940810653842/article/details/126400420