最近部门打算构建个小规模的数据平台, 基础平台部分就用Hadoop、hive、spark这套,相对比较成熟了,交互分析这块儿的交给我来做个poc。刚好上周听说微众银行要开源他们的数据平台,跟老大请了半天假 过去听了下,貌似挺牛逼等。这里有宣传感兴趣的可以看下https://fintech.webank.com/wedatasphere?from=groupmessage&isappinstalled=0
考虑到我们这边很多数据开发同事擅长的技术不同,交互分析需要支持sql、Python、Scala,就到到GitHub社区逛了下,其中有两个工具比较适合我们,一个是Apache的zeppelin(https://github.com/apache/zeppelin,官网http://zeppelin.apache.org/ ),还有一个就是上周微众银行刚刚开源的工具 Scriptis,基于linkis,代码和资料都放出来了,这两个工具都支持在线编写sql,Python,Scala,还具备部分管理功能。具体地址:https://github.com/WeBankFinTech/Linkis
https://github.com/WeBankFinTech/Scriptis不过看介绍,各有千秋,zeppelin后台主要是解释器组成,支持的引擎非常多,jdbc、spark、Python、flink、hdfs等,管理功能稍弱,Scriptis后台要对接微众的linkis,看起来是一个中间件,提供了Python、spark、hive访问的客户端,引擎似乎少了点,但是管理功能比较强,特别是多租户隔离、资源管控,高可用这块儿对我们来说很重要。先不多说 先搞起来看看怎么玩的吧。
先搭建个zeppelin吧 直接到官网下载安装包,最新版本是0.8.1,下载链接
http://mirrors.tuna.tsinghua.edu.cn/apache/zeppelin/zeppelin-0.8.1/zeppelin-0.8.1-bin-all.tgz
安装步骤:
首先安装Hadoop hive spark等基础组件,版本的话我这边选的是 Hadoop2.7.2、 hive1.2.1 、spark2.1.0 、zeppelin0.8.1,这个基础组件安装网上大把我这里就省略了,重点介绍下zeppelin和linkis及scriptis吧
一、配置
1、shiro.ini
2、zeppelin-env.sh
3、zeppelin-site.xml
4、修改用户环境变量添加zeppelin的环境配置
5、Zeppelin启动
zeppelin-daemon.sh start
二、测试。
1、Spark解释器
2、Jdbc 测试
记得加下面的几个包 坑死我了。
3、Python测试
4、Shell测试
5、Shell下执行正常
解释器还有一大堆,晚点再测,我们主要用上面这几个。
zeppelin的管理部分,用户管理默认是用shiro,还支持LDAP,这部分挺不错的,可以结合公司的UM管理用户名、密码,不过角色授权部分可能比较麻烦 需要对接新系统。
Notebook支持协作这个功能也挺好,很多开发工作需要协作才能完成。比如数据预处理到数据挖掘、机器学习这个过程 步骤还挺多的,可视化部分也不错。
不过 资源管理部分似乎没有,全靠解释器的配置了,高可用的特性似乎目前也不支持。用户似乎看不到自己任务的关键执行进度,在用户资源上面没有整体大盘的概念。
接下来我们研究下微众这边scriptis 貌似要先安装linkis,我们先装上。
三、Linkis搭建
参考GitHub上安装文档即可步骤
安装包
步骤
https://github.com/WeBankFinTech/Linkis/blob/master/docs/zh_CN/ch1/deploy.md
我这里只讲下注意点
注意 安装的脚本 db.sh 和 config.sh 要转成unix格式,(dos2unix config.sh,dos2unix db.sh) 不然可能有莫名其名的报错
1、启动服务:
sh ./bin/start-all.sh
2、Jps查看进程:
3、查看服务
3、安装scriptis
安装包
安装文档
前端安装没有坑 很简单
4、浏览器访问
四、体验
1、Python执行没问题
2、Hivesql执行也没问题
3、Sparksql
4、Spark-Scala
5、Pyspark
这几个重点功能都没啥问题,能满足我们等需求,我们再来看看 这个资源管理、多租户隔离、高可用部分
6、资源管理服务:
这个地方对用户参数有限制,无用不可以随便设置多大的参数,或者提交多少任务。功能还是不错的。
7、多租户隔离:
每个用户都是单独的spark或则hive任务互相不影响,这个功能跟zeppelin的差不多吧。
这里就不演示了。
8、任务高可用测试
执行spark任务期间 后台模拟,
9、服务端高可用测试:
这个需要搭建两套linkis服务,暂时还没有测。
10、Scriptis 这里貌似还有些 贴心功能 udf函数和全局变量,这个开发的话用着很爽,很多功能做udf就调用就行。
任务管理器,引擎管理器 队列管理器
(微众的哥们儿 好热情啊,中间各种小白问题 都一一帮忙解决了,在此表示感谢)
综合上述测试
个人感觉:
1、都支持 多语言 多引擎,可视化(scriptis可视化发布到另外一个系统,还没有开源呢,坐等)。
2、Linkis+scriptis 前后端分离,相对轻量级些。
Zeppelin前后端融合在了一起,比较重量级,特别是解释器比较多,覆盖面广。
3、企业级特性:scriptis和linkis更具备企业特性,比较专注、实用性强。
4、用户透明 和可扩展性: linkis可以搭建多台,对用户无感,zeppelin的话搭建多台实例,用户是真正隔离开了。
5、多租户隔离 :用户单机执行Python的话 很有可能把zeppelin服务搞死,linkis是基于具体的某个微服务引擎,独立于web服务器。 zeppelin支持共享和隔离两张形式,linkis则每个用户完全独立。
6、Scriptis和linkis在一些细节上做的比较贴心,智能诊断,实时进度,udfs函数等,另外资源管控,多租户,高可用方面,也很强大,这些功能是我们的痛点,小规模集群,数据又敏感。听他们 说要把他们公司大数据套件全部开源,这是个好事,毕竟数据平台的组建,不止一个zeppelin或者说scriptis+linkis,需要一整套服务
晚点再深入了解下 。
微众这边也给了个对比图,欢迎大家拍砖,如果参与贡献也不错,有啥问题都可以问,微信群里的人非常open,真的很佩服这家公司的格局,还有做这个平台的人。
https://github.com/WeBankFinTech/Linkis
https://github.com/WeBankFinTech/Scriptis
Scriptis
Linkis