编辑推荐
作者建立QQ群,免费为读者解决本书的任何问题。Kyligence 联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair),韩卿;武汉市云升科技发展有限公司董事长,杨正洪;万达网络科技集团大数据中心副总经理,《Spark高级数据分析》中文版译者,龚少成等等业内专家联合推荐。
本书全面介绍Apache Kylin的书籍,包括环境搭建、案例实战演示、源码分析、Cube优化等,此外还会涉及数据仓库、数据模型、OLAP、数据立方体等方面的知识。通过本书系统性学习和实战操作,朋友们将能够达到基于Apache Kylin搭建企业级大数据分析平台,并熟练掌握使用Apache Kylin多维度地分析海量数据,最终通过可视化工具展示结果。
内容简介
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay公司开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
本书分为21章,详细讲解Apache Kylin概念、安装、配置、部署,让读者对Apache Kylin构建大数据分析平台有一个感性认识。同时,本书从应用角度,结合Dome和实例介绍了用于多维分析的Cube算法的创建、配置与优化。最后还介绍了Kyligence公司发布KAP大数据分析平台,对读者有极大的参考价值。
本书适合大数据技术初学者、大数据分析人员、大数据架构师等,也适合用于高等院校和培训学校相关专业师生教学参考。
内页插图
目录
第一部分 Apache Kylin基础部分
第1章 Apache Kylin前世今生 3
1.1 Apache Kylin的背景 3
1.2 Apache Kylin的应用场景 3
1.3 Apache Kylin的发展历程 4
第2章 Apache Kylin前奏 7
2.1 事实表和维表 7
2.2 星型模型和雪花型模型 7
2.2.1 星型模型 7
2.2.2 雪花型模型 8
2.2.3 星型模型示例 8
2.3 OLAP 9
2.3.1 OLAP分类 9
2.3.2 OLAP的基本操作 10
2.4 数据立方体(Data Cube) 11
第3章 Apache Kylin 工作原理和体系架构 12
3.1 Kylin工作原理 12
3.2 Kylin体系架构 13
3.3 Kylin中的核心部分:Cube构建 15
3.4 Kylin的SQL查询 16
3.5 Kylin的特性和生态圈 16
第4章 搭建CDH大数据平台 18
4.1 系统环境和安装包 19
4.1.1 系统环境 19
4.1.2 安装包的下载 20
4.2 准备工作:系统环境搭建 21
4.2.1 网络配置(CDH集群所有节点) 21
4.2.2 打通SSH,设置ssh无密码登录(所有节点) 21
4.3 正式安装CDH:准备工作 29
4.4 正式安装CDH5:安装配置 30
4.4.1 CDH5的安装配置 30
4.4.2 对Hive、HBase执行简单操作 39
第5章 使用Kylin构建企业大数据分析平台的4种部署方式 41
5.1 Kylin部署的架构 41
5.2 Kylin的四种典型部署方式 42
第6章 单独为Kylin部署HBase集群 44
第7章 部署Kylin集群环境 58
7.1 部署Kylin的先决条件 58
7.2 部署Kylin集群环境 61
7.3 为Kylin集群搭建负载均衡器 70
7.3.1 搭建Nginx环境 70
7.3.2 配置Nginx实现Kylin的负载均衡 73
第二部分 Apache Kylin 进阶部分
第8章 Demo案例实战 77
8.1 Sample Cube案例描述 77
8.2 Sample Cube案例实战 78
8.2.1 准备数据 78
8.2.2 构建Cube 81
第9章 多维分析的Cube创建实战 89
9.1 Cube模型 89
9.2 创建Cube的流程 90
9.2.1 步骤一:Hive中事实表,以及多张维表的处理 90
9.2.2 步骤二:Kylin中建立项目(Project) 95
9.2.3 步骤三:Kylin中建立数据源(Data Source) 95
9.2.4 步骤四:Kylin中建立数据模型(Model) 98
9.2.5 步骤五:Kylin中建立Cube 104
9.2.6 步骤六:Build Cube 114
9.2.7 步骤七:查询Cube 118
第10章 Build Cube的来龙去脉 120
10.1 流程分析 120
10.2 小结 134
第三部分 Apache Kylin 高级部分
第11章 Cube优化 137
第12章 备份Kylin的Metadata 142
12.1 Kylin的元数据 142
12.2 备份元数据 143
12.3 恢复元数据 146
第13章 使用Hive视图 147
13.1 使用Hive视图 147
13.2 使用视图实战 149
第14章 Kylin的垃圾清理 153
14.1 清理元数据 153
14.2 清理存储器数据 154
第15章 JDBC访问方式 157
第16章 通过RESTful访问Kylin 161
第17章 Kylin版本之间升级 179
17.1 从1.5.2升级到最新版本1.5.3 179
17.2 从1.5.1升级到1.5.2版本 180
17.3 从Kylin 1.5.2.1升级到Kylin 1.5.3实战 181
17.4 补充内容 187
第18章 大数据可视化实践 189
18.1 可视化工具简述 189
18.2 安装Kylin ODBC驱动 190
18.3 通过Excel访问Kylin 192
18.4 通过Power BI访问Kylin 194
18.4.1 安装配置Power BI 194
18.4.2 实战操作 198
18.5 通过Tableau访问Kylin 199
18.6 Kylin + Mondrian + Saiku 205
18.7 实战演练:通过Saiku访问Kylin 211
18.7.1 第一个Schema例子:myproject_pvuv_cube的演示 211
18.7.2 第二个Schema例子:kylin_sales_cube的演示 219
18.7.3 Saiku使用的一些问题 223
18.8 通过Apache Zepplin访问Kylin 229
18.9 通过Kylin的“Insight”查询 232
第19章 使用Streaming Table 构建准实时Cube 236
第20章 快速数据立方算法 251
20.1 快速数据立方算法概述 251
20.2 快速数据立方算法优点和缺点 253
20.3 获取Fast Cubing算法的优势 254
第四部分 Apache Kylin的扩展部分
第21章 大数据智能分析平台KAP 257
21.1 大数据智能分析平台KAP概述 257
21.2 KAP的安装部署 259
前言/序言
自2011年下半年开始,我就一直关注Apache开源社区,侧重点放在大数据方面的成熟框架和产品。在这期间,陆续研究过Hadoop、Hive、HBase、Mahout、Kafka、Flume、Storm,以及近两年很火的Spark和Flink等,和很多从事大数据的朋友一样,经历过无数的夜晚,对着电脑屏幕逐行研究这些源代码,同时也看到无数的开源爱好者和技术专家加入Hadoop开源社区,贡献自己的力量,日复一日,乐此不疲。
谈起大数据,不得不提Hadoop,如今其早已发展成为了大数据处理的事实标准。Hadoop诞生于2005年,其受到Google的两篇论文(GFS和MapReduce)的启发。起初,Hadoop只是用来支撑Nutch搜索引擎的项目,从2006年开始,Hadoop脱离了Nutch,成为了Apache的顶级项目,无论是在学术界还是工业界都得到了迅猛的发展。
如今已是2016年了,Hadoop十周岁了,这十年期间围绕其核心组件(HDFS、MapReduce、Yarn)陆续出现了一批工具,用来丰富Hadoop生态圈,解决大数据各方面的问题,这其中就包括Apache Kylin。
ApacheKylin(麒麟)是由eBay 研发并贡献给开源社区的Hadoop上的分布式大规模联机分析(OLAP)平台,它提供Hadoop之上的SQL查询接口及多维分析能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。Apache Kylin于2014年10月开源,并于当年11月成为Apache孵化器项目,是eBay第一个贡献给Apache软件基金会的项目,也是第一个由中国团队完整贡献到Apache的项目,在这里对Apache Kylin的中国团队表示感谢,感谢贡献如此出色的大数据分析平台。
从去年开始接触Apache Kylin,我感觉很亲切,也很惊喜。当前研究的版本为0.7.1,也就是Kylin加入Apache孵化器项目后的第一个Apache发行版本,虽然当时的Kylin存在一些问题,但是其基于Hadoop设计的框架还是很有创意和特色的。经过一年多的发展,截至目前,Apache Kylin的版本已经发展到1.5.3,并且从1.5版本开始,Apache Kylin进行了重构,支持可扩展架构,支持更多的数据源、构建引擎和存储引擎,构建算法不断优化,支持与更多的可视化工具集成等。
如今,Apache Kylin已被应用在eBay、Exponential、京东、美团、明略数据、网易及其他公司。越来越多的大数据团队开始选择Apache Kylin作为公司大数据分析平台的组成部分,满足其海量数据的多维指标实时查询分析。通过很多社区的交流分享,我发现不少朋友对Apache Kylin没有一个整体的认识,在使用过程中出现各种各样的问题,打击自信心,他们急切希望能有一本全面介绍Apache Kylin的书籍。因为我经常在博客和社区分享Apache Kylin实战方面的一些经验,所以很多朋友鼓励我能够写一本比较全面介绍Apache Kylin的书籍,帮助更多的爱好者更好地加入Apache Kylin的社区,并在生产环境中进行实践。刚开始比较犹豫,毕竟写书需要花费大量的时间和精力,而且要对读者负责,容不得半点马虎。后来有社区的几个朋友给我打电话劝说,以及清华大学出版社的夏毓彦编辑一再鼓励,还有家人的支持,我就下定决心写这本书,目的只有一个,就是希望读者能够通过这本书,对Apache Kylin有一个完整的认识,掌握各方面的技能,并最终应用在自己公司的生产环境中。
本书内容
这是一本全面介绍Apache Kylin的书籍,包括环境搭建、案例实战演示、源码分析、Cube优化等,此外还会涉及数据仓库、数据模型、OLAP、数据立方体等方面的知识。通过本书系统性学习和实战操作,朋友们将能够达到基于Apache Kylin搭建企业级大数据分析平台,并熟练掌握使用Apache Kylin多维度地分析海量数据,最终通过可视化工具展示结果。
受众人群
本书适合从事Hadoop、HBase、Hive和Kylin等方面工作的人员参考阅读,最好能掌握一点OLAP、数据立方体等数据仓库方面的知识。但是我相信这本书也适合任何想从事大数据方面工作的程序员和架构师。
代码规范和下载
本书中会涉及大量的Linux Shell命令,这些命令都是在CentOS操作系统上执行成功的,对于其他的一些Linux系统也同样适用,如有不适用的,可以查阅资料,修改命令以符合对应的操作系统。
要下载本书章节中的样例代码,请下载。
读者服务
由于本人的写作能力有限,可能有些章节内容考虑并不全面,或者版本升级导致某些章节部分内容不是最新的。为了更好地为读者服务,我特意建立了一个QQ群,读者有关本书的任何问题,我都会及时给朋友们答复,谢谢支持。
致谢
这本书的面世,得到了很多朋友的鼎力相助,在这里感谢所有帮助我完成这本书的人。
感谢公司的同事们,特别感谢项同德和万文兵两位项目经理给予的支持和鼓励,感谢施健健给予的技术支持和帮助。
感谢CSDN和cnblogs博客中优秀的文章给予的技术支持。
感谢清华大学出版社所有为本书的出版和发行付出了辛勤劳动的人们。
最后,我要感谢我的家人,给予我的不懈支持。感谢父母帮我们照顾调皮捣蛋的宝宝;感谢妻子一如既往地照顾我的生活,给予我充足的时间用来写作。没有家人的支持和照顾,我是不可能完成这本书。
作者
2016年10月
《现代数据仓库架构与实战:从规划到优化的全景指南》 在数据爆炸式增长的今天,企业如何有效应对海量数据,从中挖掘商业洞察,驱动决策优化,已成为决定其竞争力的核心要素。本书并非聚焦于某个特定技术栈的搭建,而是致力于提供一套系统性的、放之四海而皆准的现代数据仓库规划、设计、构建与优化的全面指导。我们将深入探讨数据仓库在现代企业架构中的定位,分析其与数据湖、数据中台等概念的融合与演进,帮助您构建一个能够支撑从业务分析到人工智能应用的强大数据基础设施。 第一部分:现代数据仓库的战略定位与规划 数据仓库不再是孤立的ETL和报表系统,而是企业数字化转型的基石。在本部分,我们将首先阐述现代数据仓库的核心价值,以及它如何在数据驱动的商业环境中扮演关键角色。我们将探讨数据仓库的演进历程,从传统的EDW(Enterprise Data Warehouse)到云原生数据仓库,再到与数据湖融合的混合架构,帮助您理解不同技术路线的优势与局限。 数据仓库的战略意义与商业驱动力: 从“报表工具”到“战略引擎”的转变。 数据仓库如何支撑业务增长、风险管理、客户洞察、运营效率提升等关键业务目标。 理解数据驱动决策的文化变革对数据仓库建设提出的新要求。 现代数据仓库的架构演进: 传统EDW的挑战: 固定的数据模型、扩展性限制、响应速度瓶颈。 云原生数据仓库的崛起: 解耦存储与计算、弹性伸缩、按需付费、托管服务。 数据湖与数据仓库的融合: Lakehouse架构的出现,兼顾数据湖的灵活性和数据仓库的结构化优势。 数据中台的概念与数据仓库的关系: 数据中台的“能力复用”理念如何与数据仓库的数据服务化相结合。 数据仓库的规划与需求分析: 业务场景导向的规划: 如何从业务痛点出发,识别数据仓库的核心应用场景。 利益相关者识别与沟通: 如何与业务部门、IT部门、数据科学家等建立有效的沟通机制。 数据治理与合规性考量: GDPR、CCPA等法规对数据仓库设计的影响,数据隐私、数据安全、数据质量的重要性。 技术选型原则: 根据企业现有技术栈、预算、团队能力、业务需求等因素,选择合适的技术栈(云服务、开源技术、商业产品)。 第二部分:数据仓库的设计原则与建模实践 数据模型的质量直接决定了数据仓库的可用性、性能和可维护性。本部分将深入讲解数据仓库的设计原则,并详细介绍多种主流的数据建模技术,帮助您构建出灵活、高效且易于理解的数据模型。 数据仓库设计的基本原则: 面向主题: 以业务主题域为中心进行组织。 集成性: 统一的数据定义与格式。 非易失性: 数据一旦加载,不应被修改。 时间相关性: 记录数据的历史变化。 数据建模技术详解: 范式建模(3NF): 详细讲解第三范式在操作型系统(OLTP)中的应用,并分析其在数据仓库中的适用性与局限。 维度建模(Dimensional Modeling): 事实表(Fact Tables): 事务事实、周期快照、累积快照的定义与设计。 维度表(Dimension Tables): 缓慢变更维度(SCD)的类型(Type 1, Type 2, Type 3, Type 6)及其实现策略。 星型模型(Star Schema): 概念、结构、优缺点分析。 雪花模型(Snowflake Schema): 概念、结构、与星型模型的对比。 数据立方体(Data Cube)与OLAP: 多维数据模型的设计理念,如何支持高效的切片、钻取、汇总操作。 数据 Vault建模(Data Vault Modeling): Hub、Link、Satellite的组成与作用。 Data Vault在处理大规模、高变动性数据源时的优势。 Data Vault与维度建模的结合使用。 数据湖中的建模实践: Schema-on-read 与 Schema-on-write 的权衡。 Delta Lake、Apache Hudi、Apache Iceberg等技术在数据湖中的数据治理与建模。 数据质量与一致性保障: 数据校验规则的设计与实施。 主数据管理(MDM)在数据仓库中的作用。 数据字典与业务术语表的重要性。 第三部分:数据仓库的ETL/ELT与数据集成 将分散、异构的数据源整合到数据仓库是核心任务。本部分将深入探讨ETL(Extract, Transform, Load)和ELT(Extract, Load, Transform)两种模式,以及实现数据集成过程中需要关注的关键技术和挑战。 ETL与ELT模式解析: ETL的优势与劣势: 传统模式、数据清洗的集中性。 ELT的兴起与优势: 利用目标平台计算能力、处理半结构化/非结构化数据。 混合模式的应用场景。 数据抽取(Extract)策略: 全量抽取与增量抽取(CDC - Change Data Capture)。 基于时间戳、日志、触发器、消息队列的增量抽取技术。 API、文件、数据库直连等多种抽取方式。 数据转换(Transform)技术: 数据清洗、标准化、去重、转换、聚合。 业务规则的实现与验证。 使用SQL、Python、Spark等工具进行数据转换。 数据加载(Load)机制: 全量加载、增量加载(插入、更新、删除)。 批量加载与流式加载。 批量提交与事务管理。 现代数据集成工具与平台: 开源工具: Apache NiFi, Apache Airflow, dbt (data build tool)。 云服务: AWS Glue, Azure Data Factory, Google Cloud Dataflow/Dataproc。 商业ETL/ELT工具: Informatica, Talend, Fivetran等。 实时数据集成: 消息队列(Kafka, Pulsar)的应用。 流处理引擎(Flink, Spark Streaming)的集成。 CDC工具与流式数据管道。 第四部分:数据仓库的性能优化与扩展性 随着数据量的增长,数据仓库的性能可能成为瓶颈。本部分将聚焦于数据仓库的性能优化策略,包括硬件、软件、查询优化、数据存储等多个层面,以及如何设计可扩展的数据仓库架构。 查询性能优化: SQL优化技巧: 索引、视图、分区、物化视图、查询计划分析。 统计信息的重要性: 如何收集和更新统计信息。 查询调优工具的应用。 数据存储与访问优化: 数据压缩技术: Snappy, Gzip, Zstd等。 列式存储(Columnar Storage): Parquet, ORC格式的优势。 数据分区(Partitioning): 按日期、地域等维度进行分区。 数据分片(Sharding): 分布式数据库中的分片策略。 硬件与基础设施优化: 计算与存储的解耦: 云数据仓库的弹性优势。 网络带宽与延迟的考量。 缓存策略的应用。 数据仓库的扩展性设计: 水平扩展与垂直扩展。 无共享(Shared-Nothing)架构。 微服务化数据仓库组件。 流式数据处理与近实时分析: 流式数据管道的构建。 内存计算与实时查询。 第五部分:数据仓库的管理、监控与安全 一个健壮的数据仓库离不开有效的管理、监控和安全措施。本部分将探讨数据仓库生命周期管理、性能监控、访问控制、数据安全以及灾难恢复等关键方面。 数据仓库生命周期管理: 部署、更新、迁移、归档、销毁。 版本控制与配置管理。 性能监控与故障排查: 关键性能指标(KPIs):查询响应时间、吞吐量、资源利用率。 日志分析与告警系统。 根因分析与问题定位。 数据仓库安全策略: 访问控制: RBAC(Role-Based Access Control)、ABAC(Attribute-Based Access Control)。 数据加密: 传输加密(TLS/SSL)、静态数据加密。 数据脱敏与匿名化。 审计日志的记录与分析。 合规性审计。 灾难恢复与业务连续性: 备份与恢复策略。 数据冗余与高可用性设计。 容灾演练与测试。 第六部分:数据仓库的未来趋势与实践案例 数据仓库领域仍在快速发展,新的技术和应用模式不断涌现。本部分将展望数据仓库的未来趋势,并结合实际案例,展示如何在不同行业和场景中成功构建和应用数据仓库。 数据仓库的未来发展方向: AI与ML驱动的数据仓库: 自动化数据管道、智能查询优化、预测性分析。 Serverless数据仓库: 进一步降低运维成本。 数据编目(Data Catalog)与数据发现。 数据虚拟化(Data Virtualization)的应用。 与图数据库、时序数据库等的融合。 行业最佳实践与案例分析: 零售业: 客户行为分析、商品推荐、库存优化。 金融业: 风险管理、反欺诈、客户画像。 互联网行业: 用户行为分析、广告优化、A/B测试。 制造业: 生产效率监控、质量控制、供应链优化。 从数据仓库到数据驱动型企业: 如何将数据仓库的价值最大化。 构建数据文化与数据素养。 数据驱动的创新与商业模式的变革。 通过对以上各个部分的深入学习和实践,读者将能够系统地掌握构建、管理和优化现代数据仓库的理论知识和实战技能,从而有效地利用企业数据,驱动业务发展,在日益激烈的市场竞争中占据优势地位。本书旨在成为您构建卓越数据分析平台的一站式指南,无论您是数据工程师、数据架构师,还是对数据分析有深入需求的业务决策者,都能从中获益。