levycui 发表于 2017-10-25 16:47:46

轻松搞定Zeppelin源码

本帖最后由 levycui 于 2017-10-25 16:49 编辑

问题导读:
1、如何理解Zeppelin的入口?
2、Zeppelin有哪些模块?
3、如何进行Zeppelin源码调试?
4、如何理解Zeppelin关系图?

static/image/hrline/3.gif


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项目运用了许多编程语言和框架,属于一个混合项目。

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

来源:http://www.cnblogs.com/smartloli/p/7669742.html
作者:哥不是小萝莉

美丽天空 发表于 2017-10-29 12:58:32

感谢分享

zjl583577906 发表于 2018-9-14 15:49:47

你好,有个问题请教,我在idea中运行源码,启动zeppelin却报错,
MultiException stack 1 of 1
java.nio.file.AccessDeniedException: E:\zjlwork\zeppelin\zeppelin\conf\interpreter.json737694752116618413.tmp -> E:\zjlwork\zeppelin\zeppelin\conf\interpreter.json
        at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301)
        at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
请问这种怎么解决

zjl583577906 发表于 2018-9-25 14:46:13

zjl583577906 发表于 2018-9-14 15:49
你好,有个问题请教,我在idea中运行源码,启动zeppelin却报错,
MultiException stack 1 of 1
java.nio. ...

把原来下的源码删掉了,重新下载了源码,按照git上的方法进行编译之后不会报错了
页: [1]
查看完整版本: 轻松搞定Zeppelin源码