启动集群时,在EMR上配置Zeppelin的Spark解释器

时间:2017-07-26 13:39:20

标签: apache-spark emr amazon-emr apache-zeppelin

我正在EMR上创建集群并配置Zeppelin从S3读取笔记本。为此,我使用的json对象如下:

[
  {
    "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 我的问题是,我是如何/在何处直接配置Spark解释器而无需在每次启动集群时从Zeppelin手动配置它?

2 个答案:

答案 0 :(得分:7)

这有点牵扯,你需要做两件事:

  1. 编辑Zeppelin的interpreter.json
  2. 重新启动解释程序
  3. 因此,您需要做的是编写一个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]
    

答案 1 :(得分:-2)

我建议使用Terraform创建集群 有一个命令:

configurations_json = "${file("config.json")}"

这可以让您将json文件作为emr集群的配置文件注入

https://www.terraform.io/docs/providers/aws/r/emr_cluster.html

致谢