1.概述

  在大数据应用场景中,处理数据分析方面,由于开发者的水平不一样,使用的编程语言也不尽相同,可能会涉及到R、Python、Java、Scala等,数据计算模型也估计不一样,可能涉及的有Spark、Hive、Flink、Kylin等等。本篇博客笔者给大家介绍的内容并不是告诉大家如何去使用。在《Zeppelin使用心得》中有介绍如何使用,这里就不多做赘述了,今天主要是给大家剖析Zeppelin的源码模块。

2.内容

  目前Zeppelin官方已经发布版本为0.7.3,源码带托管在Github上,大家可以先将Zeppelin的源码在Github上下载下来。Zeppelin的项目结构是以Maven的形式存在的,由多个Module构成,分为框架核心Module和其他Interpreter Module,源码结构如下图所示:

  从截图中可以看出,其实Zeppelin到目前为止,集成了很多插件,比如Beam、HBase、ES、Flink、Kylin、Pig等,这些都是平时大数据场景下常用的。

2.1 模块分析

  Zeppelin的入口是ZeppelinServer(在zeppelin-server模块下)这个类下的Main函数,通过Jetty内嵌服务器提供WebSocket服务和Restful服务,还基于Shiro提供了权限认证和用户校验功能,都是使用Java编程语言实现的。在zeppelin-zengine模块下,实现Notebook的持久化和检索功能,同样使用Java语言实现。在zeppelin-interpreter模块下,通过调用zeppelin-zengine中的Thrift服务,来实现解释器的交互功能。在zeppelin-web模块下,用于脚本语言编写以及数据的可视化,使用AngularJS前端框架实现。其他模块详见下表。

名称 说明 实现语言
zeppelin-server 整个系统入口,提供服务器功能、权限认证以及用户校验等功能 Java
zeppelin-zengine 实现Zeppelin中Notebook的持久化和检索功能 Java
zeppelin-interpreter 执行解释器 Java
zeppelin-web 业务脚本语言编写、数据分析界面、数据可视化与结果导出 AngularJS
zeppelin-display 让前端的AngularJS元素与后台数据进行绑定,进行数据交互 Scala
zeppelin-distribution 用于存放编译后的二进制安装包    
zeppelin-examples 示例代码,用于测试  
helium-dev 新特性,让解释器,存储插件加入到Zeppelin中时,不需要重启Zeppelin服务 Java

  Zeppelin项目运用了许多编程语言和框架,属于一个混合项目。

3.源码调试

  明白Zeppelin各个模块的功能和作用后,我们可以尝试去调试一下Zeppelin的源码,这里我们将Zeppelin的源码导入到 IDEA 编辑器,然后找到ZeppelinServer启动,如下图所示:

  然后选择“Run 'ZeppelinServer.main()'”命令即可,等待服务启动完成,启动成功后,会在编辑器控制台打印日志,如下图所示:

  这里,在启动端口默认是8080,在ZeppelinConfiguration类下可以进行编辑,如下图所示:

  然后,我们可以到浏览器预览调试结果,如下图所示:

  一般在二次开发完成Zeppelin的功能后,我们会将源代码重新编译打包,可以使用Maven打包命令,如下所示:

mvn clean package -Pbuild-distr -Dcheckstyle.skip=true -DskipTests

  打包完成后,会在zeppelin-distribution的target目录下生成一个二进制的软件安装包。

4.关系图

  这里笔者给大家整理了Zeppelin-0.7.3的各个Module之间的关系图,如下所示:

5.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉。

联系方式: 
邮箱:smartloli.org@gmail.com 
Twitter:https://twitter.com/smartloli 
QQ群(Hadoop - 交流社区1):424769183 
温馨提示:请大家加群的时候写上加群理由(姓名+公司/学校),方便管理员审核,谢谢!

热爱生活,享受编程,与君共勉!

本文转自哥不是小萝莉博客园博客,原文链接:http://www.cnblogs.com/smartloli/,如需转载请自行联系原作者

Zeppelin源码相关推荐

  1. zeppelin源码分析(1)——编译、调试和maven modules分析

    Zeppelin,于2016-5-18日从Apache孵化器项目毕业成为Apache顶级项目,采用Java(主要)+Scala+R+PythonR+Bash+JS混合开发,采用maven作为build ...

  2. zeppelin源码分析(0)——zeppelin要解决什么问题

    通过我其他的zeppelin分析文章,大家可以从中了解zeppelin是什么样的.本篇试着阐述问题的另外一面,zeppelin为什么是这样的?本文从需求出发,探寻zeppelin的架构设计.技术选型. ...

  3. Zeppelin源码编译指南

    依赖安装及配置 操作系统:ubuntu 20.04 CPU架构:x86_64 安装依赖: sudo apt-get update sudo apt-get install git openjdk-8- ...

  4. zeppelin源码分析(4)——interpreter的调度和任务封装

    SchedulerFactory工厂类负责创建所有的Scheduler实例.SchedulerFactory本身采用了Singleton设计模式,保证全局唯一实例,与Scheduler和其实现类之前形 ...

  5. 如何源码编译zeppelin

    1.下载源码包 git clone https://github.com/apache/zeppelin.git 2.编译对应的CDH的版本 mvn clean package -Pspark-1.6 ...

  6. Windows下载android2.2完整源码

    前两天看到有人给我留言,才发现很久没写过东西了.不过,最近也没做什么东西.下载了一个cygwin,在Windows下载android完整代码. 1.  下载安装cygwin.参考http://yuan ...

  7. Ambari 及 hdp 相关源码地址汇总

    点击卡片"大数据实战演练",选择"设为星标"或"置顶" 回复"资料"可领取独家整理的学习资料! 了解我的小伙伴都知道,我 ...

  8. zeppelin0.9源码编译

    一.下载zeppelin0.9源码 zeppelin0.9源码下载地址: https://github.com/apache/zeppelin git clone https://github.com ...

  9. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

最新文章

  1. detach detach_ pytorch
  2. 使用Python,Opencv进行二维直方图的计算及绘制
  3. 错误: 编码 GBK 的不可映射字符 (0x80)
  4. Webinar: An introduction to PacBio’s long-read sequencing how it has been used to make important s
  5. Visual Studio 2013 Update 2 and with Update 2
  6. Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow
  7. [Vue.js]实战 -- 电商项目(五)
  8. 吴恩达深度学习之三《结构化机器学习项目》学习笔记
  9. plsql设置代码提示和自动补全
  10. 自定义admin组件,Xamin
  11. C# 单例模式(转)
  12. cvLoadImage()的调用参数设置
  13. 零基础学习 自动化编程- 第一天 计算机语言
  14. 解决IAR编译警告Warning[Pa089]: enumerated type mixed with another enumerated type
  15. excel vba两个单元格内容合并
  16. 手机电子书分享:大前研一经典《专业主义》
  17. nginx: [emerg] events directive is not allowed here in /opt/myapi/nginx.conf:XX
  18. css斜条纹背景——linear-gradient
  19. 浅谈基于openssl的多级证书,Multi-level CA的签发和管理,以及双向认证
  20. C语言 数组中插入一个数

热门文章

  1. 民营企业的项目,真的很难做
  2. SAP MM模块常用概念--供应商评价
  3. SAP HUM 嵌套HU的场景下内向交货单Relationship Browser里只显示内层HU
  4. 调参侠看过来!两个提高深度学习训练效率的绝技
  5. SAP QM Quality Notification的凭证流
  6. SAP MMBE库存数量与在库序列号数量差异之处理
  7. 一篇文章,带你读懂人脸识别技术
  8. 机器学习(1)特征选择与特征抽取
  9. SAP LSMW 导入物料主数据报错 - You have not fully maintained the descriptions - 之分析
  10. thinkbook14 2021款的一些坑