首页>参考读物>计算机科学与技术>软件与程序设计

Apache Kylin权威指南(第2版)
作者 : Apache Kylin核心团队 著
丛书名 : 大数据技术丛书
出版日期 : 2019-08-09
ISBN : 978-7-111-63329-7
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 303
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书由Apache Kylin核心开发团队编写,近两年Apache Kylin随着社区持续贡献的热度和在不同领域业务场景的深入实践应用,新的功能和特性不断涌现,这样就迫切需要更新内容来满足广大Apache Kylin 的使用者和关注人群的需要。本书从Apache Kylin的架构和设计,各个模块的使用,与第三方的整合,二次开发以及开源实践等各个方面进行讲解,为各位读者呈现最核心的设计理念和哲学、算法和技术等。

图书特色

Apache Kylin 是首个中国人贡献的
Apache 顶级开源项目

图书前言

“麒麟出没,必有祥瑞。”
—中国古谚语
“与Apache Kylin团队一起合作使Kylin孵化成为顶级项目对我而言非常激动人心,Kylin在技术方面当然是振奋人心的,但同样令人兴奋的是Kylin 代表了亚洲国家,特别是中国,在开源社区中越来越高的参与度。”
—Ted Dunning Apache 孵化项目副总裁,MapR 首席应用架构师
今天,随着移动互联网、物联网、AI等各种技术的快速兴起,数据成了所有这些技术背后最重要,也是最有价值的“资产”。如何从数据中获得有价值的信息呢?这个问题驱动了相关技术的发展,从最初的基于文件的检索、分析程序,到数据仓库理念的诞生,再到基于数据库的商业智能分析。而现在,我们关注的问题已经变成如何从海量的超大规模数据中快速获取有价值的信息。在新的时代,面对新的挑战,新的技术必然会应运而生。
在数据分析领域,大部分的技术都诞生在国外,特别是美国,从最初的数据库,到Hadoop为首的大数据技术,再到今天各种深度学习、AI等。但我国却又拥有世界上独一无二的“大”数据—最多的人口、最多的移动设备、最活跃的应用市场、最复杂的网络环境……面对这些挑战,我们需要有自己的核心技术,特别是在基础领域的突破和研发。今天,以Apache Kylin为首的各种来自中国的先进技术不断涌现,甚至在很多方面都大大超越了来自国外的其他技术,彰显了中国的技术实力。
自Hadoop选取大象图标伊始,上百个项目,以动物居之者为多。而其中唯有Apache Kylin(麒麟)来自中国,在众多项目中分外突出。在全球最大的开源基金会—Apache 软件基金会(Apache Software Foundation,ASF)的160多个顶级项目中,Apache Kylin是唯一一个来自中国的Apache顶级开源项目,与Apache Hadoop、Apache Spark、Apache Kafka、Apache Tomcat、Apache Struts、Apache Maven等顶级项目一起以“The Apache Way”构建开源大数据领域的国际社区,发展新技术并拓展生态系统。
大数据与传统技术的最大区别就在于数据的体量给查询带来的巨大挑战。从最早使用大数据技术来做批量处理,到现在越来越多的人要求大数据平台也能够如传统数据仓库技术一样支持交互式分析,随着数据量的不断膨胀、数据平民化的不断推进,低延迟、高并发地在Hadoop之上提供标准SQL查询能力成为必须攻破的技术难题。而Apache Kylin的诞生正是基于这个背景,并成功地完成了很多人认为不可能实现的突破。Apache Kylin最初诞生于eBay中国研发中心,该中心坐落于上海浦东新区。2013年9月底该研发中心开始进行POC测试并组建团队,经过一年的艰苦开发和测试,Apache Kylin于2014年9月30日正式上线,并在第二天,2014年10月1日,正式开源。
在这个过程中,面对使用何种技术、如何设计架构、如何突破那些看似无法完成的挑战等一系列技术难关,整个开发团队和用户一起经历了一个艰难的过程。今天呈现的Apache Kylin已经经历了上千亿甚至上万亿规模数据量的分析请求及上百家公司在实际生产环境中的检验,成为各个公司大数据分析平台不可替代的重要组成部分。本书将从Apache Kylin的架构和设计、各个模块的使用、与第三方的整合、二次开发以及开源实践等多个方面进行讲解,为读者呈现Apache Kylin最核心的设计理念和哲学、算法和技术等。
Apache Kylin社区的发展来之不易,自2014年10月开源至今已经有近五年的时间,从最初的几个研发人员发展到今天几十个贡献者、国内外上百家公司正式使用、连续两年获得InfoWorld Bossie Awards最佳开源大数据工具奖。来自Apache Kylin核心团队、贡献者、用户、导师、基金会等的帮助和无私奉献铸就了今天Apache Kylin活跃的社区,也使得此项技术得以在越来越多的场景下发挥作用。现在,由Apache Kylin核心团队撰写的本书即将出版,相信能更好地将相关的理论、设计、技术、架构等展现给各位朋友,希望能够让更多的朋友更加充分地理解Kylin的优势和适用的场景,更多地挖掘出Kylin的潜力。同时希望本书能够鼓励并吸引更多的人参与到Kylin项目和开源项目中,能够影响更多的人贡献更多的项目和技术到开源世界中。
此次《Apache Kylin 权威指南》的再版工作,得到了Kyligence研发团队的大力支持,他们纷纷自愿参与,本书大部分内容的写作是利用节假日和休息时间完成的,每位参与者都将自己在工作中获得的最佳实践经验总结到了这本书中,他们分别是:史少锋、陈志雄、冯礼、翟娜、汤雪、赵勇杰、周浥尘、龙超、宗正、孙宇婕、周丁倩、李森辉等。在此对他们表示诚挚的感谢!

韩卿
Apache Kylin联合创建者及项目委员会主席
2019年5月

上架指导

计算机\程序设计

封底文字

Apache Kylin 是中国技术团队开发的世界级优秀开源软件,在国内互联网公司中的应用也是相当广泛的,但在 Strikingly 2017 年开始使用 Kylin 的时候,市面上却找不到几本关于 Kylin 的书,无论是中文还是英文的。
来自 Apache Kylin 核心团队的《Apache Kylin 权威指南》一书在当时可以说是除了官方文档之外的有关 Kylin 的卓越使用指南,也补充了很多官方文档没有涉及的部分,对于 Strikingly 使用 Kylin 有极大的帮助,也使得 Strikingly 成为第一家在亚马逊 AWS 云生产环境中使用 Kylin 的公司,为 Strikingly 的数百万海内外用户提供了高效、稳定的网站和微信小程序数据分析服务。
近年来,我看到 Kylin 有了不少新的特性,更强大也更好用了,也很高兴看到《Apache Kylin 权威指南》第2版出版。数据无价,但是能够驾驭海量数据,才能真正让数据的价值闪光。Kylin 是很多数据工具箱里不可或缺的一把利器,希望本书能给刚开始使用 Kylin 的团队带来帮助。
—— 龚凌晖  VP Engineering @ Strikingly.com
            
如果要在市场上为数不多的 Apache Kylin 书籍中选择一本的话,《Apache Kylin 权威指南》会是我的首选。Apache Kylin 在小米公司大数据系统中扮演着核心角色。在长达一年的应用和优化过程中,我们“踩了很多坑”,走了不少弯路。本书系统地阐述了 Kylin 应用的方方面面,分享了大量的实战经验,真是让人得之恨晚。
—— 司马云瑞 小米集团云平台大数据总监
                
大量的机构和个人的实践证明,Apache Kylin 是一套非常优秀的分布式大数据查询和分析引擎,它不仅提供了非常直观的海量数据 SQL 查询接口和多维分析能力,还基于现行技术领域优秀的分布式存储引擎和计算框架进行构建,并且依托 Kylin 核心开发团队的努力,一直在持续地更新和升级,确保能够让用户享受到大数据底层的新技术。不仅如此,Kylin 还非常开放,对其底层的存储系统、计算引擎、元数据、上层查询入口都开放了丰富的接口,便于用户基于 Kylin 构建起一个完整的大数据生态和体系。本书的编写人员就是 Kylin 核心团队成员,他们由浅入深系统地向读者介绍 Kylin 的各种原理和使用经验,读者可以通过学习本书来系统地了解 Kylin 及其背后的大数据系统的核心知识。
—— 罗李 滴滴大数据架构部技术总监,
Apache Alluxio PMC & Committer

推荐序

大概三年前,我在探索融合大数据平台演进路线的时候,接触到Apache Kylin这个开源大数据分析产品,并认识了几位Kylin核心团队的工程师。作为在企业级数据领域工作了10多年的“老兵”,在完成POC测试并拜读了《Apache Kylin权威指南》(第1版)之后,我特别感动于这本书所映射出来的精神。在互联网金融极速燃烧的年代,居然有这么一群人坚守企业级数据分析阵地,致力于拯救陷入数据泥潭的劳苦大众。这种精神一定来源于Kylin的初衷—Unleash Big Data Productivity,我个人非常认同,并愿意共同传播Kylin的这种精神。
2018年9月12日,我和Apache Kylin社区管理委员会(PMC)主席韩卿(Luke Han)相约,在纽约Strata AI大会上分享了对智能数据仓库未来的畅想。这次和国外数据界的交流碰撞,让我意识到,我们不但要设想未来在哪里,更要帮助期望数据分析生态落地的企业找到一条能够从数据仓库升级到数据湖再进化到智能数据平台的路。当然,我们也知道,要让路好走,铺路的人要付出更多的艰辛努力。
在这之后,Luke时常与我讨论,如何应对企业级数据市场的各种艰辛。后来有一天,Luke邀请我为《Apache Kylin权威指南》(第2版)写推荐序,我便毫不犹豫地答应了。因为我知道这本书的升级,不只是技术的升级,更是技术背后的理念愿景和能力的升级。关于此书,我想告诉大家的是,读完第1章,我们将了解设计数据仓库解决方案的初衷,从而有意愿从Kylin开始新的探索;读完第2~13章,通过应用第一原理,我们将有机会改变一个企业级数据分析生态;读完第14章和第15章,如果还有机会在企业内部进行实践的话,我们将有可能改变一个企业乃至一个行业。当然,对于本书,我们也不必循规蹈矩地按顺序读下来,可以按照自己的需要选择内容阅读。
面对未来竞争的每一个企业,表面上拼的是业务场景下对科技的理解和综合应用。实际上,最终比拼的还是人对业务场景和科技综合应用的驾驭能力。最后,我衷心希望,读者通过阅读本书能够获得驾驭企业级大数据的能力,成为企业所需要的技术人才,而本书的作者也会因为读者的成功而获得更大的成功。

朱志
建信金融科技 架构技术总监

图书目录

推荐序
前 言
第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

教学资源推荐
作者: 许畅 陈嘉 朱晓瑞 编著
作者: (美)Mary Campione Kathy Walrath Alison Huml
作者: [美]H. H. 塔恩(H.H.Tan),T. B. 多拉齐奥(T.B.D'Orazio)[香港]柯兆恒(S. H. Or),玛丽安 M. Y. 周(Marian M. Y. Choy) 著
参考读物推荐