Действие начальной загрузки после установки HBase

ВОПРОС / ВОПРОС:
Как мы можем гарантировать, что действие EMR Bootstrap запускается после установки приложения HBase на EMR?

ИНФОРМАЦИЯ О КЛАСТЕРЕ:
Я использую версию emr-5.25.0, которая поддерживает Hbase 1.4.9.

СЛУЧАЙ ИСПОЛЬЗОВАНИЯ: я устанавливаю Geomesa на EMR с помощью действия Bootstrap (следующий документ ниже). https://www.geomesa.org/documentation/tutorials/geomesa-hbase-s3-on-aws.html

НАБЛЮДЕНИЕ.
Я использую приведенный ниже код в качестве действия начальной загрузки. Я вижу, что приведенное ниже действие начальной загрузки началось до установки HBase в кластере. Я хочу использовать действие начальной загрузки, чтобы гарантировать, что Geomesa установлена ​​на каждом главном узле в случае настройки Multi-Master.

#!/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

person Amit    schedule 21.08.2019    source источник


Ответы (2)


Используйте 1_. Загрузочная программа всегда запускается после подготовки сервера и перед установкой приложений. Итак, вы должны использовать шаги со своим скриптом. Сначала добавьте настраиваемые шаги банки с указанными ниже банками.

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

Аргумент

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

и установите действие при ошибке как Continue. Не устанавливайте эту опцию

Автоматическое завершение кластера после завершения последнего шага

person Lamanus    schedule 21.08.2019
comment
Да, вариант Step - это вариант, но как он будет работать с настройкой кластера с несколькими мастерами. В настройке EMR с несколькими мастерами (согласно документации AWS), если главный узел выходит из строя , EMR запускает резервный главный узел с той же конфигурацией и действием начальной загрузки. В случае установки приложения с помощью шагов EMR Geomesa не будет установлена ​​на резервном главном узле. В связи с этим я исследовал, можно ли запустить действие начальной загрузки после установки HBase. - person Amit; 21.08.2019
comment
Насколько я знаю, с помощью бутстрапа это невозможно сделать. Вам нужно отправить шаги еще раз. Это можно сделать с помощью aws sdk или cli. - person Lamanus; 22.08.2019
comment
Да, достаточно честно. Я тоже думаю о том же решении. - person Amit; 22.08.2019

Ничего страшного, если сценарий запускается до подготовки HBase. Он вызывает сценарий bootstrap-geomesa-hbase-aws.sh, который будет проверьте, установлен ли hbase, и спите, пока он не будет готов.

person Emilio Lahr-Vivaz    schedule 21.08.2019
comment
Это не сработает. Если мы запустим сценарий bootstrap-geomesa-hbase-aws.sh в действии начальной загрузки, то он (логика сна, пока он не будет готов) не позволит EMR для завершения действия начальной загрузки. EMR не позволяет устанавливать приложения (HBase) до тех пор, пока не будут завершены действия начальной загрузки. Из-за вышесказанного EMR не позволяет установить Geomesa в режиме начальной загрузки. - person Amit; 21.08.2019
comment
Ах, вы правы - сценарий не предназначен для запуска в качестве действия начальной загрузки в кластере. - person Emilio Lahr-Vivaz; 22.08.2019
comment
Если мы зарегистрируем сопроцессор geomesa hbase через hbase-site.xml, тогда нужно ли мне устанавливать Geomesa Server на каждый главный узел HBase? Учитывая, что я использую кластер HBase на основе S3 и получаю доступ к кластеру через Lambda с интерфейсом GeoTools? Документация Geomesa: geomesa.org/documentation/user/ hbase / - person Amit; 30.08.2019