一、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中的结构化数据。

图1:传统的SQL on Hadoop选项

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

图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. 可以完成执行并返回查询结果的查询个数。

图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引擎

HAWQ技术解析(一) —— HAWQ简介相关推荐

  1. HAWQ技术解析(三) —— 基本架构

    HAWQ是一个Hadoop原生的SQL查询引擎,它结合了MPP数据库的关键技术和Hadoop的可扩展性.HAWQ在原生的HDFS上读写数据,MPP架构使HAWQ表现出超越其它SQL on Hadoop ...

  2. HAWQ技术解析(十一) —— 数据管理

    一.基本操作 1. INSERT         在常用的增删改查数据库操作中,HAWQ仅支持INSERT和SELECT两种,不支持UPDATE和DELETE,这主要是因为HDFS是一个只能追加数据而 ...

  3. HAWQ技术解析(十七) —— 最佳实践

    一.HAWQ参数配置最佳实践 (原文地址: http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/bestpractic ...

  4. HAWQ技术解析(十六) —— 运维监控

    与任何IT系统一样,为了保证HAWQ集群的高可用和高性能,需要进行一系列监控与维护活动.本篇讨论HAWQ推荐的运维与监控活动. 一.推荐的监控与维护任务 表1至表5是HAWQ向系统管理员推荐定期执行的 ...

  5. HAWQ技术解析(五) —— 连接管理

    服务器启动后,还要经过一系列配置,才能被客户端程序所连接.本篇说明如何配置客户端身份认证,HAWQ的权限管理机制,HAWQ最常用的命令行客户端工具psql及与mysql命令行常用命令类比,最后还将列举 ...

  6. HAWQ技术解析(四) —— 启动停止

    前面已经完成了HAWQ的安装部署,也了解了HAWQ的系统架构与主要组件,下面开始使用它.HAWQ作为Hadoop上的一个服务提供给用户,与其它所有服务一样,最基本的操作就是启动.停止.重启服务.要完成 ...

  7. HAWQ技术解析(十) —— 过程语言

    HAWQ支持用户自定义函数(user-defined functions,UDF),还支持给HAWQ内部的函数起别名.编写UDF的语言可以是SQL.C.Java.Perl.Python.R和pgSQL ...

  8. HAWQ技术解析(十八) —— 问题排查

    (原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/troubleshooting/Troubleshoo ...

  9. Microbiome:利用Nanopore高通量测序技术解析污水处理体系可移动抗性基因组(一作解读)

    文章目录 Microbiome:利用Nanopore高通量测序技术解析污水处理体系可移动抗性基因组 背景解读 结果分析 一.携带抗性基因的质粒和整合性结合元件在污水处理体系抗性组中占主导地位 二.快速 ...

最新文章

  1. UICollectionView实现的图片的多选效果(本人已封装好,简单操作)
  2. 一个阿里云 MYSQL 服务 RDS 下的查询优化
  3. quartz 每月一次_Quartz Cron表达式 每周、每月执行一次
  4. Java HashMap的实现原理详解
  5. java list 取前3个_用java 截取字符串,每三个一组
  6. mysql then_mysql语法之case when then与列转行
  7. 12 mysql性能抖动
  8. 安装增强功能,弹出“未能加载虚拟光盘 ...\VBoxGuestAdditions.iso 到虚拟电脑 CentOS.“
  9. android:digits 代码设置,EditText中android:digits失效问题
  10. JavaScript表单验证
  11. 服务器vga连接笔记本显示器,为什么用vga线链接笔记本和显示器,显示器的画质根本没法直视...
  12. matlab生成word文档
  13. 80后的青春里,总有散不去的周杰伦
  14. 魅蓝metal刷android 6,魅蓝metal刷机包 Flyme 6.1.0.0Y稳定版 对系统稳定性和功耗表现进行了特定优化...
  15. 新浪小编为你介绍留声机的古与今
  16. 基于JavaEE的游泳馆管理系统_JSP网站设计_SQLServer数据库设计
  17. ev6 ev8 ev4a加密视频破解翻录提取教程
  18. DOS下显示JPG/JPEG图像文件
  19. linux不支持modprobe命令,Linux中modprobe命令起什么作用呢?
  20. rk3399平台电量计cw2015驱动分析

热门文章

  1. 临摹图标都有哪些技巧,五个临摹图标案例告诉你
  2. 〖Python零基础入门篇㊸〗- 异常处理的避坑指南
  3. 看了做人收获感悟笔记
  4. 00942 ora 表存在_ORA-00942:写入数据库中的表时,表或视图不存在错误
  5. linux top根据cpu/内存排序
  6. 华为Vs爱立信:非卫翰思无能 而是任正非太厉害
  7. java计算机毕业设计springboot+vue游戏道具管理系统
  8. FPGA工程师版 | 新春快乐,牛年大吉!
  9. ARM搭建MC服务器教程,适用于树莓派
  10. 聚焦家服行业热点 斑马发布会引燃互联网+家政热潮