You need to enable JavaScript to run this app.
导航

集群脚本

最近更新时间2023.04.06 14:28:33

首次发布时间2022.04.27 18:51:54

火山引擎 E-MapReduce(EMR)集群创建完成后,您可以通过集群脚本功能,批量选择节点来运行指定脚本,以实现个性化需求。例如,安装第三方软件和修改集群运行环境。

1 使用限制

  1. 同一集群同一时间只能执行一个集群脚本,如果有正在运行的集群脚本,则无法再提交执行新的集群脚本。

  2. 集群脚本添加上限20条,超过20条将无法添加新的集群脚本,需先将之前添加的脚本删除后,再添加新脚本。

  3. 此功能仅限用于已经创建完成且处于正常运行中的集群,如果您想在创建集群时运行集群脚本请参考引导操作

  4. 确保您已经开通对象存储服务(TOS)服务,并将脚本上传到 TOS 中。TOS 服务开通请参考 TOS 快速入门

  5. 用户角色权限检查:

    1. 登录用户单击界面右上角用户头像,进入访问控制 > 角色界面。

    2. 在搜索框中输入 VEECSforEMRRole,进行角色搜索。若没有该角色,您需单击新建角色按钮,完成角色创建。角色创建请参考角色管理

    3. 单击 VEECSforEMRRole 角色名称,检查角色中是否已包含 ECS 和 TOS 相关的权限策略,以确保 EMR 能正常读取您在 TOS 中上传的脚本。

  6. 一条集群脚本执行过一次之后无法再次执行,请添加新的脚本。

2 注意事项

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

  2. 集群脚本会在您指定的节点上下载 TOS 上的脚本并运行,如果运行状态是失败,则您可以登录到各个节点的 /var/log/clusterscript/<节点名称_IP> 路径查看执行日志。如果集群配置了 TOS 日志目录,运行日志也会上传到 tos-path/emr/clusterid/log/clusterscript/<节点名称_IP> 目录。

3 使用集群脚本

3.1 添加集群脚本

  1. 登录 EMR 控制台

  2. 在左侧导航栏中,单击集群管理 > 集群列表 > 集群名称,进入需配置集群脚本的集群详情界面。

  3. 在集群详情界面,单击集群脚本页签,进入集群脚本配置界面。

  4. 在右侧单击添加集群脚本,在弹窗中,进行添加集群脚本配置:

    参数说明
    脚本名称输入自定义的脚本名称,方便后续管理。
    脚本位置下拉选择存放脚本的 TOS 路径,此处仅显示 Bucket 下的 Shell 执行脚本。
    脚本参数输入脚本中需引用另外添加的变量脚本参数值。
    立即执行根据实际场景,您可自行选择是否立即执行该脚本,您也可以在业务所需时,再单击执行按钮操作。
    执行范围下拉选择脚本执行的范围,您可从**集群、节点组、节点实例(单节点)、节点实例(实例范围)**这几个维度选择则执行的范围。
  5. 完成上述参数配置后,单击确定按钮,完成集群脚本添加。

3.2 集群脚本管理

集群脚本创建完成后,会显示在集群脚本列表中,您可进行以下管理操作:

  • 未执行状态的集群脚本,您可单击操作列中的执行按钮,手动执行添加的集群脚本。

  • 执行中的集群脚本,您可单击操作列中的详情按钮,可以查看脚本在各个节点上的运行情况。

  • 单击操作列中的删除按钮,可以删除创建的集群脚本。

3.3 脚本示例

您可以在上传的脚本中写入以下内容来创建文件夹、解压压缩包以及安装软件包等一系列操作。

#!/bin/bash
mkdir dir
tar -zxvf <myfile>.tar.gz -C /<yourdir>
yum install -y ld-linux.so.2

4 常见问题

  • Q1: EMR 引导脚本执行中断,但日志内没有报错信息。

    A1:建议您在脚本中的关键位置增加日志打印逻辑,以便通过运行日志辅助您排查脚本运行情况。目前集群脚本最为常见的报错原因有以下几类:

    • 网络连接性问题。ECS 实例和对应的 TOS 需要在同一地域下。例如,北京地域下的 ECS 实例连接不上非北京地域下的 TOS。

    • ECS 获取 AccessKey 信息失败问题。通常是由于 ECS 实例未绑定 VEECSForEMRRole 导致的。

    • 脚本中使用了 nohup,但又未重定向输出,将导致 Task 长时间无法退出。正确用法为nohup ... >*** 2>&1

    • 脚本在 Windows 环境下编辑会带有 Windows 的换行符号,导致脚本在 Linux 环境下运行出错。您可以在操作历史报错日志中查看是否有^M字样。如果有的话建议您在 Linux 环境下重新编辑脚本并上传 TOS。

    • 使用 wget 命令下载程序包超时,请检查 ECS 节点是否连接公网。

    • 使用的指令未找到,请检查 ECS 节点是否安装了此命令。

  • Q2: EMR 引导脚本执行无 YARN**、**HDFS 等命令。

    A2:目前 EMR 管控执行集群脚本时默认不带有任何 profile 信息,如果您需要使用 YARN、HDFS 等相关命令,请在脚本开头加入. /etc/profile加载,便可以使用上述命令。

  • Q3:输入的脚本参数未起作用。

    A3:输入的参数以空格分隔,我们会按顺序在您的脚本中替换字样为 $1、$2 以此类推等字符为您输入的参数。注意,如果您的脚本带有自定义函数,且函数内的参数如果含有 $1、$2 等字样也会一并替换,导致该函数不可用。