У меня есть сценарий для запуска 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 во время начальной загрузки, чтобы их можно было автоматически настроить после того, как кластер будет готов? Заранее спасибо!