配置

原文链接 : http://zeppelin.apache.org/docs/0.7.2/install/configuration.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10030540

贡献者 : 片刻 ApacheCN Apache中文网

Zeppelin Properties

有两个位置可以配置Apache Zeppelin。

  • 环境变量可以被定义conf/zeppelin-env.shconf\zeppelin-env.cmd适用于Windows)。
  • Java属性可以定义在conf/zeppelin-site.xml

如果两者都被定义,则环境变量将被优先考虑。

zeppelin-env.sh zeppelin-site.xml 默认值 描述
ZEPPELIN_PORT zeppelin.server.port 8080 Zeppelin服务器端口注意:请确保您没有使用与Zeppelin Web应用程序开发端口相同的端口(默认值:9000)。
ZEPPELIN_SSL_PORT zeppelin.server.ssl.port 8443 Zeppelin Server ssl端口(当ssl环境/属性设置为true时使用)
ZEPPELIN_MEM N/A -Xmx1024m -XX:MaxPermSize=512m JVM mem 选项
ZEPPELIN_INTP_MEM N/A ZEPPELIN_MEM 用于解释程序的JVM mem选项
ZEPPELIN_JAVA_OPTS N/A JVM 选项
ZEPPELIN_ALLOWED_ORIGINS zeppelin.server.allowed.origins * 启用一种方式来指定REST和Websockets的允许起源的“,”分隔列表。例如: http://localhost:8080
N/A zeppelin.anonymous.allowed true 默认情况下允许匿名(anonymous)用户。
ZEPPELIN_SERVER_CONTEXT_PATH zeppelin.server.context.path / Web应用程序的上下文路径
ZEPPELIN_SSL zeppelin.ssl false
ZEPPELIN_SSL_CLIENT_AUTH zeppelin.ssl.client.auth false
ZEPPELIN_SSL_KEYSTORE_PATH zeppelin.ssl.keystore.path keystore
ZEPPELIN_SSL_KEYSTORE_TYPE zeppelin.ssl.keystore.type JKS
ZEPPELIN_SSL_KEYSTORE_PASSWORD zeppelin.ssl.keystore.password
ZEPPELIN_SSL_KEY_MANAGER_PASSWORD zeppelin.ssl.key.manager.password
ZEPPELIN_SSL_TRUSTSTORE_PATH zeppelin.ssl.truststore.path
ZEPPELIN_SSL_TRUSTSTORE_TYPE zeppelin.ssl.truststore.type
ZEPPELIN_SSL_TRUSTSTORE_PASSWORD zeppelin.ssl.truststore.password
ZEPPELIN_NOTEBOOK_HOMESCREEN zeppelin.notebook.homescreen 显示Apache Zeppelin主屏幕上的注释ID,例如: 2A94M5J1Z
ZEPPELIN_NOTEBOOK_HOMESCREEN_HIDE zeppelin.notebook.homescreen.hide false 隐藏在ZEPPELIN_NOTEBOOK_HOMESCREENApache Zeppelin主屏幕上设置的音符ID 。有关更多信息,请参阅自定义您的Zeppelin主页
ZEPPELIN_WAR_TEMPDIR zeppelin.war.tempdir webapps jetty临时目录的位置
ZEPPELIN_NOTEBOOK_DIR zeppelin.notebook.dir notebook 保存笔记本电脑目录的根目录
ZEPPELIN_NOTEBOOK_S3_BUCKET zeppelin.notebook.s3.bucket zeppelin 将存储笔记本文件的S3 Bucket
ZEPPELIN_NOTEBOOK_S3_USER zeppelin.notebook.s3.user user S3桶的用户名,例如: bucket/user/notebook/2A94M5J1Z/note.json
ZEPPELIN_NOTEBOOK_S3_ENDPOINT zeppelin.notebook.s3.endpoint s3.amazonaws.com 桶的端点
ZEPPELIN_NOTEBOOK_S3_KMS_KEY_ID zeppelin.notebook.s3.kmsKeyID 用于S3中加密数据的AWS KMS密钥ID(可选)
ZEPPELIN_NOTEBOOK_S3_EMP zeppelin.notebook.s3.encryptionMaterialsProvider 用于S3中加密数据的自定义S3加密资料提供者实现的类名称(可选)
ZEPPELIN_NOTEBOOK_AZURE_CONNECTION_STRING zeppelin.notebook.azure.connectionString Azure存储帐户连接字符串例如:`DefaultEndpointsProtocol=https;

AccountName=<accountName>; AccountKey=<accountKey>| | ZEPPELIN_NOTEBOOK_AZURE_SHARE | zeppelin.notebook.azure.share | zeppelin | Azure共享笔记本文件将被保存 | | ZEPPELIN_NOTEBOOK_AZURE_USER | zeppelin.notebook.azure.user | user | Optional user name of an Azure file sharee.g.share/user/notebook/2A94M5J1Z/note.json| | ZEPPELIN_NOTEBOOK_STORAGE | zeppelin.notebook.storage | org.apache.zeppelin.notebook.repo.GitNotebookRepo | 逗号分隔的笔记本存储位置列表 | | ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC | zeppelin.notebook.one.way.sync | false | 如果有多个笔记本电脑存储位置,我们应该把第一个视为真理的唯一来源吗? | | ZEPPELIN_NOTEBOOK_PUBLIC | zeppelin.notebook.public | true |owners创建/导入默认情况下,将笔记本设为公开(仅限设置)。如果设置为false将添加userreaderswriters`为好,使其成为私人和无形的给其他用户,除非授予权限。 | | ZEPPELIN_INTERPRETERS | zeppelin.interpreters | org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.shell.ShellInterpreter,… | 逗号分隔的解释器配置[Class]

注意:此属性自Zeppelin-0.6.0起已弃用,Zeppelin-0.7.0将不受支持。 | | ZEPPELIN_INTERPRETER_DIR | zeppelin.interpreter.dir | interpreter | Interpreter 目录 | | ZEPPELIN_INTERPRETER_DEP_MVNREPO | zeppelin.interpreter.dep.mvnRepo | http://repo1.maven.org/maven2/ | 解释器附加依赖加载的远程主体存储库 | | ZEPPELIN_DEP_LOCALREPO | zeppelin.dep.localrepo | local-repo | 依赖加载器的本地存储库。 ex)npm的可视化模块。 | | ZEPPELIN_HELIUM_NPM_REGISTRY | zeppelin.helium.npm.registry | http://registry.npmjs.org/ | Helium依赖加载器的远程Npm注册表 | | ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE | zeppelin.websocket.max.text.message.size | 1024000 | 可以由websocket接收的最大文本消息的大小(字符)。 |

SSL配置

启用SSL需要进行一些配置更改。首先,您需要创建证书,然后更新必要的配置,以启用服务器端SSL和/或客户端证书身份验证。

创建和配置证书

信息如何生成证书和密钥库可以在这里找到。

这个StackOverflow帖子的顶部答案中可以找到一个精简的例子。

密钥库在服务器端保存私钥和证书。trustore拥有可信赖的客户端证书。请确保在以下密码字段中正确配置了这两个存储区的路径和密码。他们可以使用Jetty密码工具进行混淆。之后,Maven引用了所有依赖关系构建Zeppelin,其中一个Jetty jar包含了密码工具。使用适当的版本,用户和密码从Zeppelin home构建目录调用此命令。

  1. java -cp ./zeppelin-server/target/lib/jetty-all-server-<version>.jar org.eclipse.jetty.util.security.Password <user> <password>

如果您使用自签名,由不受信任的CA签名的证书,或者启用客户端身份验证,则客户端必须具有浏览器才能为正常的HTTPS端口和WebSocket端口创建异常。这可以通过尝试在浏览器中建立到两个端口的HTTPS连接(例如,如果端口是443和8443,然后访问https://127.0.0.1:443和https://127.0.0.1:8443)。如果服务器证书由受信任的CA签名并且客户端验证被禁用,则可以跳过此步骤。

配置服务器端SSL

需要更新以下属性zeppelin-site.xml才能启用服务器端SSL。

  1. <property>
  2. <name>zeppelin.server.ssl.port</name>
  3. <value>8443</value>
  4. <description>Server ssl port. (used when ssl property is set to true)</description>
  5. </property>
  6. <property>
  7. <name>zeppelin.ssl</name>
  8. <value>true</value>
  9. <description>Should SSL be used by the servers?</description>
  10. </property>
  11. <property>
  12. <name>zeppelin.ssl.keystore.path</name>
  13. <value>keystore</value>
  14. <description>Path to keystore relative to Zeppelin configuration directory</description>
  15. </property>
  16. <property>
  17. <name>zeppelin.ssl.keystore.type</name>
  18. <value>JKS</value>
  19. <description>The format of the given keystore (e.g. JKS or PKCS12)</description>
  20. </property>
  21. <property>
  22. <name>zeppelin.ssl.keystore.password</name>
  23. <value>change me</value>
  24. <description>Keystore password. Can be obfuscated by the Jetty Password tool</description>
  25. </property>
  26. <property>
  27. <name>zeppelin.ssl.key.manager.password</name>
  28. <value>change me</value>
  29. <description>Key Manager password. Defaults to keystore password. Can be obfuscated.</description>
  30. </property>

启用客户端证书认证

zeppelin-site.xml为了启用客户端证书认证,需要更新以下属性。

  1. <property>
  2. <name>zeppelin.server.ssl.port</name>
  3. <value>8443</value>
  4. <description>Server ssl port. (used when ssl property is set to true)</description>
  5. </property>
  6. <property>
  7. <name>zeppelin.ssl.client.auth</name>
  8. <value>true</value>
  9. <description>Should client authentication be used for SSL connections?</description>
  10. </property>
  11. <property>
  12. <name>zeppelin.ssl.truststore.path</name>
  13. <value>truststore</value>
  14. <description>Path to truststore relative to Zeppelin configuration directory. Defaults to the keystore path</description>
  15. </property>
  16. <property>
  17. <name>zeppelin.ssl.truststore.type</name>
  18. <value>JKS</value>
  19. <description>The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type</description>
  20. </property>
  21. <property>
  22. <name>zeppelin.ssl.truststore.password</name>
  23. <value>change me</value>
  24. <description>Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password</description>
  25. </property>

使用Jetty密码工具模糊密码

安全最佳做法建议不要使用纯文本密码,Jetty提供了一个密码工具来帮助模糊用于访问KeyStore和TrustStore的密码。

密码工具文档可以在这里找到。

使用该工具后:

  1. java -cp $ZEPPELIN_HOME/zeppelin-server/target/lib/jetty-util-9.2.15.v20160210.jar \
  2. org.eclipse.jetty.util.security.Password \
  3. password
  4. 2016-12-15 10:46:47.931:INFO::main: Logging initialized @101ms
  5. password
  6. OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v
  7. MD5:5f4dcc3b5aa765d61d8327deb882cf99

使用模糊密码更新您的配置:

  1. <property>
  2. <name>zeppelin.ssl.keystore.password</name>
  3. <value>OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v</value>
  4. <description>Keystore password. Can be obfuscated by the Jetty Password tool</description>
  5. </property>

注意:更新这些配置后,需要重新启动Zeppelin服务器。