0 概念:
这里的kylin是 OLAP的范畴,是ebay上海研发团队研发的一个多维存储的产品,目的是为了
解决hbase紧依靠rowkey来快速查询的局限, 其核心是 空间换时间, 不是国产linux的kylin操作系统
1 说明:
1 使用apache原生,这里搭建成功的版本为: (kylin官网建议使用 hotonworks sandbox 而且看kylin/bin的文件也都有sandbox的痕迹 这里我使用apache 原生版本) apache-kylin-0.7.1 apache-hive-0.14.0 hadoop-2.2.0 hbase-0.98.12 zookeeper-3.4.5 2其中一些说明如下, 0 jdk1.7版, 使用物理机器为 172.17.199.11 172.17.199.12 172.17.199.13 1 必须是 hadoop-2.2.0版本, 必须是hive0.14以上版本(kylin maillist建议是这样) 2 hive解压后的命名必须为hive ----> 可以看kylin/bin/find-hive-dependency.sh 22行代码, 3 建议机器为8G内存,如果是用虚拟机搭建单机环境,那么虚拟机建议给到5G+内存,否则可能kylin启动有问题,比如页面无法访问,或者bulid sample时候死机 4 建议kylin.sh中 手动导出 kylin_home 可以查看我上次的附件 kylin.sh第二行 然后,必须启动的服务有: 1 hadoop2的hdfs yarn 以及 jobhistory 2 hive --service metastore & 3 zookeeper 4 hbase 5 kylin 6 如上几项必须设置在集群每台机器的环境变量中
2 集群生态分布如下:
集群搭建在 172.17.199.11, 172.17.199.12, 172.17.199.13上,三台机器内存都是64G
集群生态分布如下:
hadoop2.2.0
机器 | 角色 | 启动的服务 |
172.17.199.11 | 主节点 |
Namenode SecondaryNameNode JobHistoryServer ResouceManager |
172.17.199.12 | 从节点 |
DataNode NodeManager |
172.17.199.13 | 从节点 |
DataNode NodeManager |
Zookeeper-3.4.5
机器 | 启动的服务 |
172.17.199.11 | QuorumPeerMain |
172.17.199.12 | QuorumPeerMain |
172.17.199.13 | QuorumPeerMain |
Hbase-0.98.12
机器 | 启动的服务 |
172.17.199.11 | HMaster |
172.17.199.12 | HRegionServer |
172.17.199.13 | HRegionServer |
Hive-0.14.0
机器 | 启动的服务 |
172.17.199.11 |
hive客户端 hive metastore |
Kylin-0.7.1
机器 | 启动的服务 |
172.17.199.11 | kylin服务 |
3 集群安装前的说明:
1 保证11,12,13 ssh三台互通,关闭防火墙,设置好机器别名,以及机器别名和IP地址映射 2 配置好后的 /etc/profile如下: export JAVA_HOME=/usr/java/jdk1.7.0_71 export PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_HOME=/home/forkylin/hadoop-2.2.0 export HIVE_HOME=/home/forkylin/hive export KYLIN_HOME=/home/forkylin/kylin-0.7.1 export HBASE_HOME=/home/forkylin/hbase-0.98.12 export ZOOKEEPER_HOME=/home/forkylin/zookeeper-3.4.5 export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$KYLIN_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin export JAVA_HOME CLASSPATH
4 hadoop集群安装:
主要是mapred-site.xml yarn-site.xml 下mb内存的设置,如果不设置,在部署后kylin查询时,会卡死
配置好环境变量后启动hadoop集群,涉及到的命令:
start-all.sh mr-jobhistory-daemon.sh start historyserver
5 安装zookeeper集群:
参考链接 Zookeeper 简介 搭建
配置好环境变量后,启动时执行命令 zkServer.sh start
6 安装hbase集群:
参考链接 hbase简介 搭建
配置好环境变量后,启动时执行命令 start-hbase.sh
7 安装hive:
参考链接:0 hive 简介,安装,本地文件上传到hive操作
注意 解压后必须重命名为 hive
配置好环境变量后,启动时执行命令 hive -service metastore &
然后启动hive 查看hive客户端下能否查看表 创建表
8 安装kylin:
8.1 安装
a) 下载kylin到11节点, 这里解压到 /home/forkylin/kylin-0.7.1下 b) /home/forkylin/kylin-0.7.1/bin下 修改kylin.sh 显示声明 kylin_home,并在HBASE_CLASSPATH_PREFIX中显示增加$hive_dependency依赖,修改信息如下: export KYLIN_HOME="/home/airsupply/develope/kylin-0.7.1" 第二行 第35行 export HBASE_CLASSPATH_PREFIX=${tomcat_root}/bin/bootstrap.jar:${tomcat_root}/bin/tomcat-juli.jar:${tomcat_root}/lib/*:$hive_dependency:$HBASE_CLASSPATH_PREFIX c) 配置kylin的环境变量
8.2 启动
命令行任意位置下执行 kylin.sh start 可以通过 netstat -anp | grep 7070 查看(kylin默认使用7070端口) 也可以 tail -f /home/forkylin/kylin-0.7.1/tomct/logs 查看启动信息 启动成功后,访问 http://hadoop1:7070/kyliln/ 用户名 ADMIN 密码 KYLIN
8.3 kylin执行官网案例测试
a) 执行kylin.sh stop b) /home/forkylin/kylin-0.7.1/bin下执行 sample.sh 将kylin测试数据写到hive中 c) 执行kylin.sh start 此时在Hive下能看到kylin导入的表, kylin_cal_dt kylin_catagory_groups kylin_sales d) 访问http://hadoop1:7070/kyliln/cubes 界面如下:
选择 actions下的build选择框,后选择截止日期,提交job,
访问
http://hadoop1:7070/kylin/jobs 可以看到你刚提交的job, 此时kylin会把任务转交给mr
通过 tail -f /home/forkylin/kylin-0.7.1/tomcat/logs.kylin_job.log 事实查看 build日志信息
一般 build一个20G的数据,在上面这个集群下 跑了10小时, build上面kylin提供的sample案例 耗时2小时
build结果为:
9 注意事项:
a) 需要把11节点(别名hadoop1)上的hive目录拷贝到 12,13节点上,并在 12,13节点的 /etc/profile上显示导出 export hive_dependency=/home/forkylin/hive/conf:/home/forkylin/hive/lib/*:/home/forkylin/hive/hcatalog/share/hcatalog/hive-hcatalog-core-0.14.0.jar 因为kylin提交的任务交给mr后,hadoop集群将任务分发给从节点时,需要hive的依赖信息,因此需要在12,13上配置,否则mr任务报错为: hcatalogXXX找不到 b) 如果启动kylin时候 tomcat日志说无法解压 kylin.war 处理方式: /home/forkylin/kylin-0.7.1/tomcat/work/Catalina下的东西清空, ps -ef | grep java 后 kill -9 杀死所有kylin相关的进程(此时会把hadoop hive hbase zk都干掉) 然后再重启 一般都是因为启动的kylin过多,但是每次关闭的kylin都没有关闭死造成启动过多kylin造成的。 也可以通过 netstat -anp | grep 7070 查看7070被占用了多少次 如果过多 那么应该就是上面方式造成的,关闭多余的在重启,保证只有一个端口被占用
10 简单测试结果如下:
百万数据量下,在上面集群构建立方耗时800多min,物化文件28G 一个维度下,查询结果998949条,耗时: oracle 16s kylin 30s 按时间一个维度 查询结果65条 耗时: oracle 23s kylin 0.25s 按时间,行情两个维度 查询结果77025条 耗时: oracle 19s kylin 3.7s 按时间,科目两个维度 查询结果40625条 耗时: oracle 40s kylin 2.8s 按时间,机构,科目三个维度 查询结果20315条 耗时: oracle 44s kylin 9.2s
kylin的响应时间和实际返回条数成正比,在单维度查询下,针对oracle没有优势,
kylin更适合高度范化的聚合数据查询,不合适明细数据查询。
11 修改的kylin.sh文件贴上如下:
#!/bin/sh export KYLIN_HOME="/home/airsupply/develope/kylin-0.7.1" if [ $1 == "start" ] then dir=$(dirname ${0}) source ${dir}/check-env.sh tomcat_root=${dir}/../tomcat export tomcat_root #The location of all hadoop/hbase configurations are difficult to get. #Plus, some of the system properties are secretly set in hadoop/hbase shell command. #For example, in hdp 2.2, there is a system property called hdp.version, #which we cannot get until running hbase or hadoop shell command. # #To save all these troubles, we use hbase runjar to start tomcat. #In this way we no longer need to explicitly configure hadoop/hbase related classpath for tomcat, #hbase command will do all the dirty tasks for us: useSandbox=`cat ${KYLIN_HOME}/conf/kylin.properties | grep 'kylin.sandbox' | awk -F '=' '{print $2}'` spring_profile="default" if [ "$useSandbox" = "true" ] then spring_profile="sandbox" fi #retrive $hive_dependency source ${dir}/find-hive-dependency.sh #retrive $KYLIN_EXTRA_START_OPTS if [ -f "${dir}/setenv.sh" ] then source ${dir}/setenv.sh fi export HBASE_CLASSPATH_PREFIX=${tomcat_root}/bin/bootstrap.jar:${tomcat_root}/bin/tomcat-juli.jar:${tomcat_root}/lib/*:$hive_dependency:$HBASE_CLASSPATH_PREFIX export HBASE_CLASSPATH=$hive_dependency:${HBASE_CLASSPATH} export JAVA_OPTS="-Xms2048M -Xmx2048M -XX:MaxPermSize=512m" hbase ${JAVA_OPTS} ${KYLIN_EXTRA_START_OPTS} \ -Djava.util.logging.config.file=${tomcat_root}/conf/logging.properties \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true \ -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true \ -Djava.endorsed.dirs=${tomcat_root}/endorsed \ -Dcatalina.base=${tomcat_root} \ -Dcatalina.home=${tomcat_root} \ -Djava.io.tmpdir=${tomcat_root}/temp \ -Dkylin.hive.dependency=${hive_dependency} \ -Dspring.profiles.active=${spring_profile} \ org.apache.hadoop.util.RunJar ${tomcat_root}/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start > ${tomcat_root}/logs/kylin.log 2>&1 & echo $! > ${KYLIN_HOME}/pid & echo "A new Kylin instance is started by $USER, stop it using \"kylin.sh stop\"" if [ "$useSandbox" = "true" ] then echo "Please visit http://<your_sandbox_ip>:7070/kylin to play with the cubes! (Useranme: ADMIN, Password: KYLIN)" else echo "Please visit http://<ip>:7070/kylin" fi echo "You can check the log at ${tomcat_root}/logs/kylin.log" exit 0 elif [ $1 == "stop" ] then if [ ! -f "${KYLIN_HOME}/pid" ] then echo "kylin is not running, please check" exit 1 fi pid=`cat ${KYLIN_HOME}/pid` if [ "$pid" = "" ] then echo "kylin is not running, please check" exit 1 else echo "stopping kylin:$pid" kill $pid fi rm ${KYLIN_HOME}/pid exit 0 else echo "usage: kylin.sh start or kylin.sh stop" exit 1 fi
12 附加资料
附: http://www.kylin.io/ : kylin 官网首页 https://github.com/KylinOLAP/Kylin : kylin github首页 https://github.com/KylinOLAP/Kylin/blob/master/docs/Installation/On%20Hadoop%20CLI%20installation.md : 在hadoop基础上安装 https://github.com/KylinOLAP/Kylin/blob/master/docs/Tutorial/Quick%20play%20with%20a%20sample%20cube.md : Quick start with sample cube 运行案例 https://github.com/KylinOLAP/Kylin/issues/ kylin问题列表 , 比如 https://github.com/KylinOLAP/Kylin/issues/462 http://kylin.markmail.org/ 通过这里可以查询kylin mailing list中所有提问的问题 kylin如果有使用中的问题,kylin只支持订阅他们的邮件 并通过邮件方式来解答,如果你在github上提问 他们是不会回答实质问题的, 订阅kylin的mailing list做法如下: send any message to dev-subscribe@kylin.incubator.apache.org, then your'll subscribe our mail list.(there might be another confirming letter) 这里我用126邮箱发送但是无法接收到他们的回复邮件,最后用qq邮箱发送才能接收到到他们的回复邮件,根据回复邮件的提示,点击链接,后才能订阅成功 在订阅成功后,你就可以发送问题到dev@kylin.incubator.apache.org,到时候 他们会一对一的回复你的问题。 他们的回复邮件如下: Hi! This is the ezmlm program. I'm managing the dev@kylin.incubator.apache.org mailing list. I'm working for my owner, who can be reached at dev-owner@kylin.incubator.apache.org. To confirm that you would like 190184XXX@qq.com added to the dev mailing list, please send a short reply to this address: dev-sc.1431910996.pdgjekoiembmaillpnpm-190184501=qq.com@kylin.incubator.apache.org
相关推荐
Kylin 环境搭建是一个复杂的过程,需要逐步配置和测试。本文将指导读者从头开始搭建 Apache Kylin 环境,包括下载和安装、环境变量配置、kylin.properties 配置、启动和访问 WebUI、加载 sample 数据、创建模型和 ...
《Kylin搭建指南及配置详解》 Kylin是一款开源的分布式分析引擎,专为Apache Hadoop设计,用于提供亚秒级的SQL查询性能,以及大规模的数据集分析能力。本指南将详细阐述如何搭建Kylin环境,并解决在配置过程中可能...
测试数据的使用对于理解和优化Kylin的性能至关重要,它可以帮助我们更好地理解和掌握Kylin在实际应用中的表现。在实际工作中,合理地运用测试数据,可以确保Kylin系统在复杂业务场景下稳定高效运行。
3. **查询性能测试**:通过创建简单的Cube,执行SQL查询,评估Kylin的响应时间和结果准确性。 4. **故障排查**:模拟常见问题,如网络中断、服务异常,考察对问题定位和解决的能力。 这个资源包将是你学习和实践...
我们接触的国产系统和国产硬件也在不断的增多,忍不住的吐槽,现在的硬件是真的倒退了好多年,而且也特别的贵,但是为支持国产,我们也需要更多的进行国产化的适配和学习,linux下搭建比较简单,windows则比较复杂,...
Apache Kylin是一个开源的、企业级的大数据分析平台,专为Hadoop生态系统设计,用于提供亚秒级的SQL查询性能,即使...通过这个学习教程,你将逐步掌握如何在Hadoop环境中搭建和使用Kylin,从而提升你的大数据分析效率。
可以创建一个简单的Cube,导入数据,然后执行SQL查询,检查查询性能和结果的准确性。如果一切顺利,样例测试应能成功通过,这标志着读写分离的Kylin多维分析平台搭建完成。 总的来说,搭建一个读写分离的Kylin多维...
Kylin内网更新源的搭建
Kylin 的元数据管理和 Cube 构建过程都是通过 Hive 和 MapReduce 实现的。Hive 用于存储和读取源数据,MapReduce 用于执行复杂的聚合计算和连接操作,生成预计算的结果,并将其存储到 HBase 中。HBase 是一个非关系...
### Apache Kylin安装部署知识点详解 #### 一、Apache Kylin简介 Apache Kylin是一款开源的分布式分析引擎,它能够为Hadoop...通过这些知识点的学习,可以帮助您更好地理解和掌握Apache Kylin的使用方法和技术细节。
在操作使用Kylin之前,需要了解的是Kylin依赖于Hadoop集群,同时需要安装Hive和HBase。由于Kylin的数据立方体构建是基于Hive中的事实表和维度表的,因此在使用Kylin之前,你的Hive中需要有数据表存在。 文档中提到...
Kylin通过预计算(Cube)的方式,将复杂的SQL查询转化为简单的数据检索,极大地提高了数据分析的效率。它支持多种数据源,如Hive、HBase,并且能够与多种BI工具(如Tableau、Excel等)进行集成,为用户提供了一站式...
这个压缩包文件包含了进行Kylin测试环境搭建和功能验证所需的特定数据。 描述中提到的链接指向了一篇CSDN博客文章,文章详细介绍了如何进行Kylin的安装和配置。根据这个描述,我们可以推断这个压缩包可能包含如下...
基于Apache Kylin 构建大数据分析平台,这本书挺不错的
本实践方案主要探讨如何利用 Apache Hudi 和 Apache Kylin 这两个开源项目,来搭建这样一个系统。Apache Hudi 是一个面向大数据湖的文件系统,旨在支持数据更新和删除,而 Apache Kylin 是一个高性能的开源 OLAP ...
Kylin on Parquet的出现,不仅改变了存储方式,更重要的是改变了Kylin的计算和存储分离策略,使得系统能够更好地适应各种大数据场景。Parquet是一种面向列的存储格式,特别适合做数据分析。 #### Kylin的架构 Kylin...
Kylin 将数据模型中的所有字段分类为维度和度量,然后根据维度和度量做预计算,生成 Cuboid,最后将所有维度组合的 Cuboid 作为一个整体,称为 Cube。这样可以提高查询性能,实现超大规模数据的分析。 Kylin 的...
具体到58集团的实践中,Kylin的使用让公司能够处理大量数据集,通过构建的立方体能够快速响应复杂的查询请求,进而为用户提供更加精准和及时的服务,比如更精确的搜索结果和推荐。此外,Kylin的使用还可以帮助58集团...