🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 笔记本存储 原文链接 : [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在相应的帮助页面上获取有关生成和使用身份验证的更多信息。 ```