作者:常雷 博士,Pivotal中国研发中心研发总监,HAWQ并行Hadoop SQL引擎创始人,Pivotal HAWQ团队负责人,曾任EMC高级研究员。专注于大数据与云计算领域,在国内外顶级数据管理期刊和会议发表数篇论文,并拥有多项美国专利。
分享主要分为以下五个部分:
- HAWQ基本介绍;
- HAWQ架构以及各重要组件的基本原理;
- HAWQ的中短期规划;
- 如何贡献到HAWQ和成为Apache Committer;
- Q & A。
一、HAWQ基本介绍
HAWQ是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用。和其他关系型数据库类似,接受SQL,返回结果集。但它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能。主要如下:
- 对标准的完善支持:ANSI SQL标准,OLAP扩展,标准JDBC/ODBC支持,比其他Hadoop SQL引擎都要完善。
- 具有MPP(大规模并行处理系统)的性能,比其他Hadoop里面的SQL引擎快数倍。
- 具有非常成熟的并行优化器。优化器是并行SQL引擎的重要组成部分,对性能影响很多,尤其是对复杂查询。
- 支持ACID事务特性:这是很多现有基于Hadoop的SQL引擎做不到的,对保证数据一致性很重要。
- 动态数据流引擎:基于UDP的高速互联网络。
- 弹性执行引擎:可以根据查询大小来决定执行查询使用的节点及Segment个数。
- 支持多种分区方法及多级分区:比如List分区和Range分区。分区表对性能有很大帮助,比如你只想访问最近一个月的数据,查询只需要扫描最近一个月数据所在分区。
- 支持多种压缩方法:snappy,gzip,quicklz,RLE等。
- 多种UDF(用户自定义函数)语言支持:java, python, c/c++, perl, R等。
- 动态扩容:动态按需扩容,按照存储大小或者计算需求,秒级添加节点。
- 多级资源或负载管理:和外部资源管理器YARN集成;可以管理CPU,Memory资源等;支持多级资源队列;方便的DDL管理接口。
- 支持访问任何HDFS及其他系统的数据:各种HDFS格式(文本,SequenceFile,Avro,Parquet等等)以及其他外部系统(HBase等),并且用户自己可以开发插件来访问新的数据源。
- 原生的机器学习数据挖掘库MADLib支持:易于使用及高性能。
- 与Hadoop系统无缝集成:存储、资源、安装部署(Ambari)、数据格式、访问等。
- 完善的安全及权限管理:kerberos;数据库,表等各个级别的授权管理。
- 支持多种第三方工具:比如Tableau,SAS,较新的Apache Zeppelin等。
- 支持对HDFS和YARN的快速访问库:libhdfs3和libyarn(其他项目也可以使用)。
- 支持在本地、虚拟化环境或者在云端部署。
下面我来谈一下HAWQ是原生Hadoop SQL引擎中“原生”的意思,“原生”主要体现在如下几个方面:
- 数据都存储在HDFS上,不需要使用connector模式。
- 高可扩展性:和其他Hadoop组件一样,高可扩展。并且具有高性能。
- 原生的代码存取:和其他Hadoop项目一样。HAWQ是Apache项目。用户可以自由的下载,使用和做贡献。区别与其他的伪开源软件。
- 透明性:用Apache的方式开发软件。所有功能的开发及讨论都是公开的。用户可以自由参与。
- 原生的管理:可以通过Ambari部署、资源可以从YARN分配,与其它Hadoop组件可以运行在同一个集群。
HAWQ提供的主要好处:
- HAWQ与同类开源和闭源产品比较,如图1:
(图1)
- HAWQ与同类开源和闭源产品比较,如图2:
(图2)
HAWQ的历史和现状:
- 想法和原型系统 (2011):GOH阶段(Greenplum Database On HDFS)。
- HAWQ 1.0 Alpha (2012): 多个国外大型客户试用,当时客户性能测试是Hive的数百倍。促进了HAWQ 1.0作为正式产品发布。
- HAWQ 1.0 GA (2013年初): 改变了传统MPP数据库架构,包括事务,容错,元数据管等。
- HAWQ 1.X版本 (2014-2015 Q2):增加了一些企业级需要的功能,比如Parquet存储,新的优化器,Kerberos,Ambari安装部署。客户覆盖全球。
- HAWQ 2.0 Alpha发布并成为Apache孵化器项目:针对云环境的系统架构重新设计,数十个高级功能,包括弹性执行引擎,高级资源管理,YARN集成,秒级扩容等等。现在大家在Apache开源的是最新的2.0 Alpha版本。未来的开发都在Apache进行。