使用Kylin构建企业大数据分析平台的4种部署方式
本篇博客重点介绍如何使用Kylin来构建大数据分析平台。根据官网介绍,其实部署Kylin非常简单,称为非侵入式安装,也就是不需要去修改已有的
Hadoop大数据平台。你只需要根据的环境下载适合的Kylin安装包,选择一个Hadoop节点部署即可,Kylin使用标准的Hadoop API跟各个组件进行通信,不需要对现有的Hadoop安装额外的Agent。
Kylin部署的架构是一个分层的结构,最底层是数据来源层,我们可以通过Sqoop等工具将数据迁移到HDFS分布式文件系统。Kylin依赖Hadoop平台,包括组件HBase,Hive,MapReduce等,即Kylin运行在Hadoop构建的大数据层之上,Kylin平台部署好之后,业务系统连接Kylin,Kylin就把压力发布到Hadoop上做并行计算和查询。
对于Kylin的部署架构,一般都四种典型部署方式,从简单到复杂。
1. 第一种方式:
单实例部署方式(Single instance)。在Hadoop集群的一个节点上部署,然后启动即可。建模人员通过Kylin Web登录,进行建模和创建Cube。业务分析系统等发送SQL到Kylin,Kylin查询Cube并返回结果。
这种部署最大特点是简单快捷,而是单点,如果并发请求比较多(QPS > 50),单台Kylin节点将成为瓶颈,所以推荐使用集群(Cluster)部署方式。
2. 第二种方式:
Kylin部署集群方式相对来说也简单,只需要增加Kylin的节点数,因为Kylin的元数据(Metadata)是存储在HBase中,只需要在Kylin中配置,让Kylin的每个节点都能访问同一个Metadata表就形成了Kylin集群(kylin.metadata.url 值相同)。并且Kylin集群中只有一个Kylin实例运行任务引擎(kylin.server.mode=all),其它Kylin实例都是查询引擎(kylin.server.mode=query)模式。通常可以使用LDAP来管理用户权限。
为了实现负载均衡,即将不同用户的访问请求通过Load Balancer(负载均衡器)(比如lvs,nginx等)分发到每个Kylin节点,保证Kylin集群负载均衡。对于负载均衡器可以启用SSL加密,安装防火墙,对外部用户只用暴露负载均衡器的地址和端口号,这样也保证Kylin系统对外部来说是隔离的。
我们的生产环境中使用的LB是nginx,用户通过LB的地址访问Kylin时,LB将请求通过负载均衡调度算法分发到Kylin集群的某一个节点,不会出现单点问题,同时如果某一个Kylin节点挂掉了,也不会影响用户的分析。
这种方式也不是完美的,但是一般场景下是可以满足的。
3. 第三种方式:
Kylin非常适合读写分离,原因是Kylin的工作负载有两种:
- Cube的计算,调用MapReduce进行批量计算,而且延时很长的计算,需要密集的CPU和IO资源
- 在线的实时查询计算,就是Cube计算结束后进行查询,而且都是只读的操作,要求响应快,延迟低。
通过分析,我们发现第一种Cube的计算会对集群带来很大负载,从而会影响在线的实时查询计算,所有需要做读写分离。如果你的环境,基本都是利用夜间执行Cube计算,白天上班时间进行查询分析,那么可以考虑采用第二种部署方式。
其实Kylin也很容易部署这种组网方式。你需要单独部署一套HBase集群,在部署Kylin时,Hadoop配置项指向运算的集群,HBase的配置项指向单独部署的HBase集群。说白了,就是Hadoop和HBase集群的分离。
这种部署方式通常有以下步骤:
步骤一:分布部署Hadoop(MapReduce计算集群,以下简称计算)集群和HBase(HDFS存储,以下简称存储)集群;两套集群环境的Hadoop核心版本要一致,分别有各自的HDFS、Zookeeper等组件;
步骤二:在准备运行Kylin的服务器上,安装和配置Hadoop(计算)集群的客户端;通过 hadoop , hdfs , hive , mapred 等命令,可以访问Hadoop集群上的服务和资源;
步骤三:在准备运行Kylin的服务器上,安装和配置HBase(存储)集群的HBase客户端;通过 hbase 命令,可以访问和操作HBase集群;
步骤四:确保Hadoop(计算)集群和HBase(存储)集群的网络互通,且无需额外验证;可以从Hadoop(计算)集群的任一节点上,拷贝文件到HBase(存储)集群的任一节点;
步骤五:确保在准备运行Kylin的服务器上,通过hdfs命令行加上HBase集群NameNode地址的方式(比如hdfs dfs -ls hdfs://pro-jsz800000:8020/),可以访问和操作存储集群的HDFS。
步骤六:为了提升Kylin查询响应效率,准备运行Kylin的服务器,在网络上应靠近HBase集群,以确保密集查询时的网络低延迟;
步骤七:编辑conf/kylin.properties,设置 kylin.hbase.cluster.fs 为HBase集群HDFS的url,例如:kylin.hbase.cluster.fs=hdfs://pro-jsz800000:8020
步骤八:重启Kylin服务实例
4. 第四种方式:
前面三种方式,应该是绝大多数公司或个人研究采用的部署方式,其实还有一种更高级的部署是Staging和production多环境的部署。其实做开发的一般都会经历这样的环境,我们一个需求完成后,首先会进行开发环境测试,然后部署到Staging(可以理解为Production生产环境的镜像,或者测试环境),最后没有问题后才会发布到Production生产环境,这样做可以避免不当的设计导致对生产环境的破坏。
使用这种方案的场景:
假如一个新用户使用Kylin,可能他对Cube设计不是很熟悉,创建了一个非常不好的Cube,导致Cube计算时产生大量的不必要的运算,或者查询花费的时间很长,会对其他业务造成影响。我们不希望这个有问题的Cube能进入生产环境,那么就需要建立一个Staging环境,或则成为QA的环境。
Kylin提供了一个工具,几分钟就可以将一个Cube从Staging环境迁移到Production环境,不需要在新环境中重新build。因为在生产环境的Cube,将不允许修改,只能做增量的build。这样做保证了Staging和Production的分离,保证发布到Production上的Cube都是经过评审过的,所以对Production环境不会造成不可预料的影响,从而保证了Production环境的稳定。
使用Kylin构建企业大数据分析平台的4种部署方式的更多相关文章
- 《基于Apache Kylin构建大数据分析平台》
Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...
- 【转】使用Apache Kylin搭建企业级开源大数据分析平台
http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...
- 使用Apache Kylin搭建企业级开源大数据分析平台
转:http://www.thebigdata.cn/JieJueFangAn/30143.html 我先做一个简单介绍我叫史少锋,我曾经在IBM.eBay做过大数据.云架构的开发,现在是Kylige ...
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- Net Core SignalR 测试,可以用于unity、Layair、白鹭引擎、大数据分析平台等高可用消息实时通信器。
SignalR介绍 SignalR介绍来源于微软文档,不过多解释.https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?v ...
- CDH构建大数据平台-Kerberos高可用部署【完结篇】
CDH构建大数据平台-Kerberos高可用部署[完结篇] 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Kerberos相关的软件包并同步配置文件 1>.实验环境 ...
- Apache Kylin大数据分析平台的演进
转:http://mt.sohu.com/20160628/n456602429.shtml 我是来自Kyligence的李扬,是上海Kyligence的联合创始人兼CTO.今天我主要来和大家分享一下 ...
- Apache Kylin在4399大数据平台的应用
来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...
- Clickhouse 在大数据分析平台 - 留存分析上的应用
导语 | 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以尝试用此方案来解决. 文章作者: ...
随机推荐
- for...in也反复执行语句,但它是用来操作对象的
for...in也反复执行语句,但它是用来操作对象的
- 工作中总结的常用PHP代码
[目录] ◆PHP常用的代码 ◆HTML常用代码 [值传递 和 引用传递] [单例模式] [魔术常量] [代码调试(自定义一个简单的debug函数)] [thinkphp多表查询] [获取客户端IP地 ...
- Bash:-:-定义空变量作为输出结合换行符\n和column输出
RET="" declare -a HOST=() declare -a ALL_SVR=() declare -a FREESVR=() ;i<${#_ALL_AGENT_ ...
- android微信支付总结+自己搭建服务器
1.前期注册操作 1-1:微信开发平台:https://open.weixin.qq.com/ 1-2:创建移动应用 签名获取: 1.将自己的apk签名打包,运行到手机上. 2.将微信支付的签名工具, ...
- [转]CocoaPods安装和使用教程
转载地址:http://code4app.com/article/cocoapods-install-usage 目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用Coco ...
- Java,double类型转换成String,String装换成double型
今天,老师布置了小系统,银行用户管理系统,突然发现自己的基础知识好薄弱,就把这些记录一下, double类型转化string:Double.toString(double doub); String类 ...
- h5网页中使用打电话功能
如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ...
- Android线程中设置控件
在Android中经常出现多线程中设置控件的值报错的情况,今天教大家封装一个简单的类避免这样的问题,同样也调用实现也非常的方便. 自定义类: /** * Created by wade on 2016 ...
- Lucky and Good Months by Gregorian Calendar - POJ3393模拟
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Description Have ...
- 教你如何查看一款App里面所包含的图片
在开发制作App的过程中,有时候会想看看一些精美的App里面所设计的素材.这个时候就需要用到我给大家展现的方法了.下面就看看该如何操作能让一个App呈现出它原始的一面,这次我以Any.Do为例给大家演 ...