您可以通过创建EMR(E-MapReduce)Shell节点执行Shell脚本任务。

前提条件

  • 您已创建阿里云EMR集群,且集群所在的安全组中入方向的安全策略包含以下策略。
    • 授权策略:允许
    • 协议类型:自定义 TCP
    • 端口范围:8898/8898
    • 授权对象:100.104.0.0/16
  • 您在工作空间配置页面添加E-MapReduce计算引擎实例后,当前页面才会显示EMR目录。详情请参见配置工作空间
  • 如果EMR启用了Ranger,则使用DataWorks进行EMR的作业开发前,您需要在EMR中修改配置,添加白名单配置并重启Hive,否则作业运行时会报错Cannot modify spark.yarn.queue at runtimeCannot modify SKYNET_BIZDATE at runtime
    1. 白名单的配置通过EMR的自定义参数,添加Key和Value进行配置,以Hive组件的配置为例,配置值如下。
      hive.security.authorization.sqlstd.confwhitelist.append=tez.*|spark.*|mapred.*|mapreduce.*|ALISA.*|SKYNET.*
      说明 其中ALISA.*SKYNET.*为DataWorks专有的配置。
    2. 白名单配置完成后需要重启服务,重启后配置才会生效。重启服务的操作详情请参见重启服务
  • 已开通独享调度资源组,并且独享调度资源组需要绑定EMR所在的VPC专有网络,详情请参见新增和使用独享调度资源组
    说明 仅支持使用独享调度资源组运行该类型任务。

创建EMR Shell节点并进行数据开发

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 创建业务流程
    如果您已有业务流程,则可以忽略该步骤。
    1. 鼠标悬停至新建图标,选择业务流程
    2. 新建业务流程对话框,输入业务名称
    3. 单击新建
  3. 创建EMR Shell节点。
    1. 鼠标悬停至新建图标,选择EMR > EMR Shell
      您也可以找到相应的业务流程,右键单击业务流程,选择新建 > EMR > EMR Shell
    2. 新建节点对话框中,输入节点名称,并选择节点类型目标文件夹
      说明 节点名称必须是大小写字母、中文、数字、下划线(_)和小数点(.),且不能超过128个字符。
    3. 单击提交,进入EMR Shell节点编辑页面。
  4. 使用EMR Shell节点进行数据开发。
    示例语句如下。
    DD=`date`;
    echo "hello world, $DD"
    ##可以结合调度参数使用
    echo ${var};
    调度参数详情请参见基础属性:调度参数

    如果您需要修改代码中的参数赋值,请单击界面上方工具栏的高级运行。参数赋值逻辑详情请参见调试调度参数时,DataWorks支持哪些运行方式?

    emr shell更多配置内容,详情请参见Shell作业配置
  5. 任务调度配置。
    如果您需要周期性执行创建的节点任务,可以单击节点编辑页面右侧的调度配置,根据业务需求配置该节点任务的调度信息:
    • 配置任务调度的基本信息,详情请参见基础属性
    • 配置时间调度周期、重跑属性和上下游依赖关系,详情请参见配置时间属性配置调度依赖
      说明 您需要设置节点的重跑属性依赖的上游节点,才可以提交节点。
    • 配置资源属性,详情请参见配置资源属性。请选择与所选EMR引擎实例网络连通的独享调度资源组,作为周期调度任务使用的资源组。详情请参见选择网络连通方案
  6. 提交并发布节点任务。
    1. 单击工具栏中的保存图标,保存节点。
    2. 单击工具栏中的提交图标,提交节点任务。
    3. 提交新版本对话框中,输入变更描述
    4. 单击确认
    如果您使用的是标准模式的工作空间,任务提交成功后,需要将任务发布至生产环境进行发布。请单击右上方的发布。具体操作请参见发布任务
  7. 查看周期调度任务。
    1. 单击编辑界面右上角的运维,进入运维中心。
    2. 查看运行的周期调度任务,详情请参见查看周期任务