引导操作的作用是在集群启动Hadoop前执行您自定义的脚本,以便安装您需要的第三方软件或者修改集群运行环境。

背景信息

通过引导操作,您可以完成很多目前E-MapReduce集群尚未支持的操作,例如:
  • 使用Yum安装已经提供的软件。
  • 直接下载公网上的一些公开的软件。
  • 读取OSS中您的自有数据。
  • 安装并运行一个服务,例如Flink或者Impala,但需要编写的脚本会复杂些。
说明
  • 强烈建议您先创建按量付费的集群测试引导操作,测试正确以后再创建包年包月的集群。
  • 您最多可以添加16个引导操作,它们会按照您指定的顺序在集群初始化时执行。
  • 您指定的脚本默认使用root账户执行,您可以在脚本中使用su hadoop切换到Hadoop账户。

如何使用

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组
  3. 单击上方的集群管理页签。
  4. 单击右上角的创建集群
  5. 基础配置高级设置区域,单击引导操作所在行的添加
  6. 添加引导操作对话框中,配置相关的配置项。
  7. 单击确定
    类型的选择请参见引导操作类型
    说明 引导操作可能会执行失败,但引导操作失败并不会影响集群的创建。

    集群创建成功后,您可以在集群详情页集群信息栏内的引导/软件配置查看是否有异常发生。如果有异常,您可以登录到各个节点上查看运行日志,运行日志在 /var/log/bootstrap-actions 目录下。

引导操作类型

引导操作有两种,一种是自定义引导操作,另一种是运行条件引导操作。两者的主要区别是运行条件引导操作只会在满足条件的节点上运行您的指定操作。

  • 自定义引导操作

    自定义引导操作需要指定引导操作名称和执行脚本在OSS中的位置,根据需要指定可选参数。集群初始化时各个节点会下载您指定的OSS脚本,直接执行或者附加上可选参数执行。

    您可以在脚本中指定需要从OSS下载的文件。例如,添加以下脚本,将oss://yourbucket/myfile.tar.gz文件下载到本地,并解压到/yourdir目录下:

    注意 OSS地址host有内网地址、外网地址和VPC网络地址之分。如果用经典网络,需要指定内网地址,杭州是oss-cn-hangzhou-internal.aliyuncs.com。如果用VPC网络,要指定VPC内网可访问的域名,杭州是vpc100-oss-cn-hangzhou.aliyuncs.com
    #!/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已预安装在节点上,可以直接调用来下载文件。
    引导操作也可以通过yum安装额外的系统软件包,下面的例子会安装ld-linux.so.2:
    #!/bin/bash
    yum install -y ld-linux.so.2
  • 运行条件引导操作
    运行条件引导操作的执行脚本是预定义的,您只需指定名称和可选参数。运行条件引导操作必须提供可选参数,可选参数需要包括运行条件和操作命令,以空格间隔。运行条件支持instance.isMaster=true/false,指定只在Master或者在非Master节点上运行。在运行条件引导操作中添加以下可选参数,指定仅在Master节点创建目录:
    instance.isMaster=true mkdir -p /tmp/abc

    如果需要指定多个操作命令,您可以用分号(;)分隔,例如:instance.isMaster=true mkdir -p /tmp/abc;mkdir -p /tmp/def