Apache HAWQ 大数据的查询分析引擎

定义

Apache HAWQ是一款基于Apache Hadoop的原生的企业级大规模并行分析数据库。它有着MPP数据库分析的性能,支持丰富合规的ANSI SQL,能够被hadoop生态圈集成和管理,灵活可扩展的数据格式的支持。它是Pivotal的SQL on Hadoop方案,基于10多年来产品开发的成果价值,即投资研发Greenplum Database——Pivotal的旗舰分析数据仓库。Pivotal正是利用这一代码基础和深度数据管理专业知识来构建了业内最好的SQL on Hadoop企业引擎。然后,我们使用业内唯一一款基于代价的查询优化框架来增强其性能,该框架专为HDFS量身打造。

发展

1. 想法和原型系统(2011):GOH阶段(Greenplum Database On HDFS)

2. HAWQ 1.0 Alpha(2012):多个国外大型客户试用,当时客户性能测试是Hive的数百倍。促进了HAWQ 1.0作为正式产品发布。

3. HAWQ 1.0 GA(2013年初):改变了传统MPP数据库架构,包括事务,容错,元数据管等。

4. HAWQ 1.X版本(2014-2015 Q2):增加了一些企业级需要的功能,比如Parquet存储,新的优化器,Kerberos,Ambari安装部署。客户覆盖全球

5. HAWQ 2.0 Alpha发布并成为Apache孵化器项目:针对云环境的系统架构重新设计,数十个高级功能,包括弹性执行引擎,高级资源管理,YARN集成,秒级扩容等等。现在大家在Apache开源的是最新的2.0 Alpha版本。未来的开发都在Apache进行。

特性

Apache HAWQ 大数据的查询分析引擎

1. 丰富且完全兼容的SQL标准 HAWQ是100%符合ANSI SQL规范并且支持SQL 92、99、2003 OLAP以及基于Hadoop的PostgreSQL。它包含关联子查询、窗口函数、汇总与数据库、广泛的标量函数与聚合函数的功能。用户可通过ODBC和JDBC连接HAWQ。对企业来说,好处是有一个庞大的商业智能、数据分析和数据可视化工具生态系统,由于该系统完全符合SQL支持规范,因此打开后立即可与HAWQ配合使用。另外,越过HAWQ编写的分析应用程序可以轻松移植到其它符合 SQL规范的数据引擎上,反之亦然。这可以防止供应商锁定企业并在控制业务风险的同时促进创新。2. TPC-DS合规规范 TPC-DS针对具有各种操作要求和复杂性的查询定义了99个模板(例如,点对点、报告、迭代、OLAP、数据挖掘等)。成熟的基于Hadoop的 PostgreSQL系统需要支持和正确执行多数此类查询,以解决各种不同分析工作负载和使用案例中的问题。基准测试是通过TPC-DS中的99个模板生成的111个查询来执行的。依据符合两个要求受支持的查询个数,以下条形图显示了一些基于SQL on Hadoop常见系统的合规等级:1. 每个系统可以优化的查询个数(如,返回查询计划)以及 2. 可以完成执行并返回查询结果的查询个数。

Apache HAWQ 大数据的查询分析引擎

图3:从TPC-DS套件返回的已完成查询个数。

HAWQ的扩展性的SQL支持能力是基于数据仓库的代码库,HAWQ成功完成了全部111个查询。这些结果的详细信息公布在关于大数据模块化查询优化器架构的ACM Sigmod数据管理国际会议的文件中。3. 可实现灵活高效的连接 HAWQ吸收了最先进的基于代价的SQL查询优化器,在SQL on Hadoop领域是行业先锋。该查询优化器以针对大数据模块化查询优化器架构中的研究结果为基础而设计。 HAWQ能够制定执行计划,可优化使用Hadoop 集群的资源,而不计查询的复杂程度或数据的大小。还可以针对特定环境配置优化器内的成本函数,如:版本、硬件、CPU、IOPS 等。 HAWQ已经过验证,能够快速为涉及超过50个关联表的高要求查询找到理想查询计划,从而成为业内最佳的SQL on Hadoop数据发现与查询引擎。这就使企业能够使用HAWQ以显著降低的成本来降低用于大量数据分析的传统企业数据仓库工作负载要求。4. 利用线性可扩展性,加速Hadoop查询 HAWQ为PB级SQL on Hadoop操作专门设计。数据直接存储在HDFS上,并且SQL查询优化器中已经为基于HDFS的文件系统性能特征进行过细致的优化。 SQL on Hadoop的主要设计目标是在Hadoop上执行SQL连接时最大程度地降低数据传输的开销。HAWQ采用Dynamic pipelining来解决这一关键要求,使基于HDFS的数据适用于交互式查询。Dynamic pipelining是一种并行数据流框架,结合了以下独特的技术:

· 适应性高速UDP互联技术。

· 操作运行时执行环境,是所有SQL查询的基础,并针对大数据工作负载进行了调整。

· 运行时资源管理层,它确保查询的完整性,即使在重度负载集群里出现其它要求极高的查询。

· 无缝数据分配机制,它将经常用于特定查询的部分数据集集中起来。

大数据模块化查询优化器架构中突出的性能分析显示,对于基于Hadoop的分析与数据仓储工作负载,HAWQ要比现有Hadoop查询引擎快一或两个数量级。这些性能改进主要归功于Dynamic pipelining和HAWQ内基于成本的查询优化器的强大功能。这使HAWQ能够帮助企业以显著降低的成本摆脱企业数据仓库工作负载。5. 一体化深度分析与机器学习功能 除表连接与聚合外,数据分析通常还需要使用统计学、数学和机器学习算法,如拟合和主成分分析等,这些代码需要进行重构,以便在并行环境中高效运行。这正在成为SQL on Hadoop方案的基本要求。 HAWQ利用可扩展数据库内分析的开源库MADLib来提供这些功能,从而通过用户定义的函数扩展SQL on Hadoop能力。MADLib还支持在 PL/R、PL/Python和PL/Java环境中实施用户定义函数(UDF)来指定自定义机器学习能力。对于有此类需求的用户场景来说,这将使其能在通常的分析型工作负载中嵌入高级机器学习的分析能力。6. 数据联合能力 SQL on Hadoop可以联合外部数据源数据,提供更多灵活性,能够将各种来源的数据结合起来进行分析。数据通常是跨其它分析/企业数据仓库、HDFS、Hbase以及Hive实例进行联合的,且需要利用基于SQL on Hadoop实施所固有的并行性。HAWQ通过名为Pivotal eXtension Framework(PXF)的模块提供数据联合功能。除了常见的数据联合功能外,PXF还利用SQL on Hadoop提供其它具有行业特色的能力:

· 任意大数据集低延迟:PXF使用智能抓取,其过滤器下推到Hive和Hbase。查询工作负载被下推到联合数据堆栈,从而尽可能减少数据移动和改善延迟性能,尤其是对于交互式查询而言。

· 可扩展且可自定义:PXF提供框架API以便客户为其自有数据堆栈开发新的连接器,进而增强数据引擎的松散耦合和避免实施端对端分析使用案例时常常需要执行的数据重构操作。

· 高效:PXF利用ANALYZE可收集外部数据的统计资料。这样可通过基于代价的优化器优化联合数据源统计信息,帮助联合环境构建更高效的查询。

7. 高可用性和容错能力 HAWQ支持各种事务,是SQL on Hadoop方案的首选。事务允许用户隔离Hadoop上的并行活动并在出错时进行回滚。HAWQ的容错性、可靠性和高可用性三个特点能容忍磁盘级与节点级故障。这些能力可确保业务的连续性,并且实现了将更多关键业务分析迁移到到HAWQ上运行。8. 原生Hadoop文件格式支持 HAWQ在Hadoop中支持AVRO、Parquet和本地HDFS文件格式。这在最大程度上减少了数据摄取期间对ETL的需求,并且利用HAWQ实现了 schema-on-read(读时模式)类处理。对ETL和数据移动需求的减少直接有助于降低分析解决方案的拥有成本。

整体架构

下图是一张hawq的部署架构图。

Apache HAWQ 大数据的查询分析引擎

在传统的HAWQ的部署架构中,包含HAWQ的Master节点,HDFS的NameNode节点,YARN的ResourceManager,以及一个从属节点(SLAVE NODE)。每一个从属节点安装了一个物理的HAWQ的segment,HDFS的dataNode和NodeManager。HAWQ和hadoop资源管理框架YARN是紧密集成的。HAWQ会在YARN上申请一批资源缓存在自己的资源池里面,来实现对这些资源更加精细化管理。

HAWQ会根据查询数据所在位置以及节点负载等情况来分配初始化segment。

这些segment会运行在部分或者全部的节点上。为了防止节点资源过度使用,HAWQ会观察和实时监控一个查询使用的资源情况。

下面是HAWQ的内部一些模块划分:

Apache HAWQ 大数据的查询分析引擎

HAWQ Master

HAWQ Master 是系统请求的入口,接受验证客户端的链接以及处理SQL请求。它解析,优化查询,并将查询分发到不同的segment上,协调整个查询过程。

终端用户可以使用PSQL或者程序接口(jdbc,odbc)的方式连接数据库。

global system catalog(系统目录)是指HAWQ的系统元数据表。Master没有存储用户的任何数据,用户的是在HDFS上的。

HAWQ Segment

在HAWQ中,segement是数据处理单元。在每一个从节点上只会存在一个物理的segement节点。每一个segement可以启动多个Query Executor(QE),每一个Query Executor处理一个分片的数据。这就像每一个物理的segement就像是多个虚拟的segement,来最大化利用系统的资源。每一个虚拟的segement就像是一个QE的容器,用来处理一个数据分片。虚拟节点的个数由查询的并行度决定的。

Segement和master节点是有区别的:

segement是无状态的

不会存储表和数据库元数据信息

不会在本地存储数据

Master会将SQL信息以及元数据信息一起请求发送到segement处理。元数据信息里面包含了表的HDFS的URL。Segement通过URL访问HDFS数据。

HAWQ Resource Manager

HAWQ resource manager从YARN中获取资源,并且会将资源缓存到自己的资源池,以便于低延迟。

HAWQ Catalog Service

HAWQ catalog service 存储了所有的元数据信息,例如,UDF/UDT,安全信息,文件位置信息等等。

HAWQ Fault Tolerance Service

HAWQ fault tolerance service (FTS) 监控segment的查询失败以及接收来自segment的心跳。

安装

HAWQ安装有以下选择:

1. HAWQ 商业版本

2. HAWQ sandbox 安装

3. HAWQ docker 安装

4. HAWQ源代码安装

HAWQ sandbox 安装

Hortonworks Sandbox

HAWQ docker 安装

https://github.com/apache/incubator-hawq/tree/master/contrib/hawq-docker

内容来源:今日头条
角标
继续阅读(剩余50%
我要举报