HAWQ技术解析(一) —— HAWQ简介

一、SQL on Hadoop
        过去五年里,许多企业已慢慢开始接受Hadoop生态系统,将它用作其大数据分析堆栈的核心组件。尽管Hadoop生态系统的MapReduce组件是一个强大的典范,但随着时间的推移,MapReduce自身并不是连接存储在Hadoop生态系统中的数据的最简单途径,企业需要一种更简单的方式来连接要查询、分析、甚至要执行深度数据分析的数据,以便发掘存储在Hadoop中的所有数据的真正价值。SQL在帮助各类用户发掘数据的商业价值领域具有很长历史。
        Hadoop上的SQL支持一开始是Apache Hive,一种类似于SQL的查询引擎,它将有限的SQL方言编译到MapReduce中。Hive对MapReduce的完全依赖会导致查询的很大延迟,其主要适用场景是批处理模式。另外,尽管Hive对于SQL的支持是好的开端,但对SQL的有限支持意味着精通SQL的用户忙于企业级使用案例时,将遇到严重的限制。它还暗示着庞大的基于标准SQL的工具生态系统无法利用Hive。值得庆幸的是,在为SQL on Hadoop提供更好的解决方案方面已取得长足进展。

1. 对一流的SQL on Hadoop方案应有什么期待
        下表显示了一流的SQL on Hadoop所需要的功能以及企业如何可以将这些功能转变为商业利润。从传统上意义上说,这些功能中的大部分在分析数据仓库都能找到。

功能

业务好处

丰富且合规的SQL支持

功能强大的可移植SQL应用程序。能够利用基于SQL的数据分析和数据可视化工具的大型生态系统。

符合TPC-DS规格

TPC-DS帮助确保所有级别的SQL查询得到处理,从而广泛支持各种使用案例并避免企业级实施期间出现意外。

灵活高效的连接

以显著降低的拥有成本摆脱企业数据仓库工作负载。

线性可扩展性

以显著降低的拥有成本摆脱企业数据仓库工作负载。

一体化深度分析与机器学习功能

以SQL需要的统计学、数学和机器学习算法启用使用案例。

数据联合能力

在实施端对端分析使用案例过程中,利用多种企业和外部数据资产降低数据重构成本。

高可用性和容错功能

确保业务连续性并摆脱更多来自企业数据仓库的关键业务分析。

原生Hadoop文件格式支持

减少的ETL和数据移动直接使分析解决方案的拥有成本更低。

表 1:一流的SQL on Hadoop方案所带来的功能和业务好处

2. 传统的SQL on Hadoop的实现方式
        数据分析供应商和开源社区采取了各种方法实现SQL on Hadoop。有些供应商已投资从头构建分布式SQL on Hadoop引擎。其他供应商则已投资优化Apache Hive来缩小Hive与传统SQL引擎之间的性能落差。开源社区使用Apache Drill来提供延迟时间更短的交互性查询功能。最新的开源产品是SparkSQL,它支持使用SQL查询Spark中的结构化数据。
HAWQ技术解析(一) —— HAWQ简介_第1张图片
图1:传统的SQL on Hadoop选项

3. Pivotal的SQL on Hadoop方案
        Pivotal的SQL on Hadoop方案是基于10多年来产品开发的成果价值,即投资研发Greenplum Database——Pivotal的旗舰分析数据仓库。Pivotal正是利用这一代码基础和深度数据管理专业知识来构建了业内最好的SQL on Hadoop企业引擎。然后,我们使用业内唯一一款基于代价的查询优化框架来增强其性能,该框架专为HDFS量身打造。
HAWQ技术解析(一) —— HAWQ简介_第2张图片
图2:将基于MPP的分析数据仓库用于SQL on Hadoop方案

        该SQL on Hadoop产品称为HAWQ,全称Hadoop With Query(带查询Hadoop)。HAWQ使企业能够获益于经过锤炼的基于MPP的分析功能及其查询性能,同时利用Hadoop堆栈。HAWQ可与其它传统的SQL on Hadoop引擎(如图1所示)共存于一个分析堆栈。

二、HAWQ的历史和现状
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进行。

三、HAWQ基本介绍
        HAWQ是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用。和其他关系型数据库类似,接受SQL,返回结果集。但它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能。让我们考虑一流SQL on Hadoop的各个方面,并将之与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. 可以完成执行并返回查询结果的查询个数。
HAWQ技术解析(一) —— HAWQ简介_第3张图片
图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和数据移动需求的减少直接有助于降低分析解决方案的拥有成本。

9. 通过Apache Ambari进行原生的Hadoop管理
        HAWQ使用Apache Ambari作为管理和配置的基础,合适的Ambari插件可以使得HAWQ像其他的通用Hadoop服务一样被Ambari来管理,所以IT管理团队不再需要两套管理界面,一套管理Hadoop,一套管理HAWQ。这样可以使得企业专注于功能场景最小化支持所需的工作量,例如配置和管理。同时,Ambari是完全的Hadoop开源管理和配置工具,消除了供应商绑定和减低商业风险。

10. Hortonworks Hadoop兼容
        为了更进一步的跟进开放数据联盟ODP的步伐,HAWQ可以与Hortonworks HDP大数据体系无缝兼容,使得企业在已经投资的Hortonworks 大数据平台上感受到业界最先进的SQL on Hadoop方案带来的所有好处,HAWQ也同时支持Pivotal自己的Hadoop发行版Pivotal HD。

11. HAWQ的其它主要特性
(1)弹性执行引擎:可以根据查询大小来决定执行查询使用的节点及Segment个数。
(2)支持多种分区方法及多级分区:比如List分区和Range分区。分区表对性能有很大帮助,比如你只想访问最近一个月的数据,查询只需要扫描最近一个月数据所在分区。
(3)支持多种压缩方法:snappy,gzip,quicklz,RLE等。
(4)动态扩容:动态按需扩容,按照存储大小或者计算需求,秒级添加节点。
(5)多级资源或负载管理:和外部资源管理器YARN集成;可以管理CPU,Memory资源等;支持多级资源队列;方便的DDL管理接口。
(6)完善的安全及权限管理:kerberos;数据库,表等各个级别的授权管理。
(7)支持多种第三方工具:比如Tableau,SAS,较新的Apache Zeppelin等。
(8)支持对HDFS和YARN的快速访问库:libhdfs3和libyarn(其他项目也可以使用)。
(9)支持在本地、虚拟化环境或者在云端部署。

        下面谈一下HAWQ是原生Hadoop SQL引擎中“原生”的意思,“原生”主要体现在如下几个方面:
  1. 数据都存储在HDFS上,不需要使用connector模式。
  2. 高可扩展性:和其他Hadoop组件一样,高可扩展,并且具有高性能。
  3. 原生的代码存取:和其他Hadoop项目一样,HAWQ是Apache项目。用户可以自由的下载,使用和做贡献,区别于其他的伪开源软件。
  4. 透明性:用Apache的方式开发软件,所有功能的开发及讨论都是公开的,用户可以自由参与。
  5. 原生的管理:可以通过Ambari部署、资源可以从YARN分配,与其它Hadoop组件可以运行在同一个集群。
原文:
世界上最先进的企业级SQL on Hadoop方案:Pivotal HDB
解密Apache HAWQ ——功能强大的SQL-on-Hadoop引擎

你可能感兴趣的:(BI)