大数据AI Notebook产品介绍和对比

1,067 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

背景

大数据数据需要查询分析可视化工具,AI数据挖掘和探索也需要相关可视化编辑工具,开源产品主要有两个一个是Zeppelin notebook 一个是jupyter notebook,其中juypter主要用于数据科学家、算法分析人员使用python进行数据分析、算法建模,相关企业如aws、百度、腾讯都有基于jupyter notebook去进行定制化开发,zeppelin notebook比较偏重于大数据数据查询分析可视化,支持多种大数据计算引、存储引擎擎如:Spark、Flink、Hive、Kylin等,现在对这两个产品进行介绍

image.png

两个产品对比

Apache Zeppelin简介

Zeppelin是一个Web笔记形式的交互式数据查询分析工具,可以在线用scala和SQL对数据进行查询分析并生成报表,notebook可以包括多个paragraph(段)。paragraph是进行数据分析的最小单位,即在 paragraph中可以完成数据分析代码的编写以及结果的可视化查看。因此,一个paragraph 可看做是一个基本的任务单元。Zeppelin的后台数据引擎可以是Spark、flink、Python等,开发者可以通过实现更多的解释器来为Zeppelin添加数据引擎。

  • 多解释器支持

image.png

  • 丰富的数据可视化

image.png

  • 其他功能

image.png

  • IDEA插件 作为一个开发来说,通过idea插件跟zeppelin连接,可以很方便的编写代码,快速的进行数据查询分析。

image.png

Zeppelin 架构

image.png image.png

Zeppelin的核心功能就是:通过不同的解释器支持多种语言的repl,并对返回结果进行可视化展示。

主要分成三块 1.Zeppelin 前端 2.Zeppelin Server 3.Zeppelin Interpreter

Zeppelin前端是基于AngularJS

Zeppelin Server是一个基于Jetty的轻量级Web Server,主要负责以下一些功能:1.登陆权限管理 、 2.Zeppelin配置信息管理 、3.Interpreter 配置信息和生命周期管理、 4.Note存储管理 、5.插件机制管理

zeppelin采用WebSocket技术的必要性问题,zeppelin是共享式、Notebook式的大数据分析环境,以repl的方式执行以Paragraph为最小粒度的代码段。

首先repl的方式强调实时反馈执行结果,特别是在大数据环境下,一段代码可能需要执行很长时间,在执行的过程中,zeppelin的用户期望看到执行进度和中间结果,需要在前后端之间建立一个长连接,便于实时传递数据。

另外zeppelin的另一个亮点是其结果可视化能力,需要在前后台传递图片,并且支持较大数据量的传输的能力(相对传统http技术)。

再者,由于是共享式环境,一个Note可能被多个用户同时看到、甚至编辑,需要在各个已经打开了同一个Note的web客户端之间同步Note的代码、执行结果和进度信息。

Jupyter 简介

Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含代码、方程式、可视化和文本的文档。它的用途包括:数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等等。它具有以下优势:

可选择语言:支持超过40种编程语言,包括Python、R、Julia、Scala等。

分享笔记本:可以使用电子邮件、Dropbox、GitHub和Jupyter Notebook Viewer与他人共享。

交互式输出:代码可以生成丰富的交互式输出,包括HTML、图像、视频、LaTeX等等。

大数据整合:通过Python、R、Scala编程语言使用Apache Spark等大数据框架工具。支持使用pandas、scikit-learn、ggplot2、TensorFlow来探索同一份数据。

image.png

jupyter项目架构

架构图

image.png

项目关系图

image.png

jupyter项目利用了利用了ZeroMQ的Publisher-Subscriber模式来做通信,前后端通过websockets和http 请求进行交互。整个项目看起来挺负责,提供了灵活的可扩展的方式,可以通过定制kernel去实现。juypter 相比于zeppelin多进程的实现方式,资源利用率高,但是隔离性不如zeppelin。

总结

两个产品功能都差不多,不过相比较而言zeppeplin比较是适合企业级部署应用,支持比较多的大数据计算引擎,而juypter notebook比较适合于个人用户以及AI建模人员去使用,目前各大云厂商都有类似的解决方案,如果需要企业生产化的化基本上都是以云原生的方式去部署。

参考文档

wwj718.github.io/post/%E6%9E…