集群创建完成后(特别是包年包月集群),您可通过集群脚本功能批量选择节点来运行指定脚本,以实现个性化需求,例如,安装第三方软件、修改集群运行环境等。

前提条件

  • 请确保集群状态是空闲或运行中,其他状态时集群不支持运行集群脚本。
  • 开发或从其他处获取集群脚本(集群脚本示例),并上传到OSS。

集群脚本的作用

集群脚本适用于长期存在的集群,对按需创建的临时集群,应使用引导操作来完成集群初始化工作。集群脚本类似引导操作,在集群创建完成后,您可通过集群脚本功能来安装很多目前集群尚未支持的软件,例如:

  • 使用yum安装已经提供的软件。
  • 直接下载公网上的一些公开的软件。
  • 读取OSS中您的自有数据。
  • 安装并运行一个服务(例如,Flink或者Impala),但需要编写的脚本会复杂些。

集群脚本的使用

一个集群同一时间只能运行一个集群脚本,如果有正在运行的集群脚本,则无法再提交执行新的集群脚本。每个集群最多保留10个集群脚本记录,如果超过10个,则您需要将之前的记录删除才能创建新的集群脚本。

集群脚本可能在部分节点上运行成功,部分节点上运行失败,例如节点重启导致脚本运行失败。在解决异常问题后,您可单独指定失败的节点再次运行。当集群扩容后,您也可指定扩容的节点单独运行集群脚本。

集群脚本会在您指定的节点上下载OSS上的脚本并运行,并根据返回值是否为0来判断执行是否成功。如果运行状态是失败,则您可登录到各个节点上查看运行日志,运行日志存储在每个节点的/var/log/cluster-scripts/clusterScriptId目录下。如果集群配置了OSS日志目录,运行日志也会上传到osslogpath/clusterId/ip/cluster-scripts/clusterScriptId目录。

  1. 登录阿里云E-MapReduce控制台
  2. 单击上方的集群管理
  3. 集群管理页面的集群列表中,单击集群后面的详情
  4. 在集群详情页面左侧的导航栏中,单击集群脚本
  5. 集群脚本页面,单击右上角创建并执行
  6. 在弹出的创建脚本对话框中,输入名称,选择脚本,选中执行节点(可多选)。
    说明 在使用集群脚本功能时,强烈建议您先在单个节点对集群脚本进行测试,在测试全部正常后,再在整个集群上操作。
  7. 完成上述参数配置后,单击确定

    集群脚本创建完成后,会显示在集群脚本列表中,并且脚本处于运行中状态。单击刷新,可更新集群脚本的状态。

  8. 单击详情,可查看脚本在各个节点上的运行情况。

    单击刷新,可更新脚本在各个节点上的运行状态。

集群脚本示例

与引导操作的脚本相似,您可在集群脚本中指定需要从OSS下载的文件,以下示例会将oss://yourbucket/myfile.tar.gz文件下载到本地,并解压到/yourdir目录下。
#!/bin/bash
osscmd --id=<yourid> --key=<yourkey> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourbucket>/<myfile>.tar.gz ./<myfile>.tar.gz
mkdir -p /<yourdir>
tar -zxvf <myfile>.tar.gz -C /<yourdir>
节点上已预安装了osscmd,可直接调用来下载文件。
说明 OSS地址host有内网地址、外网地址和VPC网络地址之分。如果是经典网络,则需要指定内网地址(例如,杭州是oss-cn-hangzhou-internal.aliyuncs.com)。如果是VPC网络,则需要指定VPC内网可访问的域名(例如,杭州是vpc100-oss-cn-hangzhou.aliyuncs.com)。
集群脚本也可通过yum安装额外的系统软件包,以下是安装ld-linux.so.2的示例。
#!/bin/bash
yum install -y ld-linux.so.2

集群默认使用root账户来执行您指定的脚本,您可以在脚本中使用su hadoop切换到hadoop账户。