集群,特别是包年报月集群,在使用过程中,可能会有新的安装第三方软件,修改集群运行环境的需求。例如Presto组件想增加udf、支持更多类型的插件,安装第三方软件,安装操作系统软件包,等等。由于包年包月集群不能直接释放了新建,所以需要一种引导操作的功能在集群使用中执行安装脚本。
E-MapReduce控制台1.5.0版本提供了集群脚本的功能,可以在集群创建好后批量选择节点,运行您指定的脚本,以实现个性化的需求。
集群脚本类似引导操作,您可以在集群创建好后安装很多目前集群尚未支持的软件到您的集群上,例如:
- 使用 yum 安装已经提供的软件。
- 直接下载公网上的一些公开的软件。
- 读取 OSS 中您的自有数据。
- 安装并运行一个服务,例如 Flink 或者 Impala,但需要编写的脚本会复杂些。
强烈建议您先用单个节点进行集群脚本的测试,测试都正确以后再在整个集群上操作。
如何使用
- 集群状态是空闲或者运行中的集群可以运行集群脚本,集群列表页面点击对应集群的查看详情按钮
- 左侧菜单单击集群脚本,即会进入该集群的集群脚本执行界面,右侧是已经执行过的集群脚本列表。
- 单击右上角创建并执行,进入创建界面。
- 填写创建界面上的配置项,选择执行的节点,点击执行,完成添加并执行操作。
- 集群脚本列表可以看到新创建的集群脚本,点击刷新可以更新集群脚本的状态。
- 点击查看详情可以看到脚本在各个节点上的运行情况,点击刷新可以更新脚本在各个节点上的运行状态。
只有空闲或者运行中的可用集群才能使用集群脚本功能。集群脚本适用于长期存在的集群,对按需创建的临时集群,应使用引导操作来完成集群初始化工作。
集群脚本会在您指定的节点上下载oss上的脚本并运行,根据返回值是否为0判断执行成功还是失败。如果运行状态是失败,您可以登录到各个节点上查看运行日志,运行日志记录在每个节点的/var/log/cluster-scripts/clusterScriptId目录下。如果集群配置了oss日志目录,运行日志也会上传到osslogpath/clusterId/ip/cluster-scripts/clusterScriptId目录下方便查看。
默认会使用 root 账户执行您指定的脚本,您可以在脚本中使用 su hadoop 切换到 Hadoop 账户。
集群脚本可能在部分节点上运行成功,部分节点上运行失败,例如节点重启导致的脚本运行失败。您可以在解决异常问题后,单独指定失败的节点再次运行。当集群扩容后,您也可以指定扩容的节点单独运行集群脚本。
1个集群同一时间只能运行一个集群脚本,如果有正在运行的集群脚本,无法提交执行新的集群脚本。每个集群最多保留10个集群脚本记录,超过10个需要将之前的记录删除才能创建新的集群脚本。
脚本的例子
类似引导操作的脚本,您可以在脚本中指定从 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