# 配置
原文链接 : [http://zeppelin.apache.org/docs/0.7.2/install/configuration.html](http://zeppelin.apache.org/docs/0.7.2/install/configuration.html)
译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030540](http://www.apache.wiki/pages/viewpage.action?pageId=10030540)
贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
## Zeppelin Properties
有两个位置可以配置Apache Zeppelin。
* **环境变量**可以被定义`conf/zeppelin-env.sh`(`conf\zeppelin-env.cmd`适用于Windows)。
* **Java属性**可以定义在`conf/zeppelin-site.xml`。
如果两者都被定义,则**环境变量**将被优先考虑。
| zeppelin-env.sh | zeppelin-site.xml | 默认值 | 描述 |
| --- | --- | --- | --- |
| ZEPPELIN_PORT | zeppelin.server.port | 8080 | Zeppelin服务器端口注意:请确保您没有使用与[Zeppelin Web应用程序开发端口](https://zeppelin.apache.org/contribution/webapplication.html#dev-mode)相同的[端口](https://zeppelin.apache.org/contribution/webapplication.html#dev-mode)(默认值: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](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_HOMESCREEN`Apache Zeppelin主屏幕上设置的音符ID 。有关更多信息,请参阅[自定义您的Zeppelin主页](http://zeppelin.apache.org/docs/0.7.1/manual/notebookashomepage.html)。 |
| 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`将添加`user`到`readers`和`writers`为好,使其成为私人和无形的给其他用户,除非授予权限。 |
| 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和/或客户端证书身份验证。
### 创建和配置证书
信息如何生成证书和密钥库可以在[这里](https://wiki.eclipse.org/Jetty/Howto/Configure_SSL)找到。
这个[StackOverflow帖子](http://stackoverflow.com/questions/4008837/configure-ssl-on-jetty)的顶部答案中可以找到一个精简的例子。
密钥库在服务器端保存私钥和证书。trustore拥有可信赖的客户端证书。请确保在以下密码字段中正确配置了这两个存储区的路径和密码。他们可以使用Jetty密码工具进行混淆。之后,Maven引用了所有依赖关系构建Zeppelin,其中一个Jetty jar包含了密码工具。使用适当的版本,用户和密码从Zeppelin home构建目录调用此命令。
```
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)。](https://127.0.0.1:443和https:)如果服务器证书由受信任的CA签名并且客户端验证被禁用,则可以跳过此步骤。
### 配置服务器端SSL
需要更新以下属性`zeppelin-site.xml`才能启用服务器端SSL。
```
<property>
<name>zeppelin.server.ssl.port</name>
<value>8443</value>
<description>Server ssl port. (used when ssl property is set to true)</description>
</property>
<property>
<name>zeppelin.ssl</name>
<value>true</value>
<description>Should SSL be used by the servers?</description>
</property>
<property>
<name>zeppelin.ssl.keystore.path</name>
<value>keystore</value>
<description>Path to keystore relative to Zeppelin configuration directory</description>
</property>
<property>
<name>zeppelin.ssl.keystore.type</name>
<value>JKS</value>
<description>The format of the given keystore (e.g. JKS or PKCS12)</description>
</property>
<property>
<name>zeppelin.ssl.keystore.password</name>
<value>change me</value>
<description>Keystore password. Can be obfuscated by the Jetty Password tool</description>
</property>
<property>
<name>zeppelin.ssl.key.manager.password</name>
<value>change me</value>
<description>Key Manager password. Defaults to keystore password. Can be obfuscated.</description>
</property>
```
### 启用客户端证书认证
`zeppelin-site.xml`为了启用客户端证书认证,需要更新以下属性。
```
<property>
<name>zeppelin.server.ssl.port</name>
<value>8443</value>
<description>Server ssl port. (used when ssl property is set to true)</description>
</property>
<property>
<name>zeppelin.ssl.client.auth</name>
<value>true</value>
<description>Should client authentication be used for SSL connections?</description>
</property>
<property>
<name>zeppelin.ssl.truststore.path</name>
<value>truststore</value>
<description>Path to truststore relative to Zeppelin configuration directory. Defaults to the keystore path</description>
</property>
<property>
<name>zeppelin.ssl.truststore.type</name>
<value>JKS</value>
<description>The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type</description>
</property>
<property>
<name>zeppelin.ssl.truststore.password</name>
<value>change me</value>
<description>Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password</description>
</property>
```
### 使用Jetty密码工具模糊密码
安全最佳做法建议不要使用纯文本密码,Jetty提供了一个密码工具来帮助模糊用于访问KeyStore和TrustStore的密码。
密码工具文档可以在[这里](http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html)找到。
使用该工具后:
```
java -cp $ZEPPELIN_HOME/zeppelin-server/target/lib/jetty-util-9.2.15.v20160210.jar \
org.eclipse.jetty.util.security.Password \
password
2016-12-15 10:46:47.931:INFO::main: Logging initialized @101ms
password
OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v
MD5:5f4dcc3b5aa765d61d8327deb882cf99
```
使用模糊密码更新您的配置:
```
<property>
<name>zeppelin.ssl.keystore.password</name>
<value>OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v</value>
<description>Keystore password. Can be obfuscated by the Jetty Password tool</description>
</property>
```
**注意:**更新这些配置后,需要重新启动Zeppelin服务器。
- 快速入门
- 什么是Apache Zeppelin?
- 安装
- 配置
- 探索Apache Zeppelin UI
- 教程
- 动态表单
- 发表你的段落
- 自定义Zeppelin主页
- 升级Zeppelin版本
- 从源码编译
- 使用Flink和Spark Clusters安装Zeppelin教程
- 解释器
- 概述
- 解释器安装
- 解释器依赖管理
- 解释器的模拟用户
- 解释员执行Hook(实验)
- Alluxio 解释器
- Beam 解释器
- BigQuery 解释器
- Cassandra CQL 解释器
- Elasticsearch 解释器
- Flink 解释器
- Geode/Gemfire OQL 解释器
- HBase Shell 解释器
- HDFS文件系统 解释器
- Hive 解释器
- Ignite 解释器
- JDBC通用 解释器
- Kylin 解释器
- Lens 解释器
- Livy 解释器
- Markdown 解释器
- Pig 解释器
- PostgreSQL, HAWQ 解释器
- Python 2&3解释器
- R 解释器
- Scalding 解释器
- Scio 解释器
- Shell 解释器
- Spark 解释器
- 系统显示
- 系统基本显示
- 后端Angular API
- 前端Angular API
- 更多
- 笔记本存储
- REST API
- 解释器 API
- 笔记本 API
- 笔记本资源 API
- 配置 API
- 凭据 API
- Helium API
- Security ( 安全 )
- Shiro 授权
- 笔记本 授权
- 数据源 授权
- Helium 授权
- Advanced ( 高级 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 贡献 )
- Writing a New Interpreter ( 写一个新的解释器 )
- Writing a new Visualization (Experimental) ( 编写新的可视化(实验) )
- Writing a new Application (Experimental) ( 写一个新的应用程序( 实验 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 贡献( 代码 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 贡献(website) )