2017-07-26 73 views
3

我正在EMR上創建集羣並將Zeppelin配置爲從S3讀取筆記本。要做到這一點,我使用JSON對象,看起來像:在啓動集羣時在EMR上配置Zeppelin的Spark解釋器

[ 
    { 
    "Classification": "zeppelin-env", 
    "Properties": { 

    }, 
    "Configurations": [ 
     { 
     "Classification": "export", 
     "Properties": { 
     "ZEPPELIN_NOTEBOOK_STORAGE":"org.apache.zeppelin.notebook.repo.S3NotebookRepo", 
      "ZEPPELIN_NOTEBOOK_S3_BUCKET":"hs-zeppelin-notebooks", 
      "ZEPPELIN_NOTEBOOK_USER":"user" 
     }, 
     "Configurations": [ 

     ] 
     } 
    ] 
    } 
] 

我粘貼此對象EMR的Stoftware配置頁: enter image description here 我的問題是,如何/我在哪裏可以配置星火解釋直接在每次啓動集羣時無需從Zeppelin手動配置它?

回答

4

這是涉及到一點,你需要做兩件事情:

  1. 編輯齊柏林的interpreter.json
  2. 重啓解釋

所以,你需要做的是什麼編寫一個shell腳本,然後向運行此shell腳本的EMR集羣配置添加額外的步驟。

Zeppelin配置在json中,你可以使用jq(一個工具)來操作json。我不知道你想確切地改變什麼,但這裏是增加了(神祕失蹤)DepInterpreter一個例子:

#!/bin/bash 

# 1 edit the Spark interpreter 
set -e 
cat /etc/zeppelin/conf/interpreter.json | jq '.interpreterSettings."2ANGGHHMQ".interpreterGroup |= .+ [{"class":"org.apache.zeppelin.spark.DepInterpreter", "name":"dep"}]' | sudo -u zeppelin tee /etc/zeppelin/conf/interpreter.json 


# Trigger restart of Spark interpreter 
curl -X PUT http://localhost:8890/api/interpreter/setting/restart/2ANGGHHMQ 

將這個shell腳本在S3存儲桶。 然後開始你的EMR集羣

--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://mybucket/script.sh] 
+0

非常感謝@ rdeboo。你能否詳細說明什麼是「2ANGGHHMQ」。你能否提供一個設置「spark.yarn.executor.memoryOverhead」爲2048的例子,這是我的情況以及spark.executor.memory和spark.executor.cores – Rami

+1

@Rami這是一些內部密鑰名稱,用於標識相關部分在interpreter.json中。看起來很穩定(我看過很多不同版本的EMR實例)。但是當然不能保證這不會改變。無論如何,我認爲AWS應該修復默認配置,以便我們都可以停止使用此解決方法。 – rdeboo

+0

這是偉大的工作!但在我的情況下需要一個關鍵的調整。使用其餘API重新啓動解釋器似乎沒有在interpreter.json中選擇任何更改。 Zeppelin本身需要重新啓動,至少這發生在EMR上。所以,而不是捲曲它的工作:sudo /usr/lib/zeppelin/bin/zeppelin-daemon.sh重新啓動 –

相關問題