Ambari2.6.1集成Apache Kylin服务
一、前言
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
如果需要将Kylin服务受控于Ambari管控,那就需要集成服务了。
二、集成服务
关于ambari-Kylin的Python脚本已上传至github,具体地址参见:传送门
使用该项目的前提条件
- ambari主节点上安装
httpd服务并开启,将Kylin和Nginx的源码包放到/var/www/html/kylin目录下。(由于源码包太大,github上传不了,请到文章底部关注我的微信公众号,回复ambari-kylin获取云盘链接。也感谢您的关注!) - 在
ambari集群各主机已安装wget命令 - 适配
CentOS-7 64位系统,CentOS-6 64位系统(使用CentOS-6系统,启动nginx时可能会报错,下文会粘出解决方法),其他系统没有测试 - 适配于ambari2.6 + hdp 2.6.4.0-91,【ambari2.7(待适配)】
- 版本说明:Kylin 2.5.1 + Nginx 1.8.1
部署步骤:
- 将Kylin和Nginx的源码包放到Ambari主节点的
/var/www/html/kylin中,不需要解压。 - 这里我选择的stack版本是
2.6,执行一下命令:
1 | cd /var/lib/ambari-server/resources/stacks/HDP/2.6/services |
最终如图所示:

- 重启ambari:
ambari-server restart
Kylin部署方式
目前采用的Kylin部署集群方式相对来说简单,只需要增加Kylin的节点数,因为Kylin的元数据(Metadata)是存储在HBase中,只需要在Kylin中配置,让Kylin的每个节点都能访问同一个Metadata表就形成了Kylin集群(kylin.metadata.url 值相同)。并且Kylin集群中只有一个Kylin实例运行任务引擎(kylin.server.mode=all),其它Kylin实例都是查询引擎(kylin.server.mode=query)模式。
为了实现负载均衡,即将不同用户的访问请求通过Load Balancer(负载均衡器)(比如lvs,nginx等)分发到每个Kylin节点,保证Kylin集群负载均衡。对于负载均衡器可以启用SSL加密,安装防火墙,对外部用户只用暴露负载均衡器的地址和端口号,这样也保证Kylin系统对外部来说是隔离的。
我们的生产环境中使用的LB是nginx,用户通过LB的地址访问Kylin时,LB将请求通过负载均衡调度算法分发到Kylin集群的某一个节点,不会出现单点问题,同时如果某一个Kylin节点挂掉了,也不会影响用户的分析。
这种方式也不是完美的,但是比较好配置,一般场景下是可以满足的。
该项目修改如下:
Kylin和Nginx源码修改
修改了Kylin的日志输出为
/var/log/kylin/目录下修改Nginx的日志输出为
/var/log/nginx/目录下修改Nginx的pid文件路径为:
/var/run/nginx/nginx.pid
- 完善脚本逻辑,优化代码。
- 增加并修改
kylin.xml和nginx.xml文件内容 - 实现在ambari web UI修改配置项,保存后提示重启功能
- 由于
80端口与httpd端口冲突,所以修改Nginx的端口为81 - 解决nginx负载均衡后,需要刷新页面,重复登陆才可以访问到实时数据的问题,实现
session会话持久性
项目逻辑说明
- 通过
wget命令在主节点的本地仓库中下载Kylin和Nginx的源码,源码安装路径分别为:/usr/hdp/2.6.4.0-91/kylin和/usr/hdp/2.6.4.0-91/nginx。不要修改nginx的安装目录,否则启动nginx会报错。如果需要更改nginx的安装目录,需要重新编译nginx源码。 - 通过该服务脚本能够成功部署Kylin集群,三台主机:一个all模式,两个query模式,nginx节点可安装在任意一台节点上。
- 不足或需要注意的地方: 选择Kylin slave的时候,Kylin all所在节点上不能安装Kylin Query,这里在ambari界面上没有做限制。要注意。最终实现效果就是每个节点上都有Kylin服务,只不过模式不同,分工不同。
效果图



nginx在CentOS-6 64位系统启动失败问题解决方案
还拥有的功能
- Kylin服务依赖于hdfs,mapreduce,hive,hbase组件,如何定义ambari集群各服务组件的起停顺序,使Kylin服务组件在hdfs,mapreduce,hive,hbase组件之后启动呢,这是一个知识点
- 添加告警设置,如果某节点的Kylin端口挂掉了,给与用户报警展示
kylin + nginx 源码包太大,gitgub上传不了,并且上述还拥有的功能已经实现,如果有需要的可以私信我的公众号:回复ambari-kylin获取云盘链接,里面有整个源码包和自定义Kylin安装服务脚本完整版。
上述功能如果感兴趣的,可以微信搜索公众号私聊我:大数据实战演练或者扫描下方二维码关注即可:
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !
原文作者: create17
原文链接: https://841809077.github.io/2019/01/24/Ambari/自定义服务/Ambari2.6.1集成Apache-Kylin服务.html
版权声明: 转载请注明出处(码字不易,请保留作者署名及链接,谢谢配合!)




