【问题标题】:Bootstrap Action after HBase InstallationHBase 安装后的引导操作
【发布时间】:2019-08-21 23:56:19
【问题描述】:

问题/问题:
我们如何确保 EMR 引导操作在 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

观察:
我使用下面的代码作为引导操作。我看到在集群上安装 HBase 之前启动了以下引导操作。我想使用引导操作确保 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\":\([^,]*\).*|\1|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="$1"
  GEOMESA_FILE_VERSION="$2"

  # initialize the Geomesa version.
  export GEOMESA_VERSION="$3"

  # 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

【问题讨论】:

    标签: hbase amazon-emr geomesa


    【解决方案1】:

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

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

    论据是

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

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

    最后一步完成后自动终止集群

    【讨论】:

    • 是的,Step 是一个选项,但它如何与多主集群设置一起使用。 在多主 EMR 设置中(根据 AWS 文档),如果主节点出现故障,EMR 会启动一个具有相同配置和引导操作的备用主节点。在使用 EMR Steps 安装应用程序的情况下,Geomesa 不会安装在备份主节点上。因此,我正在调查是否可以在安装 HBase 后运行引导操作。
    • 好吧,据我所知,引导程序无法做到这一点。您必须再次提交步骤。可以通过 aws sdk 或 cli 完成。
    • 是的,很公平。我也在考虑同样的解决方案。
    【解决方案2】:

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

    【讨论】:

    • 它不起作用。如果我们在引导操作中运行 bootstrap-geomesa-hbase-aws.sh 脚本,那么它 (睡眠逻辑直到它准备好) 不允许 EMR 完成引导操作。在引导操作未完成之前,EMR 不允许安装应用程序 (HBase)。由于上述原因,EMR 不允许在引导操作中安装 Geomesa。
    • 啊,你是对的 - 该脚本并不是要在集群上作为引导操作运行。
    • 如果我们通过 hbase-site.xml 注册 geomesa hbase 协处理器,那么我需要在每个 HBase Master 节点上安装 Geomesa Server 吗?考虑到我正在使用基于 S3 的 HBase 集群并通过带有 GeoTools 接口的 Lambda 访问集群? Geomesa 文档:geomesa.org/documentation/user/hbase/…
    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    相关资源
    最近更新 更多