# 笔记本存储
原文链接 : [http://zeppelin.apache.org/docs/0.7.2/storage/storage.html#notebook-storage-in-local-git-repository](http://zeppelin.apache.org/docs/0.7.2/storage/storage.html#notebook-storage-in-local-git-repository)
译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030689](http://www.apache.wiki/pages/viewpage.action?pageId=10030689)
贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
## 概观
Apache Zeppelin具有可插拔的笔记本存储机制,由`zeppelin.notebook.storage`多个实现的配置选项控制。有几个笔记本电脑存储系统可供开箱即用:
* (默认)使用本地文件系统和版本它使用本地Git仓库 - `GitNotebookRepo`
* 所有笔记都保存在本地文件系统中的笔记本文件夹中 - `VFSNotebookRepo`
* 存储使用Amazon S3服务 - `S3NotebookRepo`
* 使用Azure服务的存储 - `AzureNotebookRepo`
可以通过在配置中提供逗号分隔的类名列表来同时使用多个存储系统。默认情况下,Zeppelin将仅自动保持前两个。
## 存储在本地Git存储库
为了通过标准的Git仓库启用所有本地笔记本电脑的版本控制 - 取消注释下一个属性`zeppelin-site.xml`,以便使用GitNotebookRepo类:
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.GitNotebookRepo</value>
<description>notebook persistence layer implementation</description>
</property>
```
## 存储在S3中
笔记本可以存储在S3中,并且可选地加密。该[`DefaultAWSCredentialsProviderChain`](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html)凭据提供用于凭据,并检查以下内容:
* 该`AWS_ACCESS_KEY_ID`和`AWS_SECRET_ACCESS_KEY`环境变量
* 该`aws.accessKeyId`和`aws.secretKey`Java系统属性
* 凭证配置文件位于`~/.aws/credentials`AWS CLI使用的默认位置()
* 通过Amazon EC2元数据服务提供的实例配置文件凭据
将在S3中创建以下文件夹结构:
```
s3://bucket_name/username/notebook-id/
```
```
通过在zeppelin-env.sh文件中设置环境变量进行配置:
```
```
export ZEPPELIN_NOTEBOOK_S3_BUCKET = bucket_name
export ZEPPELIN_NOTEBOOK_S3_USER = username
```
```
或者使用文件zeppelin -site.xml取消注释并完成S3设置:
```
```
<property>
<name>zeppelin.notebook.s3.bucket</name>
<value>bucket_name</value>
<description>bucket name for notebook storage</description>
</property>
<property>
<name>zeppelin.notebook.s3.user</name>
<value>username</value>
<description>user name for s3 folder structure</description>
</property>
```
```
取消下一个属性的注释使用S3NotebookRepo类:
```
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.S3NotebookRepo</value>
<description>notebook persistence layer implementation</description>
</property>
```
```
注释下一个属性来禁用本地git笔记本存储(默认):
```
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.GitNotebookRepo</value>
<description>versioned notebook persistence layer implementation</description>
</property>
```
### S3中的数据加密
#### AWS KMS加密密钥
要使用[AWS KMS](https://aws.amazon.com/kms/)加密密钥加密笔记本,请在文件**zeppelin-env.sh**中设置以下环境变量:
```
export ZEPPELIN_NOTEBOOK_S3_KMS_KEY_ID = kms-key-id
```
```
或者在zeppelin -site.xml中使用以下设置:
```
```
<property>
<name>zeppelin.notebook.s3.kmsKeyID</name>
<value>AWS-KMS-Key-UUID</value>
<description>AWS KMS key ID used to encrypt notebook data in S3</description>
</property>
```
```
要设置自定义KMS密钥区域,请在文件zeppelin-env.sh中设置以下环境变量:
```
```
export ZEPPELIN_NOTEBOOK_S3_KMS_KEY_REGION = kms-key-region
```
```
或者在zeppelin -site.xml中使用以下设置:
```
```
<property>
<name>zeppelin.notebook.s3.kmsKeyRegion</name>
<value>target-region</value>
<description>AWS KMS key region in your AWS account</description>
</property>
```
```
在第二列(例如)target-region中更详细地描述了格式。Region us-east-1
```
#### 自定义加密材料提供者类
[`EncryptionMaterialsProvider`](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/EncryptionMaterialsProvider.html)只要在类路径中可用,并且可以从系统属性或其他机制初始化本身,您可以使用自定义类。要使用它,请在文件**zeppelin-env.sh**中设置以下环境变量:
```
export ZEPPELIN_NOTEBOOK_S3_EMP = class-name
```
```
或者在zeppelin -site.xml中使用以下设置:
```
```
<property>
<name>zeppelin.notebook.s3.encryptionMaterialsProvider</name>
<value>provider implementation class name</value>
<description>Custom encryption materials provider used to encrypt notebook data in S3</description>
</property>
```
## 存储在Azure中
使用`AzureNotebookRepo`您可以连接您的Zeppelin与您的Azure帐户笔记本电脑存储。
首先,输入你的`AccountName`,`AccountKey`以及`Share Name`在文件**飞艇-site.xml中**注释掉并完成下一个特性:
```
<property>
<name>zeppelin.notebook.azure.connectionString</name>
<value>DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey></value>
<description>Azure account credentials</description>
</property>
<property>
<name>zeppelin.notebook.azure.share</name>
<value>zeppelin</value>
<description>share name for notebook storage</description>
</property>
```
```
其次,您可以通过注释下一个属性来初始化zeppelin -site.xmlAzureNotebookRepo文件中的类:
```
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.GitNotebookRepo</value>
<description>versioned notebook persistence layer implementation</description>
</property>
```
```
并评论:
```
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.AzureNotebookRepo</value>
<description>notebook persistence layer implementation</description>
</property>
```
```
如果要同时使用本地git存储与Azure存储,请使用以下属性:
```
```
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.GitNotebookRepo, apache.zeppelin.notebook.repo.AzureNotebookRepo</value>
<description>notebook persistence layer implementation</description>
</property>
```
```
或者,您可以通过注释掉下一个属性来指定文件zeppelin -site.xml中的Azure文件夹结构名称:
```
```
<property>
<name>zeppelin.notebook.azure.user</name>
<value>user</value>
<description>optional user name for Azure folder structure</description>
</property>
```
## 存储在ZeppelinHub
ZeppelinHub存储层可以与您的ZeppelinHub帐户开箱即用的Zeppelin实例连接。首先,您需要在zeppelin **-site.xml中**注释掉以下属性:
```
<!-- For connecting your Zeppelin with ZeppelinHub -->
<!--
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.GitNotebookRepo, org.apache.zeppelin.notebook.repo.zeppelinhub.ZeppelinHubRepo</value>
<description>two notebook persistence layers (local + ZeppelinHub)</description>
</property>
-->
```
```
或者在文件zeppelin-env.sh中设置环境变量:
```
```
export ZEPPELIN_NOTEBOOK_STORAGE="org.apache.zeppelin.notebook.repo.GitNotebookRepo, org.apache.zeppelin.notebook.repo.zeppelinhub.ZeppelinHubRepo"
```
其次,您需要在文件**zeppelin-env.sh**中设置环境**变量**:
```
export ZEPPELINHUB_API_TOKEN = ZeppelinHub token
export ZEPPELINHUB_API_ADDRESS = address of ZeppelinHub service (e.g. https://www.zeppelinhub.com)
```
```
您可以token在相应的帮助页面上获取有关生成和使用身份验证的更多信息。
```
- 快速入门
- 什么是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) )