Amazon EMR

综述

Amazon EMR 任务类型,用于在AWS上操作EMR集群并执行计算任务。 后台使用 aws-java-sdk 将JSON参数转换为任务对象,提交到AWS,目前支持两种程序类型:

任务参数

任务参数描述
程序类型选择程序类型,如果是RUN_JOB_FLOW,则需要填写jobFlowDefineJson,如果是ADD_JOB_FLOW_STEPS,则需要填写stepsDefineJson
jobFlowDefineJsonRunJobFlowRequest 对象对应的JSON,详细JSON定义参见 API_RunJobFlow_Examples
stepsDefineJsonAddJobFlowStepsRequest 对象对应的JSON,详细JSON定义参见 API_AddJobFlowSteps_Examples

任务样例

创建EMR集群并运行Steps

该样例展示了如何创建RUN_JOB_FLOW类型EMR任务节点,以执行SparkPi为例,该任务会创建一个EMR集群,并且执行SparkPi示例程序。 RUN_JOB_FLOW

jobFlowDefineJson 参数样例

  1. {
  2. "Name": "SparkPi",
  3. "ReleaseLabel": "emr-5.34.0",
  4. "Applications": [
  5. {
  6. "Name": "Spark"
  7. }
  8. ],
  9. "Instances": {
  10. "InstanceGroups": [
  11. {
  12. "Name": "Primary node",
  13. "InstanceRole": "MASTER",
  14. "InstanceType": "m4.xlarge",
  15. "InstanceCount": 1
  16. }
  17. ],
  18. "KeepJobFlowAliveWhenNoSteps": false,
  19. "TerminationProtected": false
  20. },
  21. "Steps": [
  22. {
  23. "Name": "calculate_pi",
  24. "ActionOnFailure": "CONTINUE",
  25. "HadoopJarStep": {
  26. "Jar": "command-runner.jar",
  27. "Args": [
  28. "/usr/lib/spark/bin/run-example",
  29. "SparkPi",
  30. "15"
  31. ]
  32. }
  33. }
  34. ],
  35. "JobFlowRole": "EMR_EC2_DefaultRole",
  36. "ServiceRole": "EMR_DefaultRole"
  37. }

向运行中的EMR集群添加Step

该样例展示了如何创建ADD_JOB_FLOW_STEPS类型EMR任务节点,以执行SparkPi为例,该任务会向运行中的EMR集群添加一个SparkPi示例程序。 ADD_JOB_FLOW_STEPS JobFlowId

stepsDefineJson 参数样例

  1. {
  2. "JobFlowId": "j-3V628TKAERHP8",
  3. "Steps": [
  4. {
  5. "Name": "calculate_pi",
  6. "ActionOnFailure": "CONTINUE",
  7. "HadoopJarStep": {
  8. "Jar": "command-runner.jar",
  9. "Args": [
  10. "/usr/lib/spark/bin/run-example",
  11. "SparkPi",
  12. "15"
  13. ]
  14. }
  15. }
  16. ]
  17. }

注意事项:

  • EMR 任务类型的故障转移尚未实现。目前,DolphinScheduler 仅支持对 yarn task type 进行故障转移。其他任务类型,如 EMR 任务、k8s 任务尚未准备好。
  • stepsDefineJson 一个任务定义仅支持关联单个step,这样可以更好的保证任务状态的可靠性。