2017-07-26 10 views
3

EMRでクラスタを作成していて、S3からノートブックを読み取るようにZeppelinを設定しています。クラスタ起動時にEMRでZeppelinのSpark Interpreterを設定する

[ 
    { 
    "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設定ページにこのオブジェクトを貼り付けています:私はそのように見えるJSONオブジェクトを使用していますことを行うには、 enter image description here 私の質問は、である私には、Sparkインタプリタを構成することができますどこか/クラスタを起動するたびにZeppelinから手動で設定する必要はありませんか?

答えて

4

これが関与ビットです、あなたは2件の観光名所する必要があります。

  1. 編集ツェッペリン
  2. のinterpreter.json
  3. 再起動をインタプリタ

だからあなたがする必要があるものですシェルスクリプトを作成し、このシェルスクリプトを実行するEMRクラスタ構成に追加の手順を追加します。

Zeppelin設定はjsonにあり、json(ツール)を使用してjsonを操作できます。私はあなたが正確に変更したいのか分からないが、ここでは(謎の行方不明)DepInterpreterを追加する例です:S3バケットにこのシェルスクリプト入れ

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

が。 次に、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それは関連するセクションを識別する内部キーの名前ですインタープリタ.jsonで。それは安定しているようです(私は、さまざまなバージョンのEMRでインスタンス化された多くのものを見てきました)。しかし、これが変わらないという保証はありません。いずれにしても、AWSはデフォルト設定を修正して、この回避策の使用をやめることができます。 – rdeboo

+0

これは素晴らしい作品です!しかし、私の場合は批判的な調整が必要でした。残りのAPIを使用してインタプリタを再起動しても、interpreter.jsonの変更は反映されません。ツェッペリン自体を再起動する必要がありますが、少なくともこれはEMRで発生します。したがって、curlではなくsudo /usr/lib/zeppelin/bin/zeppelin-daemon.shを再起動してください。 –

関連する問題