一、什么是HAWQ?
HAWQ是Hadoop原生SQL查询引擎,针对分析性的应用。它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能,结合了MMP数据库的关键技术优势和Hadoop的可扩展性和便利性。读写依赖于HDFS。
注:Hadoop是一种分布式文件系统,适用于大规模数据集的应用,具有高容错性。简称HDFS。
二、特性
- 丰富且兼容的ANSI SQL标准并且支持SQL 92、99、2003 OLAP以及基于Hadoop的PostgreSQL
- 用户自定义函数支持多种语言:Python、Java、C/C++,R
- 支持多种压缩方法:snappy,gzip,quicklz,RLE等
注:特性太多,很多还不理解,详见别的文章。
三、架构
Hadoop有许多元素组成。
-
NameNode
它负责管理文件系统名称空间和控制外部客户机的访问。①接收客户端的读写请求
②接收DataNode的心跳报告
③分配数据块的存储节点
④存储元数据信息注:系统表(元数据)存在 master本地,用户数据存在HDFS。系统入口,终端用户通过master与 HAWQ交互。负责接收客户端连接并处理 SQL命令
-
DataNode
它响应来自 HDFS 客户机的读写请求,还响应来自 NameNode 的创建、删除和复制块的命令。
①真正处理客户端的读写请求
②真正的数据存储
③向NameNode发送心跳、发送块报告
-
通讯协议
默认使用UDP协议,提供对DUP的额外验证,增加了其可靠性,且传输速度和扩展性远大于TCP。
注:若使用TCP协议,HAWQ限制1000个 segment互联,使用UDP则没有限制。 -
物理段和虚拟段
HAWQ 支持两种存储格式,AO(Append-Only)和Parquet,两种都是
可以拆分的。
注:
Parquet是面向分析型业务的列式存储
AO只能 insert,不能 update、delete的一种表。压缩表、列存储表,必须是 appendonly的表。