我正在使用Spark 在AWS EMR 4.3上运行预安装的 Zeppelin Sandbox。
我在Zeppelin上创建了一个Notebook(在EMR集群上),现在我想导出该笔记本,以便下次启动EMR集群时可以快速运行它。
事实证明 Zeppelin还不支持笔记本电脑的导出(?)。
这很好,因为很明显,如果你可以访问Zeppelin文件夹已安装'在,然后您可以保存包含笔记本的文件夹,然后可能将该文件夹放在另一台计算机上的Zeppelin安装中以访问笔记本。
(所有这些都来自http://fedulov.website/2015/10/16/export-apache-zeppelin-notebooks/)
麻烦的是,我找不到“安装”文件夹的位置'对于Zeppelin来说是EMR。
ps - '安装文件夹'可能稍微不正确,根据上面的帖子,我应该查看/opt/zeppelin
,这在我的EMR集群的主服务器中不存在。
答案 0 :(得分:3)
编辑:现在,Zeppelin支持从网络界面本身以json格式导出笔记本电脑!页面中央顶部有一个小图标,可以导出笔记本。
Zeppelin笔记本可以在带有Zeppelin Sandbox的AWS EMR集群中的/var/lib/zeppelin/notebook
下找到。笔记本包含在此目录的文件夹中。
这些文件夹具有随机名称,与Notebook的名称不对应。
ls /var/lib/zeppelin/notebook/
2A94M5J1Y 2A94M5J1Z 2AZU1YEZE 2B3D826UD
每个文件夹(代表一个笔记本)中都有一个note.json
文件,其中包含Notebook的名称和所有其他详细信息。
要导出笔记本,请选择与您要查找的笔记本相对应的笔记本文件夹,将该文件夹复制到您希望笔记本可用的新Zeppelin安装中。
上述说明来自:http://fedulov.website/2015/10/16/export-apache-zeppelin-notebooks/
就在AWS设置中,Zeppelin笔记本将在/var/lib/zeppelin/notebook
答案 1 :(得分:0)
其他解决方案将在您的EMR群集中创建一个步骤来备份您的所有笔记本电脑,因为每个笔记本电脑有一个单调乏味。
<强> S3:// {s3_bucket} /notebook/notebook_backup.sh 强>
#!/bin/bash
# - Upload Notebooks backups.
aws s3 cp /var/lib/zeppelin/notebook/ s3://{s3_bucket}/notebook/`date +"%Y/%m/%d"` --recursive
# - Update latest folder with latest Notebooks versions.
aws s3 rm s3://{s3_bucket}/notebook/latest --recursive
aws s3 cp /var/lib/zeppelin/notebook/ s3://{s3_bucket}/notebook/latest --recursive
然后在您的EMR中添加Step to run your own script。
s3://elasticmapreduce/libs/script-runner/script-runner.jar 将允许您从S3运行脚本。
答案 2 :(得分:0)
Zeppelin版本(0.5.6)及更高版本(包含在Amazon EMR版本4.4.0及更高版本中)支持使用Configuration json文件设置笔记本存储。 https://aws.amazon.com/blogs/big-data/import-zeppelin-notes-from-github-or-json-in-zeppelin-0-5-6-on-amazon-emr/
您需要在名为/ user / notebook的S3存储桶中创建目录 (用户是以下配置的名称)
所以如果您的S3存储桶是
S3://my-zeppelin-bucket-name
你需要:
S3://my-zeppelin-bucket-name/user/notebook
并且在以下配置中,您不包含S3://前缀
将此保存为.json文件,然后将其存储在S3存储桶中,当您启动群集时,会有一个Configuration部分,您可以将其指向此文件。然后,当群集启动时,将配置的各个部分注入到EMR上的不同hadoop工具的各种配置中。在这种情况下,zeppelin-env将在安装Zeppelin之前在启动时进行编辑。
一旦你运行了一次集群,你就可以克隆它,它会记住这个配置,或者使用cloudformation或者像ansible这样的脚本来编写脚本,这样你的集群总是会在S3上存储笔记本电脑。
[
{
"Classification": "zeppelin-env",
"Properties": {
},
"Configurations": [
{
"Classification": "export",
"Properties": {
"ZEPPELIN_NOTEBOOK_STORAGE":"org.apache.zeppelin.notebook.repo.S3NotebookRepo",
"ZEPPELIN_NOTEBOOK_S3_BUCKET":"my-zeppelin-bucket-name",
"ZEPPELIN_NOTEBOOK_USER":"user"
},
"Configurations": [
]
}
]
}
]