具体描述
本书由Apache Kylin核心开发团队编写,近两年Apache Kylin随着社区持续贡献的热度和在不同领域业务场景的深入实践应用,新的功能和特性不断涌现,这样就迫切需要更新内容来满足广大Apache Kylin 的使用者和关注人群的需要。本书从Apache Kylin的架构和设计,各个模块的使用,与第三方的整合,二次开发以及开源实践等各个方面进行讲解,为各位读者呈现*核心的设计理念和哲学、算法和技术等。
作者简介
本书由李扬为首的麒麟技术团队撰写。团队是Apache Kylin的主创团队。李扬是大数据架构师和工程师,专注大数据分析技术。他是Apache Kylin管理委员会成员,也是Kyligence Inc.(一家专业提供大数据商务智能服务的创业公司)创始人之一。李扬是Apache Kylin主创团队的架构师和技术负责人,在eBay期间从2014年开始开发Kylin项目。之前,李扬在IBM工作8年,在摩根士丹利工作2年。在IBM期间,他是“杰出技术贡献奖”的获奖者,曾担任InfoSphere BigInsights的技术负责人,负责Hadoop开源产品架构。在摩根士丹利期间,李扬担任副总裁,负责全球监管报表基础架构。
目录信息
前 言
第1章 Apache Kylin概述 1
1.1 背景和历史 1
1.2 Apache Kylin的使命 3
1.2.1 为什么要使用Apache Kylin 3
1.2.2 Apache Kylin怎样解决关键问题 4
1.3 Apache Kylin的工作原理 5
1.3.1 维度和度量简介 5
1.3.2 Cube和Cuboid 6
1.3.3 工作原理 7
1.4 Apache Kylin的技术架构 7
1.5 Apache Kylin的主要特点 9
1.5.1 标准SQL接口 9
1.5.2 支持超大数据集 10
1.5.3 亚秒级响应 10
1.5.4 可伸缩性和高吞吐率 10
1.5.5 BI及可视化工具集成 11
1.6 与其他开源产品的比较 11
1.7 小结 13
第2章 快速入门 14
2.1 核心概念 14
2.1.1 数据仓库、OLAP与BI 14
2.1.2 维度建模 15
2.1.3 事实表和维度表 16
2.1.4 维度和度量 16
2.1.5 Cube、Cuboid和Cube Segment 16
2.2 在Hive中准备数据 17
2.2.1 多维数据模型 17
2.2.2 维度表的设计 17
2.2.3 Hive表分区 18
2.2.4 了解维度的基数 18
2.2.5 样例数据 18
2.3 安装和启动Apache Kylin 19
2.3.1 环境准备 19
2.3.2 必要组件 19
2.3.3 启动Apache Kylin 19
2.4 设计Cube 19
2.4.1 导入Hive表定义 19
2.4.2 创建数据模型 21
2.4.3 创建Cube 23
2.5 构建Cube 32
2.5.1 全量构建和增量构建 34
2.5.2 历史数据刷新 35
2.5.3 合并 36
2.6 查询Cube 38
2.6.1 Apache Kylin查询介绍 38
2.6.2 查询下压 40
2.7 SQL参考 41
2.8 小结 41
第3章 Cube优化 42
3.1 Cuboid剪枝优化 42
3.1.1 维度的组合 42
3.1.2 检查Cuboid数量 43
3.1.3 检查Cube大小 45
3.1.4 空间与时间的平衡 46
3.2 剪枝优化工具 47
3.2.1 使用衍生维度 47
3.2.2 聚合组 49
3.2.3 必需维度 51
3.2.4 层级维度 51
3.2.5 联合维度 52
3.3 并发粒度优化 54
3.4 Rowkey优化 55
3.4.1 调整Rowkey顺序 55
3.4.2 选择合适的维度编码 56
3.4.3 按维度分片 57
3.5 Top_N度量优化 58
3.6 Cube Planner优化 61
3.7 其他优化 62
3.7.1 降低度量精度 62
3.7.2 及时清理无用Segment 63
3.8 小结 63
第4章 增量构建 64
4.1 为什么要增量构建 64
4.2 设计增量Cube 66
4.2.1 设计增量Cube的条件 66
4.2.2 增量Cube的创建 67
4.3 触发增量构建 69
4.3.1 Web GUI触发 69
4.3.2 构建相关的REST API 70
4.4 管理Cube碎片 76
4.4.1 合并Segment 76
4.4.2 自动合并 77
4.4.3 保留Segment 79
4.4.4 数据持续更新 79
4.5 小结 80
第5章 查询和可视化 81
5.1 Web GUI 81
5.1.1 查询 81
5.1.2 显示结果 82
5.2 REST API 84
5.2.1 查询认证 85
5.2.2 查询请求参数 85
5.2.3 查询返回结果 86
5.3 ODBC 87
5.4 JDBC 90
5.4.1 获得驱动包 90
5.4.2 认证 90
5.4.3 URL格式 90
5.4.4 获取元数据信息 91
5.5 Tableau集成 91
5.5.1 连接Kylin数据源 92
5.5.2 设计数据模型 93
5.5.3 “Live”连接 93
5.5.4 自定义SQL 94
5.5.5 可视化展现 94
5.5.6 发布到Tableau Server 95
5.6 Zeppelin集成 95
5.6.1 Zeppelin架构简介 95
5.6.2 KylinInterpreter的工作原理 96
5.6.3 如何使用Zeppelin访问Kylin 96
5.7 Superset 集成 98
5.7.1 下载Kylinpy 98
5.7.2 安装Superset 99
5.7.3 在Superset中添加Kylin Database 100
5.7.4 在Superset中添加Kylin Table 100
5.7.5 在Superset中创建图表 103
5.7.6 在Superset中通过SQL Lab探索Kylin 105
5.8 QlikView 集成 106
5.8.1 连接Kylin数据源 106
5.8.2 “Direct Query”连接 107
5.8.3 创建可视化 109
5.8.4 发布到QlikView Server 110
5.9 Qlik Sense集成 110
5.9.1 连接Kylin数据源 110
5.9.2 “Direct Query”连接 112
5.9.3 创建可视化 114
5.9.4 发布到Qlik Sense Hub 115
5.9.5 在Qlik Sense Hub中连接Kylin数据源 117
5.10 Redash集成 118
5.10.1 连接Kylin数据源 118
5.10.2 新建查询 119
5.10.3 新建仪表盘 121
5.11 MicroStrategy 集成 122
5.11.1 创建数据库实例 123
5.11.2 导入逻辑表 124
5.11.3 创建属性、事实和度量 124
5.11.4 创建报告 124
5.11.5 MicroStrategy连接Kylin最佳实践 126
5.12 小结 127
第6章 Cube Planner及仪表盘 128
6.1 Cube Planner 128
6.1.1 为什么要引入Cube Planner 128
6.1.2 Cube Planner 算法介绍 129
6.1.3 使用Cube Planner 131
6.2 System Cube 134
6.2.1 开启System Cube 134
6.2.2 构建和更新System Cube 135
6.3 仪表盘 135
6.4 小结 137
第7章 流式构建 138
7.1 为什么要进行流式构建 139
7.2 准备流式数据 139
7.2.1 数据格式 139
7.2.2 消息队列 140
7.2.3 创建Schema 141
7.3 设计流式Cube 144
7.3.1 创建Model 144
7.3.2 创建Cube 145
7.4 流式构建原理 147
7.5 触发流式构建 150
7.5.1 单次触发构建 151
7.5.2 自动化多次触发 152
7.5.3 初始化构建起点 152
7.5.4 其他操作 153
7.5.5 出错处理 153
7.6 小结 154
第8章 使用Spark 155
8.1 为什么要引入Apache Spark 155
8.2 Spark构建原理 156
8.3 使用Spark构建Cube 158
8.3.1 配置Spark引擎 158
8.3.2 开启Spark动态资源分配 161
8.3.3 出错处理和问题排查 162
8.4 使用Spark SQL创建中间平表 164
8.5 小结 164
第9章 应用案例分析 166
9.1 小米集团 166
9.1.1 背景 166
9.1.2 利用Apache Kylin构建定制化OLAP解决方案 167
9.1.3 Kylin在小米的三类主要应用场景 168
9.2 美团点评 169
9.2.1 美团点评的数据场景特点 169
9.2.2 接入Apache Kylin的解决方案 170
9.2.3 Kylin的优势 170
9.3 携程 171
9.3.1 背景 171
9.3.2 选择Kylin的原因 171
9.3.3 Kylin在携程的应用情况 172
9.4 4399小游戏 173
9.4.1 背景 173
9.4.2 Kylin 部署架构 173
9.4.3 Apache Kylin 在4399的价值 174
9.5 国内某Top 3保险公司 174
9.5.1 背景 174
9.5.2 主要痛点 175
9.5.3 Kylin带来的改变 175
9.6 某全球顶级银行卡组织 176
9.6.1 背景 176
9.6.2 Kylin的价值体现 177
第10章 扩展Apache Kylin 178
10.1 可扩展式架构 178
10.1.1 可扩展架构工作原理 178
10.1.2 三大主要接口 180
10.2 计算引擎扩展 183
10.2.1 EngineFactory 183
10.2.2 MRBatchCubingEngine2 184
10.2.3 BatchCubingJobBuilder2 185
10.2.4 IMRInput 187
10.2.5 IMROutput2 189
10.2.6 计算引擎扩展小结 190
10.3 数据源扩展 190
10.3.1 Hive数据源 191
10.3.2 JDBC数据源 192
10.4 存储扩展 194
10.5 聚合类型扩展 196
10.5.1 聚合的JSON定义 196
10.5.2 聚合类型工厂 197
10.5.3 聚合类型的实现(Measure-Type) 198
10.5.4 聚合类型扩展小结 202
10.6 维度编码扩展 202
10.6.1 维度编码的JSON定义 202
10.6.2 维度编码工厂(Dimension-EncodingFactory) 203
10.6.3 维度编码实现(Dimension-Encoding) 204
10.6.4 维度编码扩展小结 205
10.7 小结 205
第11章 Apache Kylin的安全与认证 206
11.1 身份验证 206
11.1.1 自定义验证 207
11.1.2 LDAP验证 209
11.1.3 单点登录 213
11.2 授权 214
11.2.1 新的访问权限控制 214
11.2.2 统一的项目级别访问控制 214
11.2.3 管理数据访问权限 216
11.3 小结 217
第12章 运维管理 218
12.1 监控和诊断 218
12.1.1 日志文件 218
12.1.2 任务报警 220
12.1.3 诊断工具 221
12.2 日常维护 222
12.2.1 基本运维 223
12.2.2 元数据备份 223
12.2.3 元数据恢复 224
12.2.4 系统升级 224
12.2.5 迁移 227
12.2.6 垃圾清理 228
12.3 获得社区帮助 229
12.3.1 邮件列表 229
12.3.2 JIRA 230
12.4 小结 230
第13章 在云上使用Kylin 231
13.1 云计算世界 231
13.2 为何要在云上使用Kylin 232
13.3 在亚马逊AWS上使用Kylin 232
13.3.1 准备AWS服务资源 233
13.3.2 AWS账户信息 234
13.3.3 创建Amazon EMR集群 235
13.3.4 安装Apache Kylin 237
13.4 在微软Azure使用Kylin 239
13.4.1 准备Azure服务资源 240
13.4.2 准备Azure账户信息 241
13.4.3 创建HD Insight集群 241
13.4.4 安装Apache Kylin 246
13.5 在阿里云使用Kylin 247
13.5.1 准备阿里云服务资源 248
13.5.2 准备阿里云账户信息 249
13.5.3 创建E-MapReduce集群 250
13.5.4 安装Apache Kylin 252
13.6 认识Kyligence Cloud 255
13.7 小结 256
第14章 参与开源 257
14.1 Apache Kylin开源历程 257
14.2 为什么要参与开源 258
14.3 Apache开源社区简介 258
14.3.1 简介 258
14.3.2 组织构成与运作模式 259
14.3.3 项目角色 259
14.3.4 孵化项目及顶级项目 260
14.4 如何贡献到开源社区 262
14.4.1 什么是贡献 262
14.4.2 如何贡献 262
14.5 礼仪与文化 262
14.6 如何参与Apache Kylin 263
14.6.1 如何成为Apache Contributor 264
14.6.2 如何成为Apache Committer 264
14.7 小结 264
第15章 Kylin的未来 265
15.1 全面拥抱Spark技术 265
15.2 实时流分析 266
15.3 更快的存储和查询 266
15.4 前端展现及与BI工具的整合 266
15.5 高级OLAP函数 267
15.6 展望 267
附录A 使用VM本地部署Kylin 268
附录B Azure HDInsight边缘节点模板部署代码 274
附录C 集群部署Apache Kylin 277
附录D 使用MySQL作为元数据存储 279
附录E 配置Apache Kylin 281
附录F 多级配置重写 284
附录G 常见问题与解决方案 287
· · · · · · (收起)
读后感
Apache Kylin作为国内第一个Apache顶级大数据项目,它的出现既是意料之外,又是意料之中。意料之处是国内IT界一直缺少有份量的开源项目,更别说大数据方向。意料之中是随着中央政府大数据行动纲要的指引,和国内互联网企业大数据应用的标杆作用,国内IT界对大数据技术的相关研究...
Apache Kylin从开源就备受重视,正是因为它填补了大数据Hadoop生态圈的一个技术空白-OLAP on Hadoop,满足了海量数据集上的快速数据分析需求,SQL接口也符合业界主流规范,因此很快被各互联网公司、金融、电信等行业采用。 第一次接触Kylin还是2015年的meetup上,被Kylin精准的...
Apache Kylin从开源就备受重视,正是因为它填补了大数据Hadoop生态圈的一个技术空白-OLAP on Hadoop,满足了海量数据集上的快速数据分析需求,SQL接口也符合业界主流规范,因此很快被各互联网公司、金融、电信等行业采用。 第一次接触Kylin还是2015年的meetup上,被Kylin精准的...
Apache Kylin从开源就备受重视,正是因为它填补了大数据Hadoop生态圈的一个技术空白-OLAP on Hadoop,满足了海量数据集上的快速数据分析需求,SQL接口也符合业界主流规范,因此很快被各互联网公司、金融、电信等行业采用。 第一次接触Kylin还是2015年的meetup上,被Kylin精准的...
Apache Kylin从开源就备受重视,正是因为它填补了大数据Hadoop生态圈的一个技术空白-OLAP on Hadoop,满足了海量数据集上的快速数据分析需求,SQL接口也符合业界主流规范,因此很快被各互联网公司、金融、电信等行业采用。 第一次接触Kylin还是2015年的meetup上,被Kylin精准的...
用户评价
作为一名正在努力转型为大数据架构师的新手,我最大的痛点就是理论知识与实际项目落地之间的鸿沟。我阅读了网上不少博客和教程,它们往往停留在某个特定功能点的介绍,缺乏一个系统的、自上而下的知识体系。我更看重的是,一本“权威指南”是否能够构建起一个完整的知识框架,让我们能从宏观上理解Kylin在整个数据生态中的位置——它如何与Hadoop/Spark/Hive/Kafka等组件协同工作,而不是孤立地存在。我希望书中能详尽论述Cube设计的艺术,比如维度选择的合理性、度量函数的选用,以及如何平衡预计算的存储成本和查询性能之间的关系。此外,对于安全性、高可用性以及故障排查的章节,我给予极高的期望。一个生产级的系统,总会遇到各种意想不到的边缘情况,这本书如果能提供丰富的Troubleshooting案例和解决方案,无疑将成为我案头不可或缺的“急救手册”。我对它的期望,是它能成为我从“知道Kylin”到“精通Kylin”的关键桥梁。
我是一个对底层原理有执念的工程师,所以对于那些停留在操作层面介绍的书籍总是敬而远之。我对《Apache Kylin权威指南(第2版)》的期待,是它能提供比官方文档更深入、更具可读性的底层源码解析。例如,Cube构建过程中的MapReduce/Spark任务是如何被调度和执行的?Segment合并和Base Cuboid/Aggregation Cuboid的生成逻辑是什么?尤其是在并行度和内存管理方面,是否有作者独到的见解和优化建议?如果能够辅以清晰的UML图或流程图来描绘数据流向和内存结构,那就更好了。我希望通过这本书,能够真正理解Kylin“黑盒”内部发生的事情,从而在遇到性能瓶颈时,能够深入到代码层面去定位问题,而不是仅仅依赖于配置参数的试错。这种对技术内核的揭示,是区分一本“使用手册”和一本“权威指南”的关键所在。
这本书的“第二版”字样吸引了我,这意味着它应该吸收了第一版发行后的用户反馈和技术迭代。对于一个快速发展的技术栈来说,过时的文档简直是灾难。我关注的是,新版本是否充分覆盖了Kylin在云原生环境下的部署策略,比如如何利用Kubernetes进行弹性伸缩和资源管理。市面上很多资料对这些前沿部署模式的介绍都比较滞后。另外,我非常期待它能对Kylin的查询引擎,特别是其SQL解析和下推能力有更深入的剖析。我们团队现在正面临一个挑战,即如何优化那些非标准的复杂SQL查询,让它们能更好地利用预计算的结果,而不是退化到全表扫描。如果书中能提供一套系统的性能调优思维导图,指导我们如何通过查询优化器配置、Cube粒度调整等手段,将查询延迟从秒级降到毫秒级,那这本书的价值就无可估量了。我需要的是那种能直接指导我优化现有生产系统的干货。
这本书的封面设计初见便给我一种深邃而专业的印象,色彩搭配沉稳大气,字体的选择也透着一股技术权威感。我本身是一名在数据仓库领域摸爬滚打了好几年,但对于实时分析和OLAP新技术的探索总感觉有些吃力,尤其是涉及到像Kylin这种在国内非常流行但资料相对零散的工具时。我非常期待这本书能像一本详尽的地图册,为我指明方向,尤其是在企业级应用落地的实操层面。我希望它能深入浅出地讲解Kylin的核心架构原理,比如Mondrian的遗留问题、Cube的构建机制,以及预计算的精妙之处。如果能结合最新的版本特性,比如性能优化、与Spark的深度集成,以及在复杂业务场景下的最佳实践案例,那就太棒了。我尤其关注如何在高并发查询压力下保持系统的稳定性和低延迟响应,这对于我们公司的报表系统至关重要。这本书如果能提供清晰的步骤指导,从环境搭建、数据源连接到Cube设计和查询优化,想必能让我少走不少弯路,真正做到学以致用。
从项目管理和技术选型的角度来看,我非常希望这本书能提供一个成熟、理性的视角来评估Kylin在不同业务场景下的适用性和局限性。比如,在面对海量维度、极高写入频率,或者需要支持即席查询(Ad-hoc Query)的复杂需求时,Kylin的瓶颈何在?书中是否会客观地讨论与其他实时OLAP引擎,如ClickHouse、Druid等,在特定场景下的优劣对比?这有助于我们高层决策者做出更明智的技术选型。同时,对于企业级治理体系的构建,比如元数据管理、权限控制的集成,以及如何将Kylin的查询能力嵌入到现有的BI工具链(如Tableau、Superset)中的详细指导,也是我非常看重的实用内容。一本优秀的指南,不仅要教你如何使用工具,更要教你如何正确地、负责任地将工具应用到复杂的商业环境中去。我期待这本书能在这方面提供超越技术实现的、更具战略性的指导。
入门书籍,让我了解整个架构和运维
当前最正宗的kylin介绍,出到了第2版,涉及到很多细节,如运维部署高可用读写分离和cube优化,适合有一定使用经验的人阅读
这书里的内容不是更应该写到官方文档里去嘛
kylin 团队写的书,质量有保证,使用优化运维基本都涵盖了,更难得的是够薄不啰嗦。入门推荐。
非常值得一读,比看文档效率高好多,作为kylin入门,必读。