2016-04-27 18 views
1

Ich habe ein Skript, um EMR mit Spark und Zeppelin über CLI zu starten, sowie eine Bootstrap-Aktion, um Anaconda Python zu installieren.Konfigurieren von Zeppelin-env.sh beim Bootstrapping in EMR

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"}]' 

Ich versuchte, die zeppelin-env.sh während der Bootstrap-Aktionen so zu konfigurieren, dass die Notebooks mit einem s3 Eimer gespeichert ist. Ich hatte ein zweites Skript, um drei Zeilen in die Datei einzufügen, aber es hat nicht funktioniert.

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

Dann habe ich versucht, eine andere Bootstrap-Aktion hinzufügen zeppelin durch yum anstelle des Anwendungsbefehls "Name = Zeppelin-Sandbox" zu installieren.

Das Startskript ist dann fehlgeschlagen, da Bootstrapping fehlgeschlagen ist, da Bootstrap-Aktionen einen Fehlercode ungleich null zurückgegeben haben.

Gibt es eine andere Möglichkeit, die Konfigurationen während des Bootstrappings in zeppelin-env.sh einzufügen, so dass es automatisch eingerichtet werden kann, nachdem der Cluster bereit ist? Vielen Dank im Voraus!

Antwort

2

Bootstrap-Aktionen werden ausgeführt, bevor Anwendungen installiert oder konfiguriert werden. Daher ist es nicht einfach, Bootstrap-Aktionen für die Konfiguration der Anwendungen zu verwenden, da Verzeichnisse wie/etc/zeppelin/conf zum Zeitpunkt des Bootstrap nicht existieren Aktionen laufen.

Stattdessen sollten Sie den Konfigurations-API verwenden, wie hier beschrieben: http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

Insbesondere für diesen Fall würden Sie die „Export“ Untergliederung des „zeppelin-env“ -Konfiguration Klassifizierung verwenden .