27

CDH+Kylin三部曲之三:Kylin官方demo

 3 years ago
source link: https://segmentfault.com/a/1190000037590542
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

本文是《CDH+Kylin三部曲》系列的终篇,先简单回顾前面的内容:

  1. 《CDH+Kylin三部曲之一:准备工作》 :准备好机器、脚本、安装包;
  2. 《CDH+Kylin三部曲之二:部署和设置》 :完成CDH和Kylin部署,并在管理页面做好相关的设置;

现在Hadoop、Kylin都就绪了,接下来实践Kylin的官方demo;

Yarn参数设置

Yarn的内存参数设置之后一定要重启Yarn使之生效,否则Kylin提交的任务是会由于资源限制而无法执行;

关于Kylin官方demo

  1. 下图是官方demo的脚本的一部分(create_sample_tables.sql),基于HDFS数据创建Hive表:

RjaIraJ.png!mobile

  1. 通过脚本可见<font color="blue">KYLIN_SALES</font>为事实表,其他是维度表,并且KYLIN_ACCOUNT和KYLIN_COUNTRY存在关联,因此维度模型符合Snowflake Schema;

导入样例数据

  1. SSH登录CDH服务器
  2. 切换到hdfs账号:<font color="blue">su - hdfs</font>
  3. 执行导入命令:<font color="blue">${KYLIN_HOME}/bin/sample.sh</font>
  4. 导入成功,控制台输出如下:

vQBfia6.png!mobile

检查数据

  1. 检查数据,执行<font color="blue">beeline</font>进入会话模式(hive官方推荐用<font color="blue">beeline</font>取代Hive CLI):

mamaqaq.png!mobile

  1. 在beeline会话模式输入链接URL:<font color="blue">!connect jdbc:hive2://localhost:10000</font>,按照提示输入账号<font color="blue">hdfs</font>,密码直接回车:

uae2Ijb.png!mobile

  1. 用命令<font color="blue">show tables</font>查看当前的hive表,已建好:

26NF7zF.png!mobile

  1. 查出订单的最早和最晚时间,后面构建Cube的时候会用到,执行SQL:<font color="blue">select min(PART_DT), max(PART_DT) from kylin_sales;</font> ,可见最早<font color="blue">2012-01-01</font>,最晚<font color="blue">2014-01-01</font>,整个查询耗时<font color="red">18.87秒</font>:

zq6bAbV.png!mobile

构建Cube:

数据准备完成,可以构建Kylin Cube了:

  1. 登录Kylin网页: http://192.168.50.134 :7070/kylin
  2. 加载Meta数据,如下图:

zA7JRj3.png!mobile

  1. 如下图红框所示,数据加载成功:

eEze6zn.png!mobile

  1. 在Model页面可以看到事实表和维度表,如下图的操作可以创建一个MapReduce任务,计算维度表KYLIN_ACCOUNT每个列的基数(Cardinality):

IN3QJn6.png!mobile

  1. 去Yarn页面(CDH服务器的8088端口),如下图,可见有个MapReduce类型的任务正在执行中:

ZfaY3yF.png!mobile

  1. 上述任务很快就能完成(10多秒),此时刷新Kylin页面,可见<font color="blue">KYLIN_ACCOUNT</font>表的Cardinality数据已经计算完成了(hive查询得到ACCOUNT_ID数量是10000,但下图的Cardinality值为10420,Kylin对Cardinality的计算采用的是HyperLogLog的近似算法,与精确值有误差,其他四个字段的Cardinality与Hive查询结果一致):

FVNJre7.png!mobile

  1. 接下来开始构建Cube:

mMBRBj.png!mobile

  1. 日期范围,刚才Hive查询结果是<font color="blue">2012-01-01</font>到<font color="blue">2014-01-01</font>,注意截止日期要超过2014-01-01:

vqQJreE.png!mobile

  1. 在Monitor页面可见进度:

jiAJN3r.png!mobile

  1. 去Yarn页面(CDH服务器的8088端口),可以看到对应的任务和资源使用情况:

7bYRf2J.png!mobile

  1. build完成后,会出现ready图标:

3E3IBzJ.png!mobile

查询

  1. 先尝试查询交易的最早和最晚时间,这个查询在Hive上执行的耗时是<font color="red">18.87秒</font>,如下图,结果一致,耗时<font color="red">0.14秒</font>:

6NNb2m.png!mobile

  1. 下面这个SQL是Kylin官方示例用来对比响应时间的,对订单按日期聚合,再按日期排序,然后接下来分别用Kylin和Hive查询:
select part_dt, sum(price) as total_sold, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt;
  1. Kylin查询耗时<font color="red">0.13秒</font>:

V3qiauf.png!mobile

  1. Hive查询,结果相同,耗时<font color="red">40.196秒</font>:

ZzMZniE.png!mobile

  1. 最后来看下资源使用情况,Cube构建过程中,18G内存被使用:

ARjMVrI.png!mobile

至此,CDH+Kylin从部署到体验就已完成,《CDH+Kylin三部曲》系列也结束了,如果您正在学习Kylin,希望本文能够给您一些参考。

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK