写点什么

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

作者:程序员欣宸
  • 2022-12-07
    广东
  • 本文字数:1364 字

    阅读完需:约 4 分钟

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

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


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


  1. 《CDH+Kylin三部曲之一:准备工作》:准备好机器、脚本、安装包;

  2. 《CDH+Kylin三部曲之二:部署和设置》:完成 CDH 和 Kylin 部署,并在管理页面做好相关的设置;


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

Yarn 参数设置

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

关于 Kylin 官方 demo

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

  • 通过脚本可见 KYLIN_SALES 为事实表,其他是维度表,并且 KYLIN_ACCOUNT 和 KYLIN_COUNTRY 存在关联,因此维度模型符合 Snowflake Schema;

导入样例数据

  • SSH 登录 CDH 服务器

  • 切换到 hdfs 账号: su - hdfs

  • 执行导入命令: ${KYLIN_HOME}/bin/sample.sh

  • 导入成功,控制台输出如下:

检查数据

  • 检查数据,执行 beeline 进入会话模式(hive 官方推荐用 beeline 取代 Hive CLI):

  • 在 beeline 会话模式输入链接 URL: !connect jdbc:hive2://localhost:10000 ,按照提示输入账号 hdfs ,密码直接回车:

  • 用命令 show tables 查看当前的 hive 表,已建好:

  • 查出订单的最早和最晚时间,后面构建 Cube 的时候会用到,执行 SQL: select min(PART_DT), max(PART_DT) from kylin_sales; ,可见最早 2012-01-01 ,最晚 2014-01-01 ,整个查询耗时 18.87 秒

构建 Cube:

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

  • 登录 Kylin 网页:http://192.168.50.134:7070/kylin

  • 加载 Meta 数据,如下图:


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


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


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


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


  • 接下来开始构建 Cube:


  • 日期范围,刚才 Hive 查询结果是 2012-01-012014-01-01 ,注意截止日期要超过 2014-01-01:


  • 在 Monitor 页面可见进度:


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


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


查询

  • 先尝试查询交易的最早和最晚时间,这个查询在 Hive 上执行的耗时是 18.87 秒 ,如下图,结果一致,耗时 0.14 秒

  • 下面这个 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;
复制代码


  • Kylin 查询耗时 0.13 秒


  • Hive 查询,结果相同,耗时 40.196 秒


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


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

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-12-07阅读数: 21
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
CDH+Kylin三部曲之三:Kylin官方demo_大数据_程序员欣宸_InfoQ写作社区