HAWQ

HAWQ是一个hadoop原生的sql引擎同时拥有MPP的优点,同时具有很好的扩展性,HAQW将数据保存HDFS


feature


本地或者云端部署
sql兼容SQL-92, SQL-99, SQL-2003
高性能数倍于其他hadoop sql 引擎
极大的并行优化
支持事务
动态数据流引擎
基于虑拟段与本地化的弹性引擎
支持不同类型的分区表
支持压缩:snappy/gzip
支持多种语言的UDF
MADLib库 支持机器学习和数据挖掘
秒级的动态节点扩展
支持yarn的资源调度
方便访问hdfs及外部存储系统如:hbase
支持验证,授权,ssl,kerberos,ACL
hdf/yarn支持c++ 接口
支持第三方工具:Tableau, SAS et al
标准jdbc/odbc


HAWQ从设计上打破了传统MPP依赖于数据库实例的粗粒度执行方式,它是基于segement细粒度的执行,在与yarn的调度结合,可以做到细粒度的并行执行,当节点不可用时可以将立即切换节点执行,这样的引擎与数据存储松耦合带来了调度的细粒度与扩展的灵活性,结合yarn调度的本地化,可以解决传统mpp的并发度问题


架构


HAWQ的传统部署包括:每个slaver上有一个segment,一个hdfs datanode,yarn nodemanager,hdfs/yarn/hawq的master节点在单独的节点


HAWQ依赖于yarn调度,它缓存container从yarn 资源池,然后利用hawq的细粒度资源管理来为用户或组分配资源,执行时,HAWQ根据查询的成本、资源队列定义、数据本地化和当前资源使用情况来分配一组virtual segment。然后分派给相应的物理主机,它可以是整个集群节点也可能是部分。每个节点上的HAWQ监视和控制所使用的资源,以避免资源超额


master


master进程接受客户端连接并处理发出的SQL命令,分析查询、优化查询、分派查询和协调查询执行。


用户通过master与HAWQ进行交互,并可以使用PSQL或JDBC或ODBC连接到数据库。


master包括HAWQ的catalog。catalog包括全局系统表,系统表存储系统本身的元数据,用户数据不保存在master上仅驻留在HDFS上。主机验证客户端连接,处理的SQL命令,分配执行,协调执行并接收返回结果。


segment


segement是并行处理数据的单元。


每个节点上只有一个物理段。每个segment执行多个查询。每个数据片段执行时像多个virtual segment,使得能够更好地利用资源。


virtual segment的行为类似于容器。virtual segment的数量决定了并行度(DOP)。


segment不同于master,因为:


是无状态的。
不存储每个数据库和表元数据。
本地文件系统上不存储数据。
master将SQL请求发送到segment,同时包括数据的元数据信息。元数据包含所需表的HDFS URL。segment使用这个URL访问相应的数据。


interconnect


interconnect指的是segment的进程间通信,以及该通信所依赖的网络基础设施。互连使用标准的以太网交换。


默认情况下,互连使用UDP在网络上发送消息。HAWQ提供UDP验证,可靠性相当于传TCP,性能和可伸缩性超过TCP。如果互连使用TCP,HAQ将具有1000段实例的可扩展性限制。使用UDP将没有这种限制。


resouce manager


HAQ资源管理器利用yarn管理资源请求。资源在HAWQ资源管理器缓冲,以支持低延迟查询。HAWQ资源管理器也可以在独立模式下运行。在这些部署中,HAQW自己管理资源


catalog service


catalog存储所有的元数据,如UDF,UDT的信息、关联信息、安全信息和数据文件的位置


Fault Tolerance Service


依赖于心跳确定segment状态


Dispatcher


dispatcher将查询计划分派给特定的节点并协调查询的执行。调度器和HAWQ资源管理器是动态调度和执行它们所需的资源的


数据分布与存储


默认HAWQ的分布策略是随机,随机分布相对于hash的优点在于扩展方便,没有大数据量的移动成本,但是在TPC-H测试时hash分布优于random分布,需要用户根据业务场景选择


数据本地化


hdfs数据的远程读取有大的网络消耗,执行计划优先选择本地化执行,执行计划考虑如下三点:


本地读取率
数据的连续性
virtaul segment间的数据均衡 


外部数据访问


HAWQ使用PXF访问外部数据源,比如hive,也可以自定义扩展PXF


存储


HAWQ调用的segement数量不是固定的,是基于查询成本的,通常的格式为AO(append only)和parquet,这样方便数据的拆分到小的数据集,同时增加执行的并行度


物理segment与virtaul segement


物理一台节点只有一个segement,virtual segment可以有多个分布在不同节点,virtual segment相当于container,拥有cpu,memory等资源


virtaul segment分配策略


主要考虑因素


可用资源
查询的成本
表的分布:random或hash
是否包括udf或者外部表
是否配置default_hash_table_bucket_number与hawq_rm_nvseg_perquery_limit


资源管理


HAWQ可以单独管理资源也可以整合yarn资源,资源可以定义为层级队列方式,可以动态分配资源基于队列能力和当查询资源占用情况,可以限制virtual segment或者队列的资源利用率


HDFS Catalog Cache


HAWQ缓存hdfs catalog来加速数据的RPC调用


hawq命令支持单独启动停止 segment,并且支持动态扩展集群


高可用


master支持master/standby来避免master单点,但是standby切换需要手动操作命令或者页面操作,需要注意


dual cluster支持双集群来完成数据的同步,备份,容灾恢复


segement是无状态的可以自由转移


网络推荐master间/slaver间配置双千光以太网交换机




HAWQ Extension Framework (PXF)


HAWQ支持外部数据集成,现有支持HDFS,hive,hbase,json









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值