Amazon EMR
综述
Amazon EMR 任务类型,用于在AWS上操作EMR集群并执行计算任务。 后台使用 aws-java-sdk 将JSON参数转换为任务对象,提交到AWS,目前支持两种程序类型:
RUN_JOB_FLOW
使用 API_RunJobFlow 提交 RunJobFlowRequest 对象ADD_JOB_FLOW_STEPS
使用 API_AddJobFlowSteps 提交 AddJobFlowStepsRequest 对象
任务参数
- 默认参数说明请参考DolphinScheduler任务参数附录
默认任务参数
一栏。
任务参数 | 描述 |
---|---|
程序类型 | 选择程序类型,如果是RUN_JOB_FLOW ,则需要填写jobFlowDefineJson ,如果是ADD_JOB_FLOW_STEPS ,则需要填写stepsDefineJson |
jobFlowDefineJson | RunJobFlowRequest 对象对应的JSON,详细JSON定义参见 API_RunJobFlow_Examples |
stepsDefineJson | AddJobFlowStepsRequest 对象对应的JSON,详细JSON定义参见 API_AddJobFlowSteps_Examples |
任务样例
创建EMR集群并运行Steps
该样例展示了如何创建RUN_JOB_FLOW
类型EMR
任务节点,以执行SparkPi
为例,该任务会创建一个EMR
集群,并且执行SparkPi
示例程序。
jobFlowDefineJson 参数样例
{
"Name": "SparkPi",
"ReleaseLabel": "emr-5.34.0",
"Applications": [
{
"Name": "Spark"
}
],
"Instances": {
"InstanceGroups": [
{
"Name": "Primary node",
"InstanceRole": "MASTER",
"InstanceType": "m4.xlarge",
"InstanceCount": 1
}
],
"KeepJobFlowAliveWhenNoSteps": false,
"TerminationProtected": false
},
"Steps": [
{
"Name": "calculate_pi",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"/usr/lib/spark/bin/run-example",
"SparkPi",
"15"
]
}
}
],
"JobFlowRole": "EMR_EC2_DefaultRole",
"ServiceRole": "EMR_DefaultRole"
}
向运行中的EMR集群添加Step
该样例展示了如何创建ADD_JOB_FLOW_STEPS
类型EMR
任务节点,以执行SparkPi
为例,该任务会向运行中的EMR
集群添加一个SparkPi
示例程序。
stepsDefineJson 参数样例
{
"JobFlowId": "j-3V628TKAERHP8",
"Steps": [
{
"Name": "calculate_pi",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"/usr/lib/spark/bin/run-example",
"SparkPi",
"15"
]
}
}
]
}
注意事项:
- EMR 任务类型的故障转移尚未实现。目前,DolphinScheduler 仅支持对 yarn task type 进行故障转移。其他任务类型,如 EMR 任务、k8s 任务尚未准备好。
stepsDefineJson
一个任务定义仅支持关联单个step,这样可以更好的保证任务状态的可靠性。