在调度中使用EMR Doctor任务采集功能

更新时间:
复制 MD 格式

创建EMR集群时,已默认安装EMR Doctor环境并开通EMR Doctor任务信息采集用于健康度评估,但部分客户端参数配置可能导致任务采集失效。本文为您介绍如何在客户端追加采集参数以保证EMR Doctor任务采集正常工作。

EMR Doctor配置

通常情况下, 您不需要设置任何EMR Doctor参数,EMR集群已默认配置好客户端配置参数。如果您手动修改过下表中的参数,或者在作业中设置了下表中的参数,则会导致集群默认参数被覆盖,此时需要您手动在自行设定的参数后边追加以下EMR Doctor配置。

E-MapReduce(简称EMR)Doctor任务指标采集是通过Java Agent进行处理的,EMR Doctor设置的Agent参数如下表所示。

重要

本文配置中的新版本集群指的是数据湖(DataLake)和数据服务(DataServing)场景以及自定义集群场景的集群。旧版本集群指的是旧版控制台的Hadoop集群和Gateway集群。

引擎名称

参数

需追加的EMR Doctor配置

MapReduce

yarn.app.mapreduce.am.command-opts

  • 新版本集群

    -javaagent:/opt/apps/TAIHAODOCTOR/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=mr

  • 旧版本集群

    -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=mr

mapreduce.map.java.opts

mapreduce.reduce.java.opts

Tez

tez.task.launch.cmd-opts

  • 新版本集群

    -javaagent:/opt/apps/TAIHAODOCTOR/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=mr,config=tez

  • 旧版本集群

    -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=mr,config=tez

tez.am.launch.cmd-opts

Spark

spark.driver.extraJavaOptions

  • 新版本集群

    -noverify -javaagent:/opt/apps/TAIHAODOCTOR/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark

  • 旧版本集群

    -noverify -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark

spark.executor.extraJavaOptions

spark.yarn.am.extraJavaOptions

DataWorks on EMR中使用EMR Doctor任务采集

使用DataWorks on EMR方式进行调度,如果在配置EMR节点作业时设置了EMR Doctor配置,则需要在参数后追加EMR Doctor配置。

例如,在Spark开发中设置了spark.driver.extraJavaOptions,如果想使用Doctor功能,则需要追加EMR Doctor参数。例如,在 Spark 作业的代码编辑区中,完整参数为 --conf "spark.driver.extraJavaOptions=-XX:+UseG1GC -noverify -javaagent:/usr/lib/taihaodoctor-current/emr-agent/",其中 -javaagent:/usr/lib/taihaodoctor-current/emr-agent/ 即为需要追加的 EMR Doctor 配置。

DolphinScheduler中使用EMR Doctor任务采集

推荐您使用EMRGateway环境,因为在EMR Gateway上运行的调度系统有EMR Doctor部署的软件包等信息。

Gateway上部署了DolphinScheduler,则可以在工作流定义的时候在选项参数部分,加入上表中EMR Doctor的配置,这样在工作流实际运行时,EMR Doctor就能对任务进行有效的采集,从而后续可以进行分析。在DolphinScheduler工作流定义页面中,创建Spark类型任务节点。在右侧当前节点设置面板中,设置Driver核心数1、Driver内存数512M、Executor数量2、Executor内存数2G、Executor核心数1,并在选项参数中添加 --conf "spark.driver.extraJavaOptions=-Dlog4j2.formatMsgNoLookups=true -noverify -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark" 以及对应的 spark.executor.extraJavaOptions 参数,以启用EMR Doctor的采集Agent。

在旧版控制台EMR数据开发中使用EMR Doctor任务采集

例如,在EMR数据开发中设置了参数spark.driver.extraJavaOptions,如果想使用EMR Doctor功能,则需要参照上表追加EMR Doctor参数-noverify -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark。在Spark作业的 spark.driver.extraJavaOptions 中追加 -noverify-javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark 参数。Spark提交命令示例:

--master yarn --deploy-mode client  --class com.aliyun.platform.system.gen.MrAnalyze --driver-memory 2G --driver-cores 2 --executor-memory 4G  --num-executors 5 --executor-cores 5 --conf spark.sql.shuffle.partitions=20 --conf spark.network.timeout=120 --conf spark.sql.broadcastTimeout=600 --conf "spark.driver.extraJavaOptions=-verbose:gc -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/gc_driver_analyze.log -noverify -javaagent:/usr/lib/taihaodoctor-current/emr-agent/btrace-agent.jar=libs=spark" --conf "spark.executor.extraJavaOptions=-verbose:gc -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/gc_executor_analyze.log"  oss://xxx/system-1.0.jar  ${dt}  analyze.properties