第一部分HAWQ技术解析第1章HAWQ概述HAWQ的全称为HadoopWithQuery,即带查询的Hadoop,是一个出色的SQL-on-Hadoop解决方案,尤其适合构建Hadoop数据仓库.
它最初由Pivotal公司开发,后来贡献给Apache社区,成为孵化器项目.
本章是对HAWQ的一个概要介绍.
首先对SQL-on-Hadoop的功能需求有个基本认识,然后以此作为参照,说明HAWQ的功能特性.
为了更好地使用HAWQ,我们需要了解它的整体系统架构,以及各组件所起的作用.
本章最后将阐述选择HAWQ的理由.
1.
1SQL-on-Hadoop过去几年里,许多企业和开发者已慢慢接受Hadoop生态系统,将它用作大数据分析堆栈的核心组件.
尽管Hadoop生态系统的MapReduce组件是一个强大的典范,但随着时间的推移,MapReduce自身不再是连接存储在Hadoop生态系统中的数据的最简单途径.
企业需要一种更简单的方式来访问要查询、分析甚至要执行深度挖掘的数据,以便发现存储在Hadoop中的所有数据的真正价值.
SQL以其扎实的理论基础、简单的语法、丰富的语义得到广泛应用,在帮助各类用户发掘数据的商业价值领域具有很长历史.
Hadoop上的SQL支持一开始是ApacheHive,一种类似于SQL的查询引擎,它将有限的SQL方言编译到MapReduce中.
Hive对MapReduce的完全依赖会导致严重的查询延迟,因此其主要适用场景是批处理模式.
另外,尽管Hive对于SQL的支持是好的开端,但对SQL的有限支持意味着精通SQL的用户忙于企业级使用场景时将遇到严重的限制.
它还暗示着庞大的基于标准SQL的工具生态系统无法利用Hive.
值得庆幸的是,在为SQL-on-Hadoop提供更好的解决方案方面已取得长足进展.
除Hive外,当前常见的框架已经有HAWQ、Impala、Presto、SparkSQL、Drill、Kylin等很多种.
1.
1.
1对SQL-on-Hadoop的期待表1-1显示了一流的SQL-on-Hadoop方案需要具有的功能以及这些功能给使用者带来的好处.
从传统的意义上说,这些功能中的大部分在分析型数据仓库中都能找到.
4HAWQ数据仓库与数据挖掘实战表1-1一流SQL-on-Hadoop方案应有功能及带来的业务好处功能业务好处丰富且合规的SQL支持功能强大的可移植SQL应用程序,能够利用基于SQL的数据分析和数据可视化工具的大型生态系统符合TPC-DS规格TPC-DS帮助确保所有级别的SQL查询得到处理,从而广泛支持各种使用场景并避免企业级实施期间出现意外灵活高效的表连接简化应用系统开发,提高数据仓库查询性能线性可扩展性平衡数据仓库工作负载一体化深度挖掘与机器学习用SQL实现所需的统计学、数学和机器学习算法外部数据处理能力有效利用多种外部数据资产,降低数据重构成本高可用性与容错确保业务连续性,保证数据仓库的关键业务分析原生Hadoop文件格式支持简化ETL过程,减少数据迁移1.
1.
2SQL-on-Hadoop的实现方式1.
HiveHive建立在Hadoop的分布式文件系统(HDFS)和MapReduce之上.
为了缩小Hive与传统SQL引擎之间的性能落差,现在已经可以通过MapReduce、Spark或Tez等多种计算框架执行查询.
Hive提供一种称为HiveQL的语言,允许用户进行类似于SQL的查询.
Hive的体系结构如图1-1所示.
图1-1Hive体系结构5第1章HAWQ概述2.
SparkSQLSparkSQL是Spark处理结构化数据的程序模块.
它将SQL查询与Spark程序无缝集成,可以将结构化数据作为Spark的RDD进行查询.
RDD的全称为ResilientDistributedDatasets,即弹性分布式数据集,是Spark基本的数据结构.
Spark使用RDD作为分布式程序的工作集合,提供一种分布式共享内存的受限形式.
RDD是只读的,对其只能进行创建、转化和求值等操作.
SparkSQL的体系结构如图1-2所示.
图1-2SparkSQL体系结构Dataset是一个分布式的数据集合.
DatasetAPI是Spark1.
6中新增的编程接口,利用SparkSQL执行引擎优化器提供RDD的功能.
Dataset可以从JVM对象中构建,然后使用map、flatMap、filter等方法进行转换.
DataFrame是被组织为命名列的Dataset,其概念与关系数据库中的表类似,但底层结构更加优化.
DataFrame可以从结构化的数据文件、Hive表、外部数据库或者已有的RDD中构建.
3.
ImpalaImpala是一个运行在Hadoop上的大规模并行处理(MassivelyParallelProcessing,MPP)查询引擎,提供对Hadoop集群数据的高性能、低延迟的SQL查询,使用HDFS作为底层存储.
对查询的快速响应使交互式查询和对分析查询的调优成为可能,而这些在针对处理长时间批处理作业的SQL-on-Hadoop传统技术上是难以完成的.
Impala可与Hive共享数据库表,并且Impala与HiveQL的语法兼容.
Impala体系结构如图1-3所示.
Impala服务器由不同的守护进程组成,每种守护进程运行在Hadoop集群中的特定主机上.
其中,Impalad、Statestored、Catalogd三个守护进程在其架构中扮演主要角色.
6HAWQ数据仓库与数据挖掘实战图1-3Impala体系结构4.
HAWQHAWQ引擎利用Greenplum数据仓库的代码基础和深度数据管理专业知识构建,在HDFS中存储底层数据.
HAWQ使用业内唯一一款专为HDFS量身打造的、基于成本的查询优化框架来增强其性能.
与Impala类似,HAWQ也采用MPP架构,使用户能够获益于经过锤炼的基于MPP的分析功能及其查询性能,同时有效利用HDFS的分布式存储、容错机制、机架感知等功能,兼顾了低延时与高扩展.
HAWQ可与其他传统SQL-on-Hadoop引擎共存于一个分析堆栈.
图1-4取自Pivotal官方文档,显示了HAWQ与Greenplum的联系与区别.
图1-4将基于MPP的分析数据仓库用于SQL-on-Hadoop方案1.
2HAWQ简介HAWQ是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析型应用.
它和其他关系型数据库类似,接受SQL,返回结果集.
7第1章HAWQ概述1.
2.
1历史与现状(1)想法和原型系统(2011年):GOH阶段(GreenplumDatabaseOnHDFS).
(2)HAWQ1.
0Alpha(2012年):多个国外大型客户试用,当时客户性能测试是Hive的数百倍,促进了HAWQ1.
0作为正式产品发布.
(3)HAWQ1.
0GA(2013年初):改变了传统MPP数据库架构,包括事务、容错、元数据管理等.
(4)HAWQ1.
X版本(2014-2015Q2):增加了一些企业级需要的功能,比如Parquet存储、新的优化器、Kerberos支持、Ambari安装部署等.
(5)HAWQ2.
0Alpha发布并成为Apache孵化器项目:针对云环境的系统架构重新设计,新增数十个高级功能,包括弹性执行引擎、高级资源管理、YARN集成、快速扩容等.
当前最新版本是HAWQ++2.
2.
0.
1.
2.
2功能特性虽然HAWQ采用MPP架构,但它具有很多传统大规模并行处理数据库没有的特性及功能.
让我们考虑SQL-on-Hadoop的各个方面,并将之与HAWQ相比较.
1.
丰富且完全兼容的SQL标准数据仓库项目的数据源往往是多种异构数据库,而且很多时候我们不能直连源库,得到的只是从源库导出的SQL脚本.
在这种情况下,对SQL的兼容性要求尤为重要.
HAWQ百分之百符合ANSISQL规范并且支持SQL92、99、2003OLAP,以及基于Hadoop的PostgreSQL.
它包含关联子查询、窗口函数、分析函数、标量函数与聚合函数的功能,并且支持SQLUDF.
由于HAWQ系统完全符合SQL规范,因此使用HAWQ编写的分析应用程序可以轻松移植到其他符合SQL规范的数据引擎上,反之亦然.
用户可通过ODBC和JDBC连接HAWQ.
2.
TPC-DS合规性TPC-DS针对具有各种操作要求和复杂性的查询定义了99个模板,比如点对点、报表、迭代、OLAP、数据挖掘等.
成熟的基于Hadoop的SQL系统需要支持和正确执行多数此类查询,以解决各种不同分析工作和使用场景中的问题.
基准测试通过TPC-DS中的99个模板生成的111个查询来执行.
依据符合可优化、可执行两个要求的查询个数,图1-5所示的条形图显示了一些基于SQL-on-Hadoop常见系统的合规情况.
图1-5从TPC-DS套件返回的已完成查询个数8HAWQ数据仓库与数据挖掘实战以Greenplum代码库提供的扩展SQL支持能力为基础,HAWQ完成了全部111个查询.
3.
可实现灵活高效的连接HAWQ吸收了先进的基于成本的SQL查询优化器,自动生成执行计划,可优化使用Hadoop集群资源,还可以针对特定环境配置优化器内的成本函数,如版本、硬件、CPU、IOPS等.
HAWQ声称,能够为涉及50多个关联表的查询快速找到理想的查询计划.
这让用户能够以HAWQ提高用于大量数据分析的传统企业数据仓库工作负载的性能.
4.
利用线性可扩展加速Hadoop查询HAWQ为PB级数据操作专门设计.
数据直接存储在HDFS上,并且其SQL查询优化器已经为基于HDFS的文件系统性能特征进行过细致的优化.
SQL-on-Hadoop的主要设计目标之一是在Hadoop上执行SQL连接时最大限度地降低数据传输开销.
HAWQ采用Dynamicpipelining技术解决这一关键问题.
Dynamicpipelining是一种并行数据流框架,结合了以下技术:适应性高速UDP互联.
针对大数据量调整操作运行时执行环境.
运行时资源管理,确保查询完整性.
无缝数据分配机制,将经常用于特定查询的部分数据集集中处理.
使IP查找真正可扩展.
HAWQ官方的性能分析显示,对于Hadoop上的分析与数据仓库工作场景,HAWQ要比现有Hive查询引擎快一至两个数量级.
5.
一体化深度分析与机器学习数据分析通常需要使用统计学、数学和机器学习算法,如聚类或主成分分析等,这正在成为SQL-on-Hadoop方案的基本要求.
HAWQ利用开源机器学习库MADlib提供这些功能,通过UDF扩展SQL能力.
对于有此类需求的用户来说,将使其可以在通常的分析型工作中嵌入高级机器学习功能.
6.
外部数据处理能力SQL-on-Hadoop需要联合外部源数据,将各种来源的数据结合起来进行分析,提供更多灵活性.
数据可以跨其他数据仓库、HDFS、HBase以及Hive实例,且需要实施固有的并行性.
HAWQ通过名为PivotaleXtensionFramework(PXF)的模块提供外部数据访问能力.
PXF提供的特色功能包括:PXF使用智能抓取,其过滤器下推到Hive和HBase.
查询工作负载被下推到联合数据堆栈,从而尽可能减少数据移动,并改善延迟性能.
PXF提供框架API,以便用户为其自有数据堆栈开发新的连接器,进而增强数据引擎的松耦合,避免数据重构操作.
9第1章HAWQ概述PXF可利用ANALYZE收集外部数据的统计资料.
这样就可以通过基于成本的优化器优化联合数据源统计信息,帮助构建更高效的查询.
7.
高可用性与容错HAWQ支持数据库事务,允许用户隔离Hadoop上的并行活动并在出错时进行回滚.
HAWQ的容错服务、可靠性和高可用三个特点能容忍磁盘级与节点级故障.
这些能力可确保业务的连续性,同时增加了将更多关键业务分析迁移到HAWQ上运行的可能.
8.
原生Hadoop文件格式支持HAWQ支持AVRO、Parquet和原生的HDFS文件格式,在很大程度上降低了数据摄取期间ETL的复杂性.
对ETL和数据移动需求的减少直接降低了分析解决方案的成本.
9.
通过ApacheAmbari进行原生的Hadoop管理HAWQ使用ApacheAmbari作为管理和配置的基础.
合适的Ambari插件可以使得HAWQ像其他通用Hadoop服务一样被Ambari管理,IT管理团队不再需要Hadoop与HAWQ两套管理界面.
这使得用户专注于功能实现,最小化配置和管理等技术支持所需的工作量.
同时,Ambari是完全开源的Hadoop管理和配置工具,消除了供应商绑定风险.
10.
HortonworksHadoop兼容HAWQ可以与HortonworksHDP大数据体系无缝兼容,使用户在已经投资的Hortonworks大数据平台上利用HAWQ提供的所有功能.
11.
HAWQ的其他主要特性弹性执行引擎:可根据查询大小动态决定执行查询使用的节点个数.
支持多种分区方法及多级分区:如List分区和Range分区.
动态扩容:动态按需扩容,按照存储大小或者计算需求,快速添加节点.
多级资源管理:可与外部资源管理器YARN集成,也可以自己管理CPU、Memory等资源,支持多级资源队列.
支持多种第三方工具:如Tableau、SAS等.
1.
3HAWQ系统架构HAWQ结合了MPP数据库的关键技术和Hadoop的可扩展性,在原生的HDFS上读写数据.
MPP架构使HAWQ表现出超越其他SQL-on-Hadoop解决方案的查询性能,Hadoop又为HAWQ提供了传统数据库所不具备的线性扩展能力.
10HAWQ数据仓库与数据挖掘实战1.
3.
1系统架构图1-6给出了一个典型的HAWQ集群系统架构.
通常HAWQ集群中包含一个Master节点和多个Slave节点.
在Master节点上部署HAWQMaster、HDFSNameNode、YARNResourceManager.
HAWQ的元数据服务也在Master节点中.
每个Slave节点上部署有HDFSDataNode、YARNNodeManager以及一个HAWQSegment.
HAWQSegment在执行查询的时候会启动多个查询执行器(QueryExecutor,QE).
查询执行器运行在资源容器中.
图1-6典型的HAWQ集群部署架构1.
HAWQMasterHAWQMaster是系统的入口,其上运行处理SQL命令的数据库进程.
它负责的主要工作是:接受客户端连接;对连接请求进行鉴权;处理输入的SQL命令,解析SQL并生成执行计划;向Segment分发查询任务;协调每个Segment执行查询返回结果;向客户端程序输出最终结果.
HAWQMaster在本地存储的全局系统目录是一组系统表的集合,包含HAWQ系统自身的元数据.
HAWQMaster本地不存储任何用户数据,用户数据只存储在HDFS上.
最终用户通过Master与HAWQ进行交互.
可以使用如psql等客户端程序,或者类似JDBC、ODBC的应用程序接口(APIs)连接到数据库.
2.
物理Segment与虚拟Segment在HAWQ中,物理Segment是并行数据处理单元,每个主机上只有一个物理Segment.
每个物理Segment可以为一个查询启动多个QE,这使得单一物理Segment看起来就像多个虚拟Segment,从而使HAWQ能够更好地利用所有可用资源.
虚拟Segment是内存、CPU等资源的容器,每个虚拟Segment含有为查询启动的一个QE,查询就是在虚拟Segment中被QE所执行.
若没有特殊说明,则本书中所提及的Segment指的是物理Segment.
与Master不同,Segment是无状态的,并且Segment中不存储数据库元数据和本地文件系统中的数据.
Master节点将SQL请求连同相关的元数据信息分发给Segment进行处理.
元数据中包含所请求表的HDFSURL地址,Segment使用该URL访问相应的数据.
11第1章HAWQ概述1.
3.
2内部架构HAWQ可与Hadoop的资源管理框架YARN紧密结合,为查询提供资源管理.
HAWQ在一个资源池中缓存YARN容器,然后利用HAWQ自身的细粒度资源管理,为用户或组在本地管理这些资源.
当执行一个查询时,HAWQ根据查询成本、资源队列定义、数据局部化和当前系统中的资源使用情况,为查询规划资源分配.
之后查询被分发到Segment所在的物理主机,可能是节点子集或整个集群.
每个Segment节点上的资源实施器监控着查询对资源的实时使用情况,避免异常资源占用.
图1-7是HAWQ内部架构图.
图1-7HAWQ内部架构可以看到在Master节点内部有如下几个重要组件:查询解析器(Parser/Analyzer),优化器,资源管理器,资源代理,HDFS元数据缓存,容错服务,查询派遣器,元数据服务.
在Slave节点上安装有一个Segment,查询执行时,针对一条查询,弹性执行引擎会启动多个虚拟Segment同时执行该查询,节点间数据交换通过Interconnect(高速互联网络)进行.
如果一个查询启动了1000个虚拟Segment,就意味着这个查询被均匀地分成了1000份任务,这些任务会并行执行.
所以说虚拟Segment数其实表明了查询执行的并行度.
查询并行度是由弹性执行引擎根据查询大小以及当前资源使用情况动态确定的.
下面解释这些组件的作用以及它们之间的关系.
(1)查询解析器:解析查询,检查语法及语义,最终生成查询树并将其传递给优化器.
(2)优化器:负责接收查询树,生成查询计划.
针对一个查询,可能有很多等价的查询计划,但执行性能差别很大.
优化器的作用是找出最优的查询计划.
12HAWQ数据仓库与数据挖掘实战(3)资源管理器:通过资源代理向全局资源管理器(比如YARN)动态申请资源,并缓存资源,在不需要的时候返回资源.
缓存资源的主要目的是减少HAWQ与全局资源管理器之间的交互代价.
如果每一个查询都去向资源管理器申请资源,那么性能会严重受到影响.
资源管理器同时需要保证查询不使用超过分配给该查询的资源,否则查询之间会相互影响,严重时可能导致系统整体不可用.
(4)HDFS元数据缓存:用于HAWQ确定哪些Segment扫描表的哪些部分.
HAWQ会把计算派遣到数据所在的地方,所以要匹配计算和数据的局部性,这需要HDFS块的位置信息.
位置信息存储在HDFSNameNode上.
每个查询都访问NameNode会造成瓶颈,因此在HAWQMaster节点上建立了HDFS元数据缓存.
(5)容错服务:负责检测集群中哪些节点可用、哪些节点不可用,不可用的节点会被排除出资源池.
(6)查询派遣器:优化器优化完查询后,查询派遣器将执行计划分发到各个Segment节点上执行,并协调查询执行的整个过程.
查询派遣器是整个并行系统的粘合剂.
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
LightNode是一家成立于2002年,总部位于香港的VPS服务商。提供基于KVM虚拟化技术.支持CentOS、Ubuntu或者Windows等操作系统。公司名:厦门靠谱云股份有限公司官方网站:https://www.lightnode.com拥有高质量香港CN2 GIA与东南亚节点(河内、曼谷、迪拜等)。最低月付7.71美金,按时付费,可随时取消。灵活满足开发建站、游戏应用、外贸电商等需求。首...