开发者学堂课程【Apache Flink 入门到实战 - Flink 开源社区出品 :Apache Zeppelin(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/632/detail/10038
Apache Zeppelin(一)
内容介绍
一,Agender
二,Zeppelin Concept
三,Extension
四,Notebook Storage
五,Security
六,Flink Interpreter
七,怎样在 Flink 里开发程序
八,Jdbc interperter
九,Python Interpreter
十,Resources
一,Agender
1,什么是 Zeppelin
用一句话来概括,它是一个 interactive 的 west 的 IDE,那这里有两个关键词,一个是 interactive,另外一个 idinactive,就是交互式的意思,
IDE 的全称它的全称 integrateddevelopmentenvironment 中文的话可以称之为集成式开发环境那这个集成开发,
环境包括哪些东西?
第一点就是它有最基本的编译器的就是我们可以在编辑器里面,写代码之后首先需要编译,代码去到另外一些正常的真正的生产环境上去跑,这是一些功能,当然IDE 还会有其他一些功能,
所以,总的来说 IDE 就是一个,包含这些基本功能这样一个集成开发环境,zeppelin 作为这样一个 IDE,它本身也是具有这些基本的功能的。
所以和传统 IDE 相比的话,zeppelin 它有自己独特的地方,相对于传统ID,也有可能他有一些相对弱势的地方。
2,Traditional Approach会在本地左右开发票,在本地 ID 里面去写一些,写代码程序,会在本地去跑程序,如果有问题,修改代码,修改代码之后,如果可以在本地继续跑,然后会打个包,然后跌破到一个集训上去,去跑真正的那个 job,如果开发一个 flink 的一个程序的话,一般是这样一个流程,如果跑到集训上面,失败了,要重新回来,重新再 logo 在开发。
从第一步这样走到第三步,举个例子就是如果开发 flink 的 application 的话,就是这样一个流程。
3,Notebook Approach
如果在 notebook 环境里面,首先可以在 notebook 里面去做开发,可以在notebook 里面写,用 flink 的 API 去写代码,也可以去执行这些代码,可以在那Running 的那些 code,此外还可以在 notebook 里面去 deployed,发到 class 上面,不需要去打一个假包,然后去把它 SCP 到那个 class 上去,然后调用 flink 这种命令去跑教版,所有的这些,从开发最后到 department 整个这个流程,都是可以在这 notebook 这个环境里面去做,所以相对于传统 ID 的话,就是 notebook 会更加方便。
就是说只是有些情况适合 notebook ,有些情况还是适合于传统的那个 IDE。
就是说传统的 IDE 和 notebook,有一些哪些不同的地方,首先从复杂度这个角度来看,就是说如果这个 flink 程序,是相对来说是比较复杂的,
比如说有上千行的代码,有几百个的 class 那这种情况下,建议放到这个 IDE 里面去开发,如果扣流量相对会比较少一点,可能只有一两百行代码或者三四百行代码,建议在 notebook 的环境下面去做。
另外第二个维度是 interactivity 就是交互,交互就是说传统的 ID 里面开发的话,会首先需要把所有的代码工作写完成之后,然后有要至少一个像阿梅函数的入口,然后这样才能去跑代,但是在这就是传统的这个非交互式的方式。
交互式的方式就是说交互式的方式是写了一段代码,就要这种代码,马上看到这种代码所产生的效应这种就是交互式的一种方式。
所以在那个环境里面,它就是有这样一个交互式的一个特性,第三点是可视化。
在传统的里面是基本上没有这种可视化的功能,但是在 notebook 环境里面是有这个可视化的一个能力,所以,工作是需要做一些数据的可视化的 Notebook 是非常适合的。
所以总的来说,如果是要做一个非常复杂的一个大数据的一个产品的话,传统的IDE 是比较适合你,比如说你要做一个 poco,相对来说量不会太大,或者如果要是做一些数据分析的工作,
那 notebook 也会比较适合你,因为数据分析会需要不断的交互,不断的会有需要可视化的这种需求。那另外一点就是如果要做一些机器学习方面工作,也是非常适合的。这就是传统 IDE 和 notebook 之间的比较。
4,Zeppelin in Big Data
两个或者有两个要素在别的领域是必不可少的,第一个要素就是 data,数据第二个要素就是 computing 就是计算所有数据和计算是 bigdata 里面,最基本的两个要素,zeppelin 就是可以理解为作为数据和 computing 之间的这样一个桥梁,就在这个环境里面,你可以去利用 sip,它所衔接的那些引擎,所说的引擎,
包括 hive flink spark 或者这些引擎,可以用这些引擎去,去访问数据,然后去利用计算资源去处理数据,这个就是 zeppelin。
5,Zeppelin Architecture
cpu 架构图,从这张图上可以把它分为,三个层次,最左边开始看,是一个前端,第二个是它有一个 Sleeping server 可以理解成一个 webserver 这是它的第二层,Webserver 首先它会管理很多各种各样不同的东西,比如说包括 enterprise 包括他的权限管理,各式各样东西都会在这个 APP 里面,最右侧每个节点其实是代表一个 Internet。
Internet 中文可以解释为就是解释器,也可以直观地理解成就一个 Internet 就代表一个计算引擎,那这边的计算引擎。可以是一个 flink 计算机,也可以是个 spark 计算引擎,甚至也可以是一个 tensorflow 的计算引擎,本身它是一个开放式的一个架构,所以 Internet 在引擎这块,它是有有扩展性的。
凡事只要实现它的接口,就可以把引擎给接到 APP 上面去。
二,Zeppelin Concept
四个最重要的概念,一个是 Internet,Internet setting 就是每个 inter 或者每个引擎其实有很多很多配置信息的,提交一个 Java 的时候,需要设置一些不同的参数,针对每个脚本会有不同的参数。另外一个重要概念是个 notenote。
首先我们从 notebook 的话 notebook 就是你给中文翻译直白一点就是,笔记本,那 note 就是相当于是 notebook 里面的一个 note 或者是 notebook 是 note 的一个集合,可以把 note 理解成就是笔记本里面的一张纸。
Paragraph 就是,中文翻译段落,paragraph 是属于是隶属于 note,就是一个note 可以包含多个 paragraph,就是在一个 note,在一个一张纸上,可以写好几个段落,这个就是基本概念,这个会比较抽象。
三,Extension
主要有三个点可以扩展,一个是 Internet 就是说凡是它可以连接很多大数据的。
包括 highFlinkspark 这些东西都被限制,比如说,你自己内部有一个系统不是开源的你想连接到视频上面去,可以开发这样一个 Internet 然后,集成到 APP 里面去开发这样一个第三方 Internet 只要按照它的接口,然后分装一下你的 Internet 就可以。
第二点是 display system 就是它的一个输出系统,输出系统的他也可以做一些定制化,默认现在支持的有那么这么几种方式,一种是纯文本,那另外一种就是 HTML或者是也可以支持那种 Table 结构,Table 也可以就用或用图形化那种方式把结果呈现出来,这个是 displaysystem。
那第三块是格式化,格式化这块也是可以做扩展的,那zeppelin本身提供了一些基本的一些可视化的一些方法,比如说是,柱状图,饼状图,散列图,都是比较基本的可视化的方法。