编辑推荐

HAWQ安装、连接、对象与资源管理、查询优化、备份恢复、高可用性、运维监控

ETL处理、自动调度系统、维度表与事实表技术、OLAP与数据的图形化表示

降维、协同过滤、关联规则、回归、聚类、分类等常见数据挖掘与机器学习方法

内容简介

ApacheHAWQ是一个SQL-on-Hadoop产品,它非常适合用于Hadoop平台上快速构建数据仓库系统。HAWQ具有大规模并行处理、完善的SQL兼容性、支持存储过程和事务、出色的性能表现等特性,还可与开源数据挖掘库MADlib轻松整合,从而使用SQL就能进行数据挖掘与机器学习。

《HAWQ数据仓库与数据挖掘实战》内容分技术解析、实战演练与数据挖掘三个部分共27章。技术解析部分说明HAWQ的基础架构与功能特性,包括安装、连接、对象与资源管理、查询优化、备份恢复、高可用性等。实战演练部分用一个完整的示例,说明如何使用HAWQ取代传统数据仓库,包括ETL处理、自动调度系统、维度表与事实表技术、OLAP与数据的图形化表示等。数据挖掘部分用实例说明HAWQ与MADlib整合,实现降维、协同过滤、关联规则、回归、聚类、分类等常见数据挖掘与机器学习方法。

《HAWQ数据仓库与数据挖掘实战》适合数据库管理员、大数据技术人员、Hadoop技术人员、数据仓库技术人员,也适合高等院校和培训机构相关专业的师生教学参考。

作者简介

王雪迎,王雪迎,毕业于中国地质大学计算机专业,高级工程师,从事数据库、数据仓库相关技术工作20年。先后供职于北京现代商业信息技术有限公司、北京在线九州信息技术服务有限公司、华北计算技术研究所、北京优贝在线网络科技有限公司,担任DBA、数据架构师等职位。著有图书《Hadoop数据仓库实践》。

精彩书摘

1.4为什么选择HAWQ

前面已经介绍了几种常用SQL-on-Hadoop的实现方式,也了解了HAWQ的功能特性与系

统架构。那么站在用户的角度,我们为什么要选择HAWQ?近年来我尝试过几种

SQL-on-Hadoop产品,从最初的Hive,到SparkSQL,再到Impala,在这些产品上进行了一系

列ETL、CDC、多维数据仓库、OLAP实验。从数据库的角度看,这些产品与传统的DBMS

相比,功能不够完善,性能差距很大,甚至很难找到一个相对完备的Hadoop数据仓库解决方

案。这里就以个人的实践体验来简述这些产品的不足以及HAWQ的可行性。

1.4.1常用SQL-on-Hadoop产品的不足

1.Hive

Hive是一款老牌的Hadoop数据仓库产品,能够部署在所有Hadoop发行版本上。它在

MapReduce计算框架上封装一个SQL语义层,极大简化了MR程序的开发。直到现在,Hive

依然以其稳定性赢得了大量用户。

Hive的缺点也很明显——速度太慢。随着技术的不断进步,Hive的执行引擎从MapReduce

发展出HiveonSpark、HiveonTez等。特别是运行在Tez框架上的Hive,其性能有了很大改

进。即便如此,Hive的速度还是比较适合后台批处理应用场景,而不适合交互式即时查询和

联机分析。

第1章HAWQ概述

2.SparkSQL

SparkSQL是Hadoop中另一个著名的SQL引擎,正如名字所表示的,它以Spark作为底

层计算框架,实际上是一个Scala程序语言的子集。Spark基本的数据结构是RDD,一个分布

于集群节点的只读数据集合。传统的MapReduce框架强制在分布式编程中使用一种特定的线

性数据流处理方式。MapReduce程序从磁盘读取输入数据,把数据分解成键/值对,经过混洗、

排序、归并等数据处理后产生输出,并将最终结果保存在磁盘。Map阶段和Reduce阶段的结

果均要写磁盘,这大大降低了系统性能。也是由于这个原因,MapReduce大都被用于执行批

处理任务。

为了解决MapReduce的性能问题,Spark使用RDD共享内存结构。这种内存操作减少了

磁盘IO,大大提高了计算速度。开发Spark的初衷是用于机器学习系统的培训算法,而不是

SQL查询。Spark宣称其应用的延迟可以比MapReduce降低几个数量级,但是在我们的实际

使用中,20TB的数据集合上用SparkSQL查询要10分钟左右出结果,这个速度纵然是比Hive

快了4倍,但显然不能支撑交互查询和OLAP应用。Spark还有一个问题,即需要占用大量内

存,当内存不足时,很容易出现OOM错误。

3.Impala

Impala的最大优势在于执行速度。官方宣称大多数情况下它能在几秒或几分钟内返回查

询结果,而相同的Hive查询通常需要几十分钟甚至几小时完成,因此Impala适合对Hadoop

文件系统上的数据进行分析式查询。Impala默认使用Parquet文件格式,这种列式存储方式对

于典型数据仓库场景下的大查询是较为高效的。

Impala的问题主要体现在功能上的欠缺。例如,不支持Date数据类型,不支持XML和

JSON相关函数,不支持covar_pop、covar_samp、corr、percentile、percentile_approx、

histogram_numeric、collect_set等聚合函数,不支持rollup、cube、groupingset等操作,不支

持数据抽样(Sampling),不支持ORC文件格式,等等。其中,分组聚合、取中位数等是数

据分析中的常用操作,当前的Impala存在如此多的局限,使它在可用性上大打折扣,实际使

用时要格外注意。

前言/序言

前言

从BillInmon在1991年提出数据仓库的概念,至今已有27的时间。在这期间人们所面对的数据,以及处理数据的方法都发生了翻天覆地的变化。随着互联网和移动终端等应用的普及,运行在单机或小型集群上的传统数据仓库不再能满足数据处理要求,以Hadoop及其生态圈组件为代表的新一代分布式大数据处理平台逐渐流行。

尽管大多数人都在讨论某种技术或者架构可能会胜过另一种,而我更倾向于从“Hadoop与数据仓库密切结合”这个角度来探讨问题。一方面企业级数据仓库中已经积累了大量的数据和应用程序,它们仍然在决策支持领域发挥着至关重要的作用;另一方面,传统数据仓库从业人员的技术水平和经验也在逐步提升。如何才能使积累的大量历史数据平滑过渡到Hadoop上,并让熟悉传统数据仓库的技术人员能够有效地利用已有的知识,可以在大数据处理平台上一展身手,才是一个亟待解决的问题。

虽然伴随着大数据的概念也出现了以MongoDB、Cassandra为代表的NoSQL产品,但不可否认,SQL仍然是数据库、数据仓库中常使用的开发语言,也是传统数据库工程师或DBA的必会语言,从它出现至今一直被广泛使用。首先,SQL有坚实的关系代数作为理论基础,经过几十年的积累,查询优化器也已经相当成熟。再者,对于开发者,SQL作为典型的非过程语言,其语法相对简单,但语义却相当丰富。据统计95%的数据分析问题都能用SQL解决,这是一个相当惊人的结论。那么SQL怎样才能与Hadoop等大数据技术结合起来,既能复用已有的技能,又能有效处理大规模数据呢?在这样的需求背景下,近年来涌现出越来越多的SQL-on-Hadoop软件,比如从早期的Hive到SparkSQL、Impala、Kylin等,《HAWQ数据仓库与数据挖掘实战》所论述的就是众多SQL-on-Hadoop产品中的一员——HAWQ。

我最初了解到HAWQ是在BDTC2016大会上,ApacheHAWQ的创始人常雷博士介绍了该项目。他的演讲题目是“以HAWQ轻松取代传统数据仓库”,这正是我的兴趣所在。HAWQ支持事务、性能表现优良,关键是与SQL的兼容性非常好,甚至支持存储过程。对于传统数据仓库的开发人员,使用HAWQ转向大数据平台,学习成本应该是比较低的。我个人认为HAWQ更适合完成Hadoop上的数据仓库及其数据分析与挖掘工作。

HAWQ数据仓库与数据挖掘实战》内容

一年来,我一直在撰写HAWQ相关的文章和博客,并在利用HAWQ开发Hadoop数据仓库方面做了一些基础的技术实践,《HAWQ数据仓库与数据挖掘实战》就是对这些工作的系统归纳与总结。《HAWQ数据仓库与数据挖掘实战》分为技术解析、实战演练、数据挖掘三个部分,共27章。

技术解析部分说明HAWQ的基础架构与功能特性,包括安装部署、客户端与服务器连接、数据库对象与资源管理、查询优化、备份恢复、高可用性等。

实战演练部分通过一个简单而完整的示例,说明使用HAWQ设计和实现数据仓库的方法,包括初始和定期ETL处理、自动调度系统、维度表与事实表技术、联机分析处理与数据的图形化表示等。这部分旨在将传统数据仓库建模、SQL开发的简单性与大数据技术相结合,快速、高效地建立可扩展的数据仓库及其应用系统。

数据挖掘部分结合应用实例,讨论将HAWQ与MADlib整合,MADlib是一个开源机器学习库,提供了精确的数据并行实现、统计和机器学习方法,可以对结构化和非结构化数据进行分析。它的主要目的是可以非常方便地加载到数据库中,扩展数据库的分析功能。MADlib仅用SQL查询就能做简单的数据挖掘与机器学习,实现矩阵分解、降维、关联规则、回归、聚类、分类、图算法等常见数据挖掘方法。这也是HAWQ的一大亮点。

HAWQ数据仓库与数据挖掘实战》读者

HAWQ数据仓库与数据挖掘实战》适合数据库管理员、数据仓库技术人员、Hadoop或其他大数据技术人员,也适合高等院校和培训学校相关专业的师生教学参考。

代码、彩图下载

致谢

在《HAWQ数据仓库与数据挖掘实战》编写过程中,得到了很多人的帮助与支持。感谢清华大学出版社图格事业部的老师和编辑们,他们的辛勤工作使得《HAWQ数据仓库与数据挖掘实战》得以尽早与读者见面。感谢CSDN提供的技术分享平台,给我有一个将博客文章整理成书的机会。感谢我在优贝在线的所有同事,特别是技术部的同事们,他们在工作中的鼎力相助,使我有更多的时间投入到《HAWQ数据仓库与数据挖掘实战》的写作中。感谢ApacheHAWQ的创始人常雷先生在百忙之中为《HAWQ数据仓库与数据挖掘实战》写推荐序。最后,感谢家人对我一如既往地支持。

因为水平有限,错漏之处在所难免,希望读者批评指正。

著者

2018年1月


其他推荐