• 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页面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    方式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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #命令说明
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其他支持模式:

    • flink,spark集群模式

    • 集成hadoop,使用hdfs 存储note,yarn模式

    • 多用户

    • 集成外部存储:git,oss,MongoDB

    概念

    paragraph 段落

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

    分为3部分

    1. code section 编码

      # 第一行定义interpreter类型
      %flink
      # 开发代码
      coding...
      
      • 1
      • 2
      • 3
      • 4
    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
    • 2
    传输对象
    1. 段落中使用
       %python
         z.put("objName", "hello word")
       	z.get("objName")
    
    • 1
    • 2
    • 3
    1. 不同解释器之间
    %spark
    z.put("maxAge", 83)
    
    • 1
    • 2
    %jdbc(interpolate=true)
    select * from bank where age = {maxAge}
    
    • 1
    • 2
    1. DataFrame
    %jdbc(saveAs=bank)
    select * from bank
    
    • 1
    • 2
    %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'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    动态表单

    在 Scala 和 Python 环境中,您可以通过编程方式创建表单。

    z.input()
    z.select()
    z.checkbox()
    
    • 1
    • 2
    • 3

    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 		//基于游标位置获取结束列表,实现这个接口可以实现自动结束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    使用

    默认安装访问 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

    请添加图片描述

    数据可视化

    请添加图片描述

  • 相关阅读:
    Java基础知识(知识点)
    爬虫入门基础与Selenium反爬虫策略
    金融业信贷风控算法7-分类场景之决策树和随机森林
    通过CRM软件系统赢得销售机会的五大原则
    AI推介-大语言模型LLMs论文速览(arXiv方向):2024.02.25-2024.03.01
    Spring Cloud Alibaba入门教程-3.2【微服务负载均衡器LoadBalancer】
    API(八)cosocket常用SDK
    聊聊MySQL是如何处理排序的
    CentOS7 Hadoop3.3.0 安装与配置
    2023了,是时候使用pnpm了!
  • 原文地址:https://blog.csdn.net/xyc1211/article/details/126608729