Как настроить Zeppelin-env.sh во время начальной загрузки в EMR

У меня есть сценарий для запуска EMR с Spark и Zeppelin через CLI, а также действие начальной загрузки для установки Anaconda python.

aws emr create-cluster --applications Name=Hadoop Name=Hive Name=Spark \
Name=Zeppelin-Sandbox \
...... \
--bootstrap-actions \
'[{"Path":"s3://mybucket/python_config.sh","Name":"Python_Config"},\
{"Path":"s3://mybucket/export_var.sh","Name":"Export_Variables"}]'

Я попытался настроить zeppelin-env.sh во время действий начальной загрузки, чтобы записные книжки хранились в корзине s3. У меня был второй сценарий для вставки трех строк в файл, но он не работал.

#!/bin/bash
echo 'export ZEPPELIN_NOTEBOOK_S3_BUCKET=mybucket' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh
echo 'export ZEPPELIN_NOTEBOOK_S3_USER=zeppelin' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh
echo 'export ZEPPELIN_NOTEBOOK_STORAGE=org.apache.zeppelin.notebook.repo.S3NotebookRepo' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh

Затем я попытался добавить еще одно действие начальной загрузки для установки zeppelin через yum вместо команды приложения «Name = Zeppelin-Sandbox».

#!/bin/bash
cd /home/hadoop/
sudo yum -y install zeppelin
echo 'export ZEPPELIN_NOTEBOOK_S3_BUCKET=mybucket' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh
echo 'export ZEPPELIN_NOTEBOOK_S3_USER=zeppelin' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh
echo 'export ZEPPELIN_NOTEBOOK_STORAGE=org.apache.zeppelin.notebook.repo.S3NotebookRepo' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh
# Start Zeppelin
sudo /usr/lib/zeppelin/bin/zeppelin-daemon.sh start

Затем сценарий запуска завершился ошибкой с ошибкой начальной загрузки, поскольку действия начальной загрузки вернули ненулевой код ошибки.

Есть ли другой способ вставить конфигурации в zeppelin-env.sh во время начальной загрузки, чтобы их можно было автоматически настроить после того, как кластер будет готов? Заранее спасибо!


person WQF    schedule 27.04.2016    source источник


Ответы (1)


Действия начальной загрузки выполняются до установки или настройки каких-либо приложений, поэтому не очень просто использовать действия начальной загрузки для настройки приложений самостоятельно, поскольку такие каталоги, как / etc / zeppelin / conf, даже не будут существовать во время выполнения действий начальной загрузки.

Вместо этого вам следует использовать Configuration API, как описано здесь: http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

В частности, в этом случае вы захотите использовать подкласс «экспорт» из классификации конфигурации «zeppelin-env».

person Jonathan Kelly    schedule 29.04.2016
comment
Очень плохо документировано - person TheFiddlerWins; 18.06.2020