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

article/2025/9/18 20:33:11
HAWQ是一个Hadoop原生的SQL查询引擎,它结合了MPP数据库的关键技术和Hadoop的可扩展性。HAWQ在原生的HDFS上读写数据,MPP架构使HAWQ表现出超越其它SQL on Hadoop解决方案的查询性能,Hadoop又为HAWQ提供了传统数据库所不具备的线性扩展能力。

一、HAWQ的架构
        在一个典型的HAWQ部署中,每个slave节点上会安装有一个HAWQ物理段,一个HDFS的DataNode和一个NodeManager。而HAWQ、HDFS和YARN的主机则安装在(与slave)分离的节点上。
        下图提供了一个HAWQ典型部署的高级别架构视图。

        HAWQ与Hadoop的资源管理框架YARN紧密结合,为查询提供资源管理。HAWQ在一个资源池中缓存YARN容器,然后利用HAWQ自身的细粒度资源管理,为用户或组在本地管理这些资源。当执行一个查询时,HAWQ根据查询成本、资源队列定义、数据局部化和当前系统中的资源使用情况,为查询分配一组虚拟段。之后查询被分发到相应的物理主机,可能是节点子集或整个集群。每个HAWQ节点上的资源实施器监控着查询对资源的实时使用情况,避免违规的资源使用。
        下图提供了构成HAWQ软件组件的另一个视图。

1. HAWQ主节点
        HAWQ主节点是系统的入口点,有一个接受客户端连接,并处理SQL命令的数据库进程。HAWQ主节点解析查询,优化查询,向段分发查询,并协调查询执行。
        最终用户通过主节点与HAWQ交互。可以使用如psql的客户端程序,或者类似JDBC、ODBC的应用程序接口(APIs)连接到数据库。
        “全局系统目录”是一组系统表的集合,包含HAWQ系统自身的元数据,存储在主节点中。主节点本身不含任何用户数据,数据只存储在HDFS上。主节点对客户端连接请求进行鉴权,处理输入的SQL命令,在段间分发任务,协调每个段返回的结果,向客户端程序输出最终结果。

2. HAWQ段
        在HAWQ中,段是并行数据处理单元。
        每个主机上只有一个物理段,每个段可以为一个查询片段启动多个查询执行器(Query Executors ,QEs)。这使得单一的物理段表现得像多个虚拟段,从而使HAWQ能够更好地利用所有可用资源。

        注意:在本文档中,当我们提到段本身时,指的就是物理段。

        一个虚拟段就像是QE的一个容器。每个虚拟段含有为查询片段启动的一个QE。虚拟段的数量被用于确定一个查询的并行度(degree of parallelism,DOP)。
        段有别于主节点,原因是段:
  • 无状态。
  • 不存储数据库表元数据。
  • 不存储本地文件系统中的数据。
        主节点将SQL请求连同相关的元数据信息分发给段进行处理。元数据中包含所请求表的HDFS url地址,段使用该URL访问相应的数据。

3. HAWQ互联
        “互联”是HAWQ的网络层。当一个用户连接到数据库并发出了一个查询,每个处理查询的段上会创建多个进程。“互联”指的是段之间的进程间通信,以及通信所依赖的底层网络架构。互联使用标准的以太网交换结构。
        缺省情况下,互联使用UDP(User Datagram Protocol)在网络间传输消息。HAWQ软件在UDP的功能之上执行附加的包验证。这就意味着(HAWQ的网络传输)可靠性相当于TCP(Transmission Control Protocol),而在性能和可扩展性上却优于TCP。如果使用TCP互联,HAWQ有一个1000个段实例的扩展上限,而UDP作为当前互联使用的缺省协议,则没有这个限制。

4. HAWQ资源管理器
        HAWQ资源管理器从YARN获取资源,并响应资源请求。资源被HAWQ资源管理器缓存,以支持低延时查询。HAWQ资源管理器也能够以独立模式运行。在这种部署中,HAWQ自己管理资源而不需要YARN。

5. HAWQ目录服务
        HAWQ目录服务存储全部元数据,例如UDF/UDT信息,表信息,安全信息和数据文件位置信息等。

6. HAWQ容错服务
        HAWQ容错服务(FTS)负责接收从segment发来的心跳信息,并负责检测段是否失效。

7. HAWQ分发器
        HAWQ分发器将查询计划分发到选择的段的子集上,并协调查询的执行。分发器和资源管理器是HAWQ的主要组件,分发器负责查询的动态调度。资源管理器负责执行查询资源需求。

        原文:
         http://hdb.docs.pivotal.io/211/hawq/overview/HAWQArchitecture.html

二、表的分布与存储
        除系统表外,HAWQ将其它所有表数据存储到HDFS中。当用户创建了一个表,其元数据存储到master主机上的本地文件系统中,表的数据存储到HDFS中。
        为了简化表数据管理,一个表中的所有数据都保存在一个HDFS目录中。
        对于所有HAWQ表存储格式,AO(Append-Only)和Parquet,数据文件是可拆分的,因此HAWQ可以赋予多个虚拟段并发处理同一个数据文件,这提高了查询执行的并行度。

1. 表分布策略
        HAWQ缺省的表分布策略是随机分布。
        相对于使用表的哈希分布策略,随机分布有一些好处。例如,当集群扩容后,HAWQ可以自动使用更多的资源,而不再需要重新分布数据。对于大表,重新分布数据的代价是很高的。当底层HDFS在执行rebalance操作,或者某些DataNode失效后,随机分布表的数据本地化会更好,而且集群规模越大,这种策略的优势越明显。
        另一方面,对于某些查询,哈希分布的表会比随机分布快。例如,在一些TPC-H查询中,哈希分布表的查询性能更好。你应该依据你的应用场景选择最合适的分布策略。

2. 数据本地化
        数据是跨越HDFS的DataNode分布存储的。由于远程读取会引入网络I/O,HAWQ使用一个数据本地化算法提升本地数据读取比例。当HAWQ给虚拟段分配数据块时,它考虑三个方面的因素:
  • 本地读取比例。
  • 数据文件连续读。
  • 保持虚拟段间的数据平衡。
3. 外部数据访问
        HAWQ可以使用Pivotal eXtension Framework(PXF)访问外部文件。PXF是HAWQ的扩展框架,它允许HAWQ象读写HAWQ表一样来访问外部数据源的数据。PXF中已经内建了多个连接器,用于访问HDFS文件,Hive表和HBase表。并且PXF还与HCatalog集成,直接查询Hive表。
        用户可以使用PXF API开发的Java插件,创建自己定制的PXF连接器,访问其它并行数据存储或处理引擎。

        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/TableDistributionStorage.html

三、运行时弹性查询
        HAWQ使用动态分配虚拟段为执行查询提供资源。
        HAWQ 1.x时,用于执行一个查询的段(计算资源容器)的个数是固定的,无论底层查询是一个需要很多资源的大查询,还是一个需要很少资源的小查询。这种架构虽然简单,但资源使用低效。
        为了解决这个问题,HAWQ现在使用基于虚拟段的运行时弹性查询特性。HAWQ会根据查询的成本,按需分配虚拟段。换言之,对于大查询,HAWQ分配很多虚拟段,而只给小查询分配少数虚拟段。

1. 存储
        在HAWQ里,虚拟段的个数会依据查询的成本而有所不同。为了简化表管理,与一个表相关的所有数据都存储到一个HDFS目录下。
        对于所有HAWQ表存储格式,AO(Append-Only)和Parquet,数据文件是可拆分的,因此HAWQ可以赋予多个虚拟段并发处理同一个数据文件,这提高了查询执行的并行度。

2. 物理段与虚拟段
        在HAWQ里,每个主机只安装一个物理段,但运行查询时可以启动多个虚拟段。HAWQ为查询按需分配多个分布于不同主机上的虚拟段。虚拟段是内存、CPU等资源的容器。查询就是在虚拟段中被查询执行器所执行。

       注意:在本文档中,当我们提到段本身时,指的就是物理段。

3. 虚拟段分配策略
        依据虚拟段分配策略分配不同数量的虚拟段。
        以下因素决定了一个查询所使用的虚拟段个数。
  • 查询运行时的可用资源。
  • 查询成本。
  • 表的分布策略,就是说,是随机分布表还是哈希分布表。
  • 查询是否引入了UDF或外部表。
  • 特定的服务器配置参数,比如针对哈希表查询的“default_hash_table_bucket_number”,以及“hawq_rm_nvseg_perquery_limit”等。
        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/ElasticSegments.html

四、资源管理
        HAWQ提供多种方法管理资源,包含多个用户配置选项,与YARN资源管理器的集成等。HAWQ使用下面的机制进行资源管理:
  • 全局资源管理。你可以将HAWQ与YARN资源管理器集成,在需要时请求或回收资源。如果不与YARN集成,HAWQ可以管理它自己的资源,并排他地使用集群资源。如果你将YARN集成到HAWQ,则HAWQ自动地从YARN获取资源,并通过内部定义的资源队列管理这些获得的资源。当资源不再使用时,被自动返回给YARN。
  • 用户定义资源队列等级。HAWQ管理员或者超级用户设计和定义资源队列,用于为查询组织和分发资源。
  • 查询运行时动态资源分配。HAWQ根据资源队列的定义动态分配资源。HAWQ会基于运行时(或排队中)的查询,以及当前资源队列的容量,自动分发资源。
  • 虚拟段和查询的资源限制。你可以配置HAWQ强制虚拟段和用于查询的资源队列对CPU和内存的使用限制。
        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/ResourceManagement.html

五、HDFS目录缓存
        HDFS目录缓存是HAWQ 主节点用来确定HDFS上表数据分布信息的一种缓存服务。
        HDFS在做RPC处理时会比较慢,尤其是当并发请求数很高时。为了决定哪个段管理哪部分数据,HAWQ需要从HDFS的NameNode获取数据的位置信息。HDFS目录缓存就是用来缓存数据的位置信息,从而加快HDFS的RPC处理。

        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/HDFSCatalogCache.html

六、管理工具
        HAWQ的管理工具都被合并进一个hawq命令。该命令可以初始化、启动和停止每一个单独的段,并且支持集群的动态扩展。

        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/ManagementTools.html

(hawq命令的简要联机帮助如下图所示。)

七、高可用、冗余和容错
        HAWQ通过系统冗余保证其集群的高可用性。HAWQ的部署利用硬件平台的冗余,如用为主节点提供RAID,为段提供JBOD,为互联层提供网络冗余。在软件层面,HAWQ通过主节点镜像和双集群维护提供冗余。另外,HAWQ支持HDFS的NameNode高可用配置。
        为了保持集群的健康,HAWQ使用基于心跳和按需探查协议(on-demand probe protocols)的容错服务(Fault Tolerance Service,FTS)。它可以动态识别新加入的节点,也可以在节点变得不稳定时,将其从集群中删除。

1. 关于高可用
        HAWQ使用多种机制保证高可用性,其中对于HAWQ最重要的机制如下:
  • 主节点镜像。万一主节点失效,集群还有一个备用主节点可用。
  • 双重集群。管理员可以创建一个备用集群,并通过双重ETL或者备份与恢复机制同步主集群的数据。
        除在HAWQ级别管理高可用外,你可以在HDFS中实现NameNode的高可用,从而为HAWQ提供高可用性。

2. 关于段容错
        HAWQ中的段是无状态的,这保证了段能够快速恢复,并且有更好的可用性。当一个段失效时,该段被从资源池中删除,查询不会再被分发到该段。当失效段重新可用时,容错服务验证该节点有效后,将它添加回资源池。

3. 关于互联冗余
        互联指的是段和段之间的进程间通信,以及通信所依赖的网络架构。可以通过在网络中部署双重千兆以太网交换机,并部署与HAWQ主机服务器(主节点和段)冗余的千兆连接。为了在HAWQ中使用多个网卡,需要进行网卡绑定。

        原文:
        http://hdb.docs.pivotal.io/211/hawq/overview/RedundancyFailover.html

http://chatgpt.dhexx.cn/article/UZJ618Bw.shtml

相关文章

HAWQ技术解析(十三) —— 资源管理

一、HAWQ如何管理资源 HAWQ使用多种机制管理CPU、内存、I/O、文件句柄等系统资源,包括全局资源管理、资源队列、强制资源使用限额等。 1. 全局资源管理 Hadoop通常使用YARN全局管理资源。YARN是一个通用的资源管理框架,为MapReduce作业或其…

HAWQ个人学习笔记(一)——HAWQ介绍

一、什么是HAWQ? HAWQ是Hadoop原生SQL查询引擎,针对分析性的应用。它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能,结合了MMP数据库的关键技术优势和Hadoop的可扩展性和便利性。读写依赖于HDFS。 注:Hadoop…

全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例

光纤组网已是当今建筑智能化弱电行业里一种常见的组网方式,组建远距离无线、监控网络时,往往需要使用光纤进行连接通信,使用光纤收发器是经济适用型做法,尤其是在室外的使用。其实光纤收发器不仅可以成对使用,还可以配…

400G光模块的相关知识

现在的高速光模块市场慢慢从100G向400G转移,未来400G必定是主流的高速光模块,目前这个阶段占领主流的还是100G,之前100G的相关知识已经讲述过了,400G与100G的传输速率由各种因素导致,我们讲讲400G与100G的信号传输。 4…

QSFP28-100G-LR4光模块有什么特点及优势?

100G以太网的迅速发展给100G光模块带来了巨大的市场需求,在众多100G光模块中,QSFP28光模块以其较小的尺寸和低功耗的特点成为最受欢迎的光模块。下面易天光通信(ETU-LINK)将从定义,工作原理,应用场景和常见…

DWDM光模块和CWDM光模块的区别

DWDM光模块和CWDM光模块的区别 近年来波分复用(WDM)技术受到网络用户的热烈欢迎,这是一种在单根光纤上复用不同波长激光的多个光载波信号的技术。下文将由亿创飞宇光通信重点介绍CWDM SFP光模块和DWDM SFP光模块。 DWDM光模块是什么?DWDM光模块有哪些主要优势? DWDM光模…

SC接口光模块相关知识

什么是SC接口光模块? SC接口光模块即接口类型为SC的光模块,必须搭配SC接口的跳线才能正常使用。SC光模块的接口的紧固方式是采用插拔销闩式,不须旋转,使用很方便。 SC光模块的分类 SC光模块相比LC光模块和MPO光模块…

全面解析光模块的应用场景

光模块主要应用于数据通信领域,它的功能是实现光电信号的相互转化。因为大数据、区块链、云计算、物联网、人工智能、5G的兴起,使得数据流量迅猛增长,数据中心以及移动通信的光互连成为了光通信行业的研究热点。接下来,易天光通信…

单波100G光模块与4路100G光模块相比,优势有哪些?

目前市场上大多数的100G光模块都是采用4路25Gb/s并行或者波分复用进行传输的,比如100G SR4、100G PSM4、100G LR4、100G CWDM4光模块等,为了降低成本以及更好的传输效率,业界提出了100G single-lambda规范,这个规范是指使用PAM4光…

光模块-寿命分析

光模块结构分类基本指标光模块的使用寿命光模块的三种失效率预计方法基本概念失效率预计 可靠性分析可靠性试验加速寿命试验方法阿伦尼兹(Arrhenius)模型逆幂律模型单应力的艾林(Eyring)模型 光模块加速寿命试验分析方法研究 光模块 光模块是进行光电和电光转换的光电子器件。…

5G通信光模块是什么?5G通信光模块的发展方向如何?

随着移动通信行业的迅猛发展,目前5G已经成为全球关注的超级热门话题,与2G、3G、4G相比,未来光纤通信行业5G地位不容小觑,在5G网络时代,不管什么样的5G承载方案都离不开5G通信光模块,那么5G通信光模块是什么…

100G多模光模块介绍及应用

随着光通信市场对数据传输速率的要求越来越高,更高速率的光模块也随之诞生。与10G、40G的波分传输系统相比,100G光传输实现了偏振复用相位调制技术、数字相干接收技术第三代超强纠错编码技术等一系列重大改革,满足了用户与时俱进的需求。本期…

linux 光功率 模块_【光电通信】10G 光模块消光比补偿方法

今日光电 有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。欢迎来到今日光电! ----与智者为伍 为创新赋能---- 0. 引言 随着光纤到户、4G 业务的高速发展,光通信行业对高速光模块的需求也越来越大,这也对光模块厂商产能提出了新的挑…

精品文章!精讲光模块的方方面面,收藏!

光纤: 光纤作为光通信的传播媒介,分为多模光纤和单模光纤。 多模光纤(橘红色)的纤芯直径为 50um~62.5um,包层外直径 125um,适用于短距离传输( 2KM-5KM);单模光纤(黄色&…

XFP与SFP+光模块的区别是什么?能相互连接吗?

在光纤网络中,10G光模块凭借着较低的成本和功耗被广泛应用于学校、公司等应用环境中。XFP和SFP是10G光模块常见的两种封装类型,下面易天光通信(ETU-LINK)就为大家介绍下XFP与SFP光模块的区别是什么?以及它们两者能相互…

400G光模块知识大全

400G光模块是目前高速传输领域中的一种先进产品,被广泛应用于高性能数据中心、通信网络、大规模计算、云计算等领域。本文将从400G光模块的定义、技术、产品型号、应用场景以及未来发展方向进行详细介绍。 一、什么是400G光模块? 400G光模块是指传输速率…

光模块:定义与组成

光模块是光纤通信系统中的核心器件,是实现光信号传输过程中光电转换和电光转换功能的光电子器件。按照分层划分的话,它属于OSI模型的物理层。 那么光模块主要应用在哪里呢?基本上所有的网络传输环节都会与光模块打交道,其应用场景…

光模块选购注意事项大全

光模块是光纤通信的核心配件,现今光模块市场品种繁多,我们在选购光模块的时候需要考虑哪些因素呢?如何才能采购到合适的光模块呢?选购光模块的时候需要考虑的因素: 1、封装速率 光模块的封装有 SFP:用于155M、1.25G、…

光模块基础知识【快速入门】02

目录 第一节 光模块简介 第二节 光模块分类 1、按网络分类 2、按封装分类 3、按应用分类 4、按使用方式分类 5、按激光器分类 6、按波长分类 第三节 PON光模块 1、PON光模块分类 (1)SFF/SFP/SFP和XFP光模块 (2)OLT光模…

400G光模块的发展及现状|封装类型|易天光通信|ETU-LINK

本篇文章易天光通信(ETU-LINK)将带大家聊一聊400G光模块,根据知名光通信市场调研机构预测,2018-2020年全球400G光模块市场规模将分别达到0.56亿美元,2.8亿美元和7.2亿美元,随着网络流量呈现爆发式增长&…