从首次提出到发展至今,数据仓库大概可以分为三个阶段,第一阶段是采用共享架构的传统数据仓库,这类数仓主要是面向传统的BI分析,可扩展性较差,大概是十几个节点;第二阶段是无共享架构的MPP,这类数仓主要是面向有复杂需求的传统BI分析,典型的代表有Teradata、Vertica、Greenplum等等;前两个阶段的数据仓库架构都存在缺乏弹性、不易调整、难以实现秒级扩容等问题,而新一代数据仓库克服了这些困难,实现了弹性伸缩和灵活配置。
新一代数据仓库主要是面向大数据和人工智能,支持工业标准的X86服务器,可扩展到上千个节点。如果再进一步细分的话,新一代数据仓库可分为SQL on Hadoop、SQL on Object Store和Hybrid。HAWQ可以归类到Hybrid里面。下面介绍一下HAWQ的体系架构。
体系构架
概览
图1给出了一个典型的HAWQ集群的主要组件。其中有几个Master节点:包括HAWQ master节点,HDFS master节点NameNode,YARN master节点ResourceManager。现在HAWQ元数据服务在HAWQ master节点里面,未来版本会成为单独的服务。其他节点为Slave节点。每个Slave节点上部署有HDFS DataNode,YARN NodeManager以及一个HAWQ Segment。其中YARN是可选组件,如果没有YARN的话,HAWQ会使用自己内置的资源管理器。HAWQ Segment在执行查询的时候会启动多个QE (Query Executor, 查询执行器)。查询执行器运行在资源容器里面。在这个架构下,节点可以动态的加入集群,并且不需要数据重新分布。当一个节点加入集群时,他会向HAWQ Master节点发送心跳,然后就可以接收未来查询了。
图1. HAWQ体系架构
图2是HAWQ内部架构图。可以看到