《HAWQ数据仓库与数据挖掘实战》推荐序
回想过去几年,从我在EMC(Greenplum)启动HAWQ项目开始,到全球多个世界500强公司使用HAWQ,后来把HAWQ开源到Apache社区,现在又基于HAWQ创立“偶数”,时光荏苒。今天非常高兴能够看到雪迎这本关于HAWQ的书出现。
数据仓库的架构发展经历了几个阶段,第一代数据仓库是基于传统交易型数据库的共享存储(Share Storage)架构,比如Oracle,这种架构的缺点是基于专有高端存储,价格昂贵,可扩展性差,扩展到十几个节点往往就会撞到存储的瓶颈。
第二代数据仓库称为MPP(Massively Parallel Processing),采用无共享架构(Share Nothing),最早商业化的MPP产品为20世纪80年代出现的Teradata。Teradata当时基于大型机和专有硬件。在2000年左右又出现了几个基于普通x86服务器的MPP数据仓库创业公司,比如Greenplum、Vertica和Netezza,这几个创业公司后来分别被巨头EMC、HP和IBM收购。MPP架构解决了专有硬件的问题,可扩展性也得到了一定的提高,一般可以扩展到100节点左右。这种架构的缺点是在执行查询时,无论查询多大,所有节点都同样执行查询中均匀划分的一小部分,在节点数特别多的时候,很难协调保证所有节点的状态和工作都是均匀一致的。就像几个人一起干活,大家分工协调起来容易,如果几千人一起干活,人与人之间的不同以及协调问题就会突显起来。这也是MPP架构很难扩展到大规模的一个重要原因。
MPP之后的新一代数据仓库(New Data Warehouse)都采取了存储与计算分离架构。正是因为存储与计算分离,计算可以访问存储在任何节点的数据,并在任意节点进行调度,从而可以实现高可扩展性。存储与计算分离的另外一个好处是管理的简单性,比如扩容不再需要像MPP一样重新分布一遍数据。
新一代数据仓库根据存储实现方式的不同也可以分为三大类:SQL on Hadoop、SQL on Object Store以及SQL on Global Store。Hive、SparkSQL和HAWQ 2.x版本属于典型的SQL on Hadoop,存储为HDFS;像Amazon的Athena和Snowflake则属于SQL on Object Store,数据存储在S3对象存储中。一般SQL on Hadoop和SQL on Object Store都有着兼容性不好、性能一般或者对Update/Delete以及混合工作负载支持不好的缺点,但HAWQ因为从开始就定位为下一代的Greenplum Database和语法解析器等源于Greenplum Database,所以在兼容性和性能等方面表现得很优秀。HAWQ社区现在正在开发的HAWQ新版本将会创新性地提出SQL on Global Store架构,HAWQ将会具有一个可以全球规模部署、多数据中心、多活的存储。这样HAWQ就可以更加高效地支持各种传统数据仓库可以实现的功能,比如Update/Delete等,还可以更好地支持传统数据仓库做不到的功能,比如多数据中心、多活等,从而彻底取代传统数据仓库。
雪迎的这本书很好地介绍了HAWQ的基本技术,并从用户角度详细给出了如何使用HAWQ来构建数据仓库、进行机器学习和数据挖掘的方法,非常全面,是一本很好的HAWQ入门书籍。人工智能的流行以及数据驱动的方法是企业能够在新的数据和AI时代取得成功的关键,相信这本书的读者一定会从中受益,掌握最新的技术发展趋势与潮流。
Apache HAWQ创始人
常雷
2018年1月于北京