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
相关推荐
win7修复本地系统工具
《自动化专业英语》04-Automatic-Detection-Block(自动检测模块).ppt
《计算机专业英语》chapter12-Intelligent-Transportation.ppt
内容概要:本文详细介绍了基于西门子S7-1200博图平台的3轴伺服螺丝机程序。该程序使用SCL语言编写,结合KTP700组态和TIA V14及以上版本,实现了对X、Y、Z三个轴的精密控制。文章首先概述了程序的整体架构,强调了其在自动化控制领域的高参考价值。接着深入探讨了关键代码片段,如轴初始化、运动控制以及主程序的设计思路。此外,还展示了如何通过KTP700组态实现人机交互,并分享了一些实用的操作技巧和技术细节,如状态机设计、HMI交互、异常处理等。 适用人群:从事自动化控制系统开发的技术人员,尤其是对西门子PLC编程感兴趣的工程师。 使用场景及目标:适用于希望深入了解西门子S7-1200博图平台及其SCL语言编程特点的学习者;旨在帮助读者掌握3轴伺服系统的具体实现方法,提高实际项目中的编程能力。 其他说明:文中提供的代码示例和设计理念不仅有助于理解和学习,还能直接应用于类似的实际工程项目中。
内容概要:本文详细探讨了五种非线性滤波器(卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)、粒子滤波(PF)和变维卡尔曼滤波(VDKF))在水下长基线定位(LBL)系统中的应用。通过对每种滤波器的具体实现进行MATLAB代码展示,分析了它们在不同条件下的优缺点。例如,KF适用于线性系统但在非线性环境中失效;EKF通过雅可比矩阵线性化处理非线性问题,但在剧烈机动时表现不佳;UKF利用sigma点处理非线性,精度较高但计算量大;PF采用蒙特卡罗方法,鲁棒性强但计算耗时;VDKF能够动态调整状态维度,适合信标数量变化的场景。 适合人群:从事水下机器人(AUV)导航研究的技术人员、研究生以及对非线性滤波感兴趣的科研工作者。 使用场景及目标:①理解各种非线性滤波器的工作原理及其在水下定位中的具体应用;②评估不同滤波器在特定条件下的性能,以便为实际项目选择合适的滤波器;③掌握MATLAB实现非线性滤波器的方法和技术。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者更好地理解和实现这些滤波器。此外,还讨论了数值稳定性问题和一些实用技巧,如Cholesky分解失败的处理方法。
VMware-workstation-full-14.1.3-9474260
DeepSeek系列-提示词工程和落地场景.pdf
javaSE阶段面试题
《综合布线施工技术》第5章-综合布线工程测试.ppt
安川机器人NX100使用说明书.pdf
内容概要:本文详细介绍了将M7120型平面磨床的传统继电器控制系统升级为基于西门子S7-1200 PLC的自动化控制系统的过程。主要内容涵盖IO分配、梯形图设计和组态画面实现。通过合理的IO分配,确保了系统的可靠性和可维护性;梯形图设计实现了主控制逻辑、砂轮升降控制和报警逻辑等功能;组态画面则提供了友好的人机交互界面,便于操作和监控。此次改造显著提高了设备的自动化水平、运行效率和可靠性,降低了维护成本。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和控制系统设计的专业人士。 使用场景及目标:适用于需要进行老旧设备升级改造的企业,旨在提高生产设备的自动化水平和可靠性,降低故障率和维护成本。具体应用场景包括但不限于金属加工行业中的平面磨床等设备的控制系统改造。 其他说明:文中还分享了一些实际调试中的经验和技巧,如急停逻辑的设计、信号抖动的处理方法等,有助于读者在类似项目中借鉴和应用。
chromedriver-linux64-136.0.7103.48.zip
IMG_20250421_180507.jpg
《网络营销策划实务》项目一-网络营销策划认知.ppt
Lianantech_Security-Vulnerabil_1744433229
MybatisCodeHelperNew2019.1-2023.1-3.4.1
【深度学习部署】基于Docker的BERT模型训练与API服务部署:实现代码复用与模型共享
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装火车票订票系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,火车票订票系统的有效运用可以帮助管理人员准确快速地处理信息。 火车票订票系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现火车票订票系统的功能。其中管理员管理用户,新闻公告。 火车票订票系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,火车票订票系统都可以轻松应对。 关键词:火车票订票系统;SpringBoot框架,系统分析,数据库设计
【ABB机器人】-00标准保养简介.pdf
最新校园跑腿小程序源码 多校版本,多模块,适合跑腿,外卖,表白,二手,快递等校园服务 此版本为独立版本,不需要微擎 直接放入就可以 需要自己准备好后台的服务器,已认证的小程序,备案的域名!