添加引导操作能够帮助您安装所需的第三方软件或修改集群的运行环境。本文将为您详细介绍如何添加引导操作及其相关示例。
背景信息
引导操作功能能够在集群创建、扩容或弹性伸缩时,自动在新增节点上执行指定脚本。手动执行功能则允许用户批量选择在现有节点上运行指定脚本,以满足个性化需求,手动执行脚本的详情,请参见手动执行脚本。
引导操作类似于手动执行。在集群创建过程中或创建完成后,您可以通过引导操作功能,执行许多当前E-MapReduce集群尚未支持的操作,例如:
- 使用Yum安装已经提供的软件。 
- 直接从公网上下载一些公开的软件。 
- 从OSS中读取您所拥有的数据。 
- 安装并运行一个服务,例如Flink或者Impala。 
使用限制
- 您最多可以添加10个引导操作。添加的引导操作将按照您指定的顺序执行。 
- 您指定的脚本默认使用root账户执行,您也可以在脚本中使用 - su - hadoop命令,切换为hadoop用户执行。
添加引导操作
添加引导操作支持以下两种方式。
方式一:创建集群时添加引导操作
- 进入集群管理页面。 - 在顶部菜单栏处,根据实际情况选择地域和资源组。 
 
- 在EMR on ECS页面,单击创建集群。 
- 在基础配置的高级设置区域,单击引导操作所在行的添加引导操作。 
- 填写以下配置项。 - 参数 - 描述 - 操作名称 - 引导操作的名称。 - 脚本地址 - 选择脚本所在OSS的路径。 - 脚本路径格式必须为oss://**/*.sh格式。 - 参数 - 引导操作脚本的参数,指定脚本中所引用的变量的值。 - 执行时间 - 组件安装前:组件安装前执行该脚本。 
- 组件启动前:组件安装后、启动前执行该脚本。 
- 组件启动后:组件启动后执行该脚本。 
 - 执行失败策略 - 继续执行:如果该脚本执行失败,则继续执行下一个脚本,不会影响集群创建或扩容流程。 
- 停止执行:如果该脚本执行失败,则立即停止当前脚本的执行,并标记集群创建或扩容流程为失败状态。 
 - 执行范围 - 取值范围如下: - 集群:此引导操作适用于整个集群。 
- 节点组类型:此操作引导仅适用于您选择的节点组的类型。 
 - 引导操作示例请参见示例。 说明- 引导操作可能会执行失败,但其失败并不会影响集群的创建。 - 有关创建集群详情,请参见创建集群。集群创建成功后,您可以在集群的脚本操作页面查看是否有异常发生。如发现异常,请参见查看脚本执行日志。 
方式二:创建集群后添加引导操作
- 进入脚本操作页面。 - 在顶部菜单栏处,根据实际情况选择地域和资源组。 
- 单击目标集群的集群服务。 
- 单击上方的脚本操作页签。 
 
- 在引导操作页面,单击添加引导操作。 
- 在添加引导操作对话框中,填写配置项。  - 参数 - 描述 - 名称 - 引导操作的名称。 - 脚本位置 - 选择脚本所在的OSS位置。 - 脚本路径格式必须为oss://**/*.sh格式。 - 参数 - 引导操作脚本的参数,指定脚本中所引用的变量的值。 - 执行范围 - 取值范围如下: - 集群:此引导操作适用于整个集群。 
- 节点组类型:此操作引导仅适用于您选择的节点组的类型。 
- 指定节点组:此引导操作仅适用于您选择的节点组。 
 - 执行时间 - 组件安装前:组件安装前执行该脚本。 
- 组件启动前:组件安装后、启动前执行该脚本。 
- 组件启动后:组件启动后执行该脚本。 
 - 执行失败策略 - 继续执行:如果该脚本执行失败,则继续执行下一个脚本,不会影响集群创建或扩容流程。 
- 停止执行:如果该脚本执行失败,则立即停止当前脚本的执行,并标记集群创建或扩容流程为失败状态。 
 
- 单击确定。 - 引导操作示例请参见示例。 - 您可以对已有的引导操作进行以下操作: - 编辑引导操作:单击目标引导操作所在行的编辑。 
- 克隆引导操作:单击目标引导操作所在行的克隆。 
- 删除引导操作:单击目标引导操作所在行的删除。 
 
查看脚本执行日志
建议您在脚本中关键位置增加日志打印逻辑,以便通过运行日志辅助您排查脚本运行情况。
您可以通过操作历史查看引导操作脚本的执行日志。具体步骤如下:
- 进入集群服务页面。 - 在左侧导航栏,单击EMR on ECS。 
- 在顶部菜单栏处,根据实际情况选择地域和资源组。 
- 在EMR on ECS页面,单击目标集群的集群服务。 
 
- 单击脚本操作页签,再单击要查看的脚本右侧的查看执行结果。 
- 在操作历史面板中,找到执行脚本的操作,查看详情。 - DataLake、DataFlow、OLAP、DataServing和自定义集群:在创建集群(create)或扩容(increaseNodeGroup)操作记录中,单击  查看任务详情。其中 查看任务详情。其中- RUN_BOOTSTRAP_CLUSTER_SCRIPT_<引导操作名称>_<引导操作ID>开头的任务为执行引导操作的任务,可查看执行Stdout和Stderr日志。 
- Hadoop、Data Science和EMR Studio集群:在创建集群(CREATE_CLUSTER)或扩容(RESIZE_CLUSTER)操作记录中,单击  查看任务详情。pollDeployTaskStatusActivity下的RUN_SCRIPT_HOST_**开头的任务即为执行引导操作的任务,可查看执行Stdout和Stderr日志。 查看任务详情。pollDeployTaskStatusActivity下的RUN_SCRIPT_HOST_**开头的任务即为执行引导操作的任务,可查看执行Stdout和Stderr日志。
 
示例
引导操作需要指定引导操作的名称及其在OSS上的执行脚本位置,并根据需要指定脚本的参数。在执行引导操作时,各个节点将下载您指定的OSS脚本,并进行直接执行或附加可选参数后执行。以下为引导操作示例:
- 示例1 - 您可以在脚本中指定需要从OSS下载的文件。例如,添加以下脚本,将oss://<yourBucket>/<myFile>.tar.gz文件下载到本地,并解压到/<yourDir>目录下。 重要- OSS地址有内网地址、外网地址和VPC网络地址之分。如果使用经典网络,则需要指定内网地址,例如杭州是oss-cn-hangzhou-internal.aliyuncs.com。如果使用VPC网络,则需要指定VPC内网可访问的域名,例如杭州是vpc100-oss-cn-hangzhou.aliyuncs.com。 - 数据湖(DataLake)、实时数据流(DataFlow)、数据分析(OLAP)、数据服务(DataServing)和自定义场景的集群 - #!/bin/bash ossutil64 cp oss://<yourBucket>/<myFile>.tar.gz ./ -e oss-cn-hangzhou-internal.aliyuncs.com -i <yourAccessKeyId> -k <yourAccessKeySecret> mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir>
- 旧版数据湖(Hadoop)集群 - #!/bin/bash osscmd --id=<yourAccessKeyId> --key=<yourAccessKeySecret> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourBucket>/<myFile>.tar.gz ./ mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir>
 
- 示例2 - 您可以通过Yum安装额外的系统软件包,例如安装ld-linux.so.2。 - #!/bin/bash yum install -y ld-linux.so.2