引导操作的作用
引导操作的作用是在集群启动 Hadoop 前执行您自定义的脚本,以便安装您需要的第三方软件,或者修改集群运行环境。
通过引导操作,您可以安装很多目前集群尚未支持的东西到您的集群上,例如:
使用 yum 安装已经提供的软件。
直接下载公网上的一些公开的软件。
读取 OSS 中您的自有数据。
安装并运行一个服务,例如 Flink 或者 Impala,但需要编写的脚本会复杂些。
强烈建议您先用按量付费的集群来进行引导操作的测试,测试都正确以后再创建包年包月的集群。
如何使用
登录阿里云 E-MapReduce 控制台集群列表。
在上方选择所在的地域(Region),所创建集群将会在对应的 Region 内。
单击[backcolor=transparent]创建集群,即会进入创建集群的操作界面。
在创建集群的基本信息页面,单击[backcolor=transparent]添加引导操作,进入其操作界面。
填写添加引导操作界面上的配置项,完成添加。
您最多可以添加 16 个引导操作,它们会按照您指定的顺序在集群初始化时执行。默认会使用 root 账户执行您指定的脚本,您可以在脚本中使用 su hadoop 切换到 Hadoop 账户。
引导操作可能会执行失败。为方便您的使用,引导操作失败并不会影响集群的创建。集群创建成功后,您可以在集群详情页集群信息栏内的引导/软件配置查看是否有异常发生。如果有异常,您可以登录到各个节点上查看运行日志,运行日志在 /var/log/bootstrap-actions 目录下。
引导操作类型
引导操作有两种,一种是自定义引导操作,另一种是运行条件引导操作。两者的主要区别是运行条件引导操作只会在满足条件的节点上运行您的指定操作。
自定义引导操作
自定义引导操作需要指定引导操作名称和执行脚本在 OSS 中的位置,根据需要指定可选参数。集群初始化时各个节点会下载您指定的 OSS 脚本,直接执行或者附加上可选参数执行。
您可以在脚本中指定从 OSS 下载需要的文件,下面的例子会将 oss://yourbucket/myfile.tar.gz 这个文件下载到本地,并解压到 /yourdir 目录下:
- [backcolor=transparent]#!/bin/bash
- [backcolor=transparent]osscmd [backcolor=transparent]--[backcolor=transparent]id[backcolor=transparent]=<[backcolor=transparent]yourid[backcolor=transparent]>[backcolor=transparent] [backcolor=transparent]--[backcolor=transparent]key[backcolor=transparent]=<[backcolor=transparent]yourkey[backcolor=transparent]>[backcolor=transparent] [backcolor=transparent]--[backcolor=transparent]host[backcolor=transparent]=[backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]cn[backcolor=transparent]-[backcolor=transparent]hangzhou[backcolor=transparent]-[backcolor=transparent]internal[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com [backcolor=transparent]get[backcolor=transparent] oss[backcolor=transparent]:[backcolor=transparent]//<yourbucket>/<myfile>.tar.gz ./<myfile>.tar.gz
- [backcolor=transparent]mkdir [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]/<[backcolor=transparent]yourdir[backcolor=transparent]>
- [backcolor=transparent]tar [backcolor=transparent]-[backcolor=transparent]zxvf [backcolor=transparent]<myfile>[backcolor=transparent].[backcolor=transparent]tar[backcolor=transparent].[backcolor=transparent]gz [backcolor=transparent]-[backcolor=transparent]C [backcolor=transparent]/<[backcolor=transparent]yourdir[backcolor=transparent]>
osscmd 已预安装在节点上,可以直接调用来下载文件。
注意:OSS 地址 host 有内网地址、外网地址和 VPC 网络地址之分。如果用经典网络,需要指定内网地址,杭州是 oss-cn-hangzhou-internal.aliyuncs.com。如果用 VPC 网络,要指定 VPC 内网可访问的域名,杭州是 vpc100-oss-cn-hangzhou.aliyuncs.com。
引导操作也可以通过 yum 安装额外的系统软件包,下面的例子会安装 ld-linux.so.2:
- [backcolor=transparent]#!/bin/bash
- [backcolor=transparent]yum install [backcolor=transparent]-[backcolor=transparent]y ld[backcolor=transparent]-[backcolor=transparent]linux[backcolor=transparent].[backcolor=transparent]so[backcolor=transparent].[backcolor=transparent]2
运行条件引导操作
运行条件引导操作的执行脚本是预定义的不需要您额外指定,您只需要指定名称和可选参数。运行条件引导操作必须提供可选参数,可选参数需要包括运行条件和操作命令,以空格间隔。运行条件支持 instance.isMaster=true/false,指定只在 master 或者在非 master 节点上运行。以下示例为运行条件引导操作下面的可选参数指定只在 master 节点上创建目录:
- [backcolor=transparent]instance[backcolor=transparent].[backcolor=transparent]isMaster[backcolor=transparent]=[backcolor=transparent]true[backcolor=transparent] mkdir [backcolor=transparent]-[backcolor=transparent]p [backcolor=transparent]/[backcolor=transparent]tmp[backcolor=transparent]/[backcolor=transparent]abc
如果需要指定多个操作命令,您可以用分号“;”分割多个语句,例如:instance.isMaster=true mkdir -p /tmp/abc;mkdir -p /tmp/def