创建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 |
|
|
mapreduce.map.java.opts |
||
|
mapreduce.reduce.java.opts |
||
|
Tez |
tez.task.launch.cmd-opts |
|
|
tez.am.launch.cmd-opts |
||
|
Spark |
spark.driver.extraJavaOptions |
|
|
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任务采集
推荐您使用EMR的Gateway环境,因为在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