中文参考文档比较少,主要照官网 0.10.0 版本的docs过了一遍
支持各种语言、引擎的 大数据分析与可视化 WEB平台
支持接入多种数据引擎,比如jdbc、spark、hive等
支持多种语言进行交互式的数据分析,比如Scala、SQL、Python等等
是一个java web项目,依赖于jdk
1. 官网下载二进制包,解压 $ZEPPELIN_HOME
2. $ZEPPELIN_HOME/conf/zeppelin-env.sh 配置jdk路径
3. $ZEPPELIN_HOME/conf/zeppelin-site.xml 配置端口
4. $ZEPPELIN_HOME/bin/zeppelin-daemon.sh start 启动
5. 访问web页面
$ docker pull apache/zeppelin:0.10.1
$ docker run -u $(id -u) -p 8080:8080 -itd --rm -v $PWD/logs:/logs -v $PWD/notebook:/notebook -e ZEPPELIN_LOG_DIR='/logs' -e ZEPPELIN_NOTEBOOK_DIR='/notebook' --name zeppelin apache/zeppelin:0.10.1
# 访问 ip:8080
#命令说明
docker run
-u $(id -u) #创建目录权限
-p 8080:8080 #访问端口
-itd --rm
# 配置:logs,笔记存储地址
-v $PWD/logs:/logs
-v $PWD/notebook:/notebook
-e ZEPPELIN_LOG_DIR='/logs'
-e ZEPPELIN_NOTEBOOK_DIR='/notebook'
--name zeppelin apache/zeppelin:0.10.1
其他支持模式:
flink,spark集群模式
集成hadoop,使用hdfs 存储note,yarn模式
多用户
集成外部存储:git,oss,MongoDB
写代码,执行代码的单元,等同于一个Job。
分为3部分
code section 编码
# 第一行定义interpreter类型
%flink
# 开发代码
coding...
result section 执行结果
内置了可视化功能,可自定义扩展
Paragraph commands 操作【执行code,显示/隐藏code section,显示/隐藏result section,其他设置】
显示排版,导出result链接

任何语言后端的任何输出都可以被识别和可视化。
https://zeppelin.apache.org/docs/0.10.0/usage/display_system/basic.html#table

paragraph的集合
可按显示顺序依次执行所有段落
https://zeppelin.apache.org/docs/latest/usage/other_features/cron_scheduler.html
每个 notebook 提供了一个 cron 调度程序
Note的集合
解释器,对应一种语言、引擎。
允许将任何语言/数据处理后端插入 Zeppeli
支持 20 多种不同的解释器,如 Spark、Flink、Python、R、JDBC、Markdown 和 Shell。
支持自定义新的解释器
一个InterpreterGroup中包含多个Interpreter,同组内的Interperter共享相同的配置信息,例如Spark和SparkSQL interpreter在一个InterpreterGroup内。
Flink解释器 支持 4 种执行模式
spark 解释器 4 种执行模式
0.8.0 之前,Zeppelin 没有解释器的生命周期管理。用户必须通过 UI 显式关闭解释器
0.8.0 开始,提供了一个新的接口 LifecycleManager来控制解释器的生命周期。目前,有两种实现方式:NullLifecycleManager(和0.8.0之前一样)和TimeoutLifecycleManager(闲置一段时间后自动关闭).
一个InterpreterGroup会有一个InterpreterSetting,包含interpreter的配置
例如,需要为 mysql解释器设置某些属性才能连接到 mysql 服务器。

Interpreter Process 是一个 JVM 进程
有3种工作范围:Globally 全局,per note 每个note,per user 每个用户
有 3 种不同的模式来运行解释器进程:shared、scoped和isolated。
https://zeppelin.apache.org/docs/0.10.1/usage/interpreter/interpreter_binding_mode.html
功能:在不同note之间数据交互
在许多编程语言解释器(例如 Apache Spark、Python、R)中,zeppelin-context 可用作预定义变量z,可通过直接调用其方法来使用
ZeppelinContext(变量名为z)提供一些高级用法的Class
# 展示数据
z.show(Batch Table、Stream Table)
%python
z.put("objName", "hello word")
z.get("objName")
%spark
z.put("maxAge", 83)
%jdbc(interpolate=true)
select * from bank where age = {maxAge}
%jdbc(saveAs=bank)
select * from bank
%python.ipython
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
from plotnine import ggplot, geom_histogram, aes, facet_wrap
# 获取 pandas DataFrame
# getAsDataFrame参数 为 (%spark.sql 或 %jdbc)的result
bank = z.getAsDataFrame('bank')
(ggplot(bank, aes(x='age'))
在 Scala 和 Python 环境中,您可以通过编程方式创建表单。
z.input()
z.select()
z.checkbox()
https://zeppelin.apache.org/docs/latest/usage/other_features/zeppelin_context.html
功能:动态创建一些输入表单。
${}模板 定义输入变量
https://zeppelin.apache.org/docs/latest/usage/dynamic_form/intro.html

用于建立并维护前端网页与后端服务器之间的Websocket连接;
它其实是一个job listener,
zeppelin采用单独的jvm来启动interpreter进程,
每一个Interpreter都属于一个InterpreterGroup,同一个InterpreterGroup的Interpreters可以相互引用
JVM进程可以是和Zeppelin Server在同一台机器上(默认local方式),也可以run在Zeppelin集群里的其他任何机器上或者K8s集群的一个Pod里
Interpreter进程与zeppelinServer进程之间采用Thrift协议通信
Open // 是初始化部分,只会调用一次。
Close // 是关闭释放资源的接口,只会调用一次。
Interpret // 会运行一段代码并返回结果,同步执行方式。
Cancel //可选的接口,用于结束interpret方法
getPregress //方法获取interpret的百分比进度
completion //基于游标位置获取结束列表,实现这个接口可以实现自动结束
默认安装访问 http://ip:8080 开始
左侧列出了所有现有笔记,默认存储在$ZEPPELIN_HOME/notebook文件夹
https://zeppelin.apache.org/docs/latest/quickstart/explore_ui.html
新建interpreter,类型为jdbc,配置properties(主要是url,user,password,dirver)

添加对应版本的maven依赖 mysql:mysql-connector-java:8.0.22

完成


