Ambari 集成 Apache Kylin 服务(适配于 2.6.x / 2.7.x 版本)

一、前言

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

如果需要将Kylin服务受控于Ambari管控,那就需要集成服务了。

二、集成服务

<!--more-->

关于ambari-Kylin的Python脚本已上传至github,具体地址参见: 传送门

使用该项目的前提条件

  1. ambari主节点 上安装 httpd 服务并开启, 将Kylin和Nginx的源码包 放到 /var/www/html/kylin 目录下。(由于源码包太大, github 上传不了,请到文章底部关注 我的微信公众号 ,回复 ambari-kylin 获取云盘链接。也感谢您的关注!)
  2. ambari 集群 各主机 已安装 wget 命令
  3. 适配 CentOS-7 64 位系统, CentOS-6 64 位系统(使用 CentOS-6 系统,启动 nginx 时可能会报错, 下文会粘出解决方法 ),其他系统没有测试
  4. 适配于 ambari2.6 + hdp 2.6.4.0-91 ,【ambari2.7(待适配)】
  5. 版本说明: Kylin 2.5.1 + Nginx 1.8.1

部署步骤:

/var/www/html/kylin
2.6
cd /var/lib/ambari-server/resources/stacks/HDP/2.6/services
mkdir KYLIN
# 将ambari-Kylin项目拷贝到KYLIN目录下
git clone https://github.com/841809077/ambari-Kylin.git /var/lib/ambari-server/resources/stacks/HDP/2.6/services/KYLIN
# 如果命令卡住,请手动下载压缩包并解压到KYLIN目录下

最终如图所示:

  1. 重启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 系统对外部来说是隔离的。

我们的生产环境中使用的 LBnginx ,用户通过 LB 的地址访问 Kylin 时, LB 将请求通过负载均衡调度算法分发到 Kylin 集群的某一个节点,不会出现单点问题,同时如果某一个 Kylin 节点挂掉了,也不会影响用户的分析。

这种方式也不是完美的,但是比较好配置,一般场景下是可以满足的。

该项目修改如下:

  1. Kylin和Nginx源码修改

    /var/log/kylin/
    /var/log/nginx/目录下
    /var/run/nginx/nginx.pid
    
  2. 完善脚本逻辑,优化代码。
  3. 增加并修改 kylin.xmlnginx.xml 文件内容
  4. 实现在ambari web UI修改配置项,保存后 提示重启 功能
  5. 由于 80 端口与 httpd 端口冲突,所以修改Nginx的端口为 81
  6. 解决 nginx负载均衡后,需要刷新页面,重复登陆才可以访问到实时数据的 问题 ,实现 session 会话持久性

项目逻辑说明

  1. 通过 wget 命令在主节点的本地仓库中下载 KylinNginx 的源码,源码安装路径分别为: /usr/hdp/2.6.4.0-91/kylin/usr/hdp/2.6.4.0-91/nginx 。不要修改nginx的安装目录,否则启动nginx会报错。 如果需要更改nginx的安装目录,需要重新编译nginx源码。
  2. 通过该服务脚本能够成功部署Kylin集群, 三台主机:一个all模式,两个query模式,nginx节点可安装在任意一台节点上。
  3. 不足或需要注意的地方: 选择Kylin slave的时候,Kylin all所在节点上不能安装Kylin Query,这里在ambari界面上没有做限制。要注意 。最终实现效果就是 每个节点上都有Kylin服务,只不过模式不同,分工不同。

效果图

nginx在CentOS-6 64位系统启动失败问题解决方案

点击这里获取解决方案

还拥有的功能

  1. Kylin服务依赖于hdfs,mapreduce,hive,hbase组件,如何定义ambari集群各服务组件的起停顺序,使Kylin服务组件在hdfs,mapreduce,hive,hbase组件之后启动呢,这是一个知识点
  2. 添加告警设置,如果某节点的Kylin端口挂掉了,给与用户报警展示

kylin + nginx 源码包太大,gitgub上传不了,并且 上述还拥有的功能已经实现 ,如果有需要的可以 私信我的公众号 :回复 ambari-kylin 获取云盘链接,里面有 整个源码包自定义Kylin安装服务脚本完整版

上述功能如果感兴趣的,可以 微信搜索公众号私聊我:大数据实战演练 或者 扫描下方二维码关注 即可:

点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是 人才

白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

如果本篇博客有任何错误,请批评指教,不胜感激 !

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章