Zeppelin


中文参考文档比较少,主要照官网 0.10.0 版本的docs过了一遍


Zeppelin概述

功能

支持各种语言、引擎的 大数据分析与可视化 WEB平台

​ 支持接入多种数据引擎,比如jdbc、spark、hive等

​ 支持多种语言进行交互式的数据分析,比如Scala、SQL、Python等等

安装

是一个java web项目,依赖于jdk

方式1:安装包
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页面
方式2:官方docker镜像
$ 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

概念

paragraph 段落

写代码,执行代码的单元,等同于一个Job。

分为3部分

  1. code section 编码

    # 第一行定义interpreter类型
    %flink
    # 开发代码
    coding...
    
  2. result section 执行结果

    内置了可视化功能,可自定义扩展

  3. Paragraph commands 操作【执行code,显示/隐藏code section,显示/隐藏result section,其他设置】

    显示排版,导出result链接

img

result section 可视化

任何语言后端的任何输出都可以被识别和可视化。

  • 内置可视化模块使用

https://zeppelin.apache.org/docs/0.10.0/usage/display_system/basic.html#table

请添加图片描述

  • 自定义可视化模块
    https://zeppelin.apache.org/docs/latest/development/helium/writing_visualization_basic.html

Note 笔记

paragraph的集合

可按显示顺序依次执行所有段落

定时调度

https://zeppelin.apache.org/docs/latest/usage/other_features/cron_scheduler.html

每个 notebook 提供了一个 cron 调度程序

Notebook 笔记本

Note的集合

image-20220830105650624

interpreter

解释器,对应一种语言、引擎

  • 允许将任何语言/数据处理后端插入 Zeppeli

  • 支持 20 多种不同的解释器,如 Spark、Flink、Python、R、JDBC、Markdown 和 Shell。

    • https://zeppelin.apache.org/docs/latest/#available-interpreters
  • 支持自定义新的解释器

InterpreterGroup:

一个InterpreterGroup中包含多个Interpreter,同组内的Interperter共享相同的配置信息,例如Spark和SparkSQL interpreter在一个InterpreterGroup内。

运行模式

Flink解释器 支持 4 种执行模式

  • Local
  • Remote
  • Yarn
  • Yarn Application

spark 解释器 4 种执行模式

  • Local
  • Standalone
  • Yarn
  • K8s
生命周期

0.8.0 之前,Zeppelin 没有解释器的生命周期管理。用户必须通过 UI 显式关闭解释器

0.8.0 开始,提供了一个新的接口 LifecycleManager来控制解释器的生命周期。目前,有两种实现方式:NullLifecycleManager(和0.8.0之前一样)和TimeoutLifecycleManager(闲置一段时间后自动关闭).

interpreter Setting

一个InterpreterGroup会有一个InterpreterSetting,包含interpreter的配置

例如,需要为 mysql解释器设置某些属性才能连接到 mysql 服务器。

  • mysql连接配置:img
Binding Mode,绑定模式

Interpreter Process 是一个 JVM 进程

有3种工作范围:Globally 全局,per note 每个note,per user 每个用户

有 3 种不同的模式来运行解释器进程:sharedscopedisolated

  1. shared共享: 所有段落共用 一个Interpreter进程,一个session
  2. scoped作用域:所有段落共用 一个Interpreter进程;但note有独立的session
  3. isolated隔离:所有段落都是独立的Interpreter进程和session

https://zeppelin.apache.org/docs/0.10.1/usage/interpreter/interpreter_binding_mode.html

其他

ZeppelinContext 上下文

功能:在不同note之间数据交互

在许多编程语言解释器(例如 Apache Spark、Python、R)中,zeppelin-context 可用作预定义变量z,可通过直接调用其方法来使用

ZeppelinContext(变量名为z)提供一些高级用法的Class

# 展示数据
	z.show(Batch Table、Stream Table)
传输对象
  1. 段落中使用
   %python
     z.put("objName", "hello word")
   	z.get("objName")
  1. 不同解释器之间
%spark
z.put("maxAge", 83)
%jdbc(interpolate=true)
select * from bank where age = {maxAge}
  1. DataFrame
%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

动态表单

功能:动态创建一些输入表单。

  1. md 可通过${}模板 定义输入变量
  2. 编程语言通过 ZeppelinContext提供的方法创建

请添加图片描述

https://zeppelin.apache.org/docs/latest/usage/dynamic_form/intro.html

原理

  • 前后台交互模型

img

Server

用于建立并维护前端网页与后端服务器之间的Websocket连接;

它其实是一个job listener,

  1. 接收并处理前端网页发来的Note执行请求,
  2. 在后端生成并执行相应的job,
  3. 将job执行的状态信息广播到所有的前端页面。
interpreter进程

zeppelin采用单独的jvm来启动interpreter进程,

每一个Interpreter都属于一个InterpreterGroup,同一个InterpreterGroup的Interpreters可以相互引用

  • 运行方式

JVM进程可以是和Zeppelin Server在同一台机器上(默认local方式),也可以run在Zeppelin集群里的其他任何机器上或者K8s集群的一个Pod里

  • 通讯方式

Interpreter进程与zeppelinServer进程之间采用Thrift协议通信

  • Interpreter接口
Open 		// 是初始化部分,只会调用一次。
Close 		// 是关闭释放资源的接口,只会调用一次。
Interpret 	// 会运行一段代码并返回结果,同步执行方式。

Cancel			//可选的接口,用于结束interpret方法
getPregress 	//方法获取interpret的百分比进度
completion 		//基于游标位置获取结束列表,实现这个接口可以实现自动结束

使用

默认安装访问 http://ip:8080 开始

左侧列出了所有现有笔记,默认存储在$ZEPPELIN_HOME/notebook文件夹

  • ui介绍

https://zeppelin.apache.org/docs/latest/quickstart/explore_ui.html

mysql 实操案例

配置interpreter 连接数据库
  1. 打开interpreter
image-20220829112913168
  1. 新建interpreter,类型为jdbc,配置properties(主要是url,user,password,dirver)
    请添加图片描述

  2. 添加对应版本的maven依赖 mysql:mysql-connector-java:8.0.22
    请添加图片描述

  3. 完成
    请添加图片描述

创建note,执行sql

请添加图片描述

数据可视化

请添加图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyc1211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值