Bootstrap HBase 安装后的动作

Bootstrap Action after HBase Installation

ISSUE/QUESTION:
我们如何确保 EMR Bootstrap 操作在 EMR 上安装 HBase 应用程序后运行?

群集信息:
我正在使用支持 Hbase 1.4.9 的 emr-5.25.0 版本。

用例: 我正在使用 Bootstrap 操作(遵循以下文档)在 EMR 上安装 Geomesa。 https://www.geomesa.org/documentation/tutorials/geomesa-hbase-s3-on-aws.html

观察:
我将下面的代码用作 bootstrap 操作。我看到以下 bootstrap 操作在集群上安装 HBase 之前启动。我想使用 bootstrap 操作来确保在多主设置的情况下在每个主节点上安装 Geomesa。

#!/bin/bash

set -e -x

IS_MASTER=false

if [ -f /mnt/var/lib/info/instance.json ]
then
  IS_MASTER=`cat /mnt/var/lib/info/instance.json | tr -d '\n ' | sed -n 's|.*\"isMaster\":\([^,]*\).*||p'`
fi

if [[ $IS_MASTER == false* ]] 
then
  echo "Not the master server."
  exit 0
else   
  echo "Installing Geomesa on Master Server."  
  GEOMESA_INSTALLATION_FILE_S3_LOCATION=""
  GEOMESA_FILE_VERSION=""

  # initialize the Geomesa version.
  export GEOMESA_VERSION=""

  # Create jars package
  mkdir -p /home/hadoop/jars

  # Copy Geomesa 2.3.0 jars from s3 to local jars folders.
  aws s3 cp $GEOMESA_INSTALLATION_FILE_S3_LOCATION /home/hadoop/jars

  # Move to opt package
  cd /opt/

  # Unzip geomesa jar in /opt package.
  sudo tar zxvf /home/hadoop/jars/geomesa-hbase-dist_${GEOMESA_FILE_VERSION}-bin.tar.gz

  # run bootstrap-geomesa-hbase-aws.sh file to bootstrap geomesa on EMR.
  sudo /opt/geomesa-hbase_${GEOMESA_FILE_VERSION}/bin/bootstrap-geomesa-hbase-aws.sh

  # Go to /etc/hadoop/conf
  cd /etc/hadoop/conf

  # Copy hbase-site.xml in the /etc/hadoop/conf
  sudo cp /usr/lib/hbase/conf/hbase-site.xml /etc/hadoop/conf

  # Create .zip file for hbase-site.xml
  sudo zip /home/hadoop/jars/hbase-site.zip hbase-site.xml

  # initialize GEOMESA_EXTRA_CLASSPATHS to hbase-site.zip
  export GEOMESA_EXTRA_CLASSPATHS=/home/hadoop/jars/hbase-site.zip
fi

使用Steps。 bootstrap 始终 运行 在配置服务器之后和安装应用程序之前。因此,您必须在脚本中使用 Steps。首先,使用以下 jars 添加自定义 jar 步骤。

s3://<region prefix>.elasticmapreduce/libs/script-runner/script-runner.jar

参数是

s3://<your bucket>/<path>/<script>.sh

并将失败时的操作设置为 Continue不勾选选项

Auto-terminate cluster after the last step is completed

如果脚本在配置 HBase 之前运行就可以了。它调用 bootstrap-geomesa-hbase-aws.sh 脚本,该脚本将 check for hbase to be installed 并休眠直到准备就绪。