实时查询引擎 - 构建于HDFS之上的Greenplum: HAWQ

HAWQ是基于Greenplum改造的,将存储从本地文件系统变为HDFS,支持大规模数据的OLAP查询。它拥有完善的SQL支持、并行优化器和ACID事务特性。结构上采用Master-Slave模式,包括HAWQ Master、Segment等组件。安装过程与Greenplum相似,涉及HDFS、YARN的配置。HAWQ可查询HIVE数据,但需通过PXF插件。尽管功能丰富,但由于独立性,无法实现与其他Hadoop组件的数据共享。
摘要由CSDN通过智能技术生成
1. HAWQ 是什么

  如果你知道Greenplum是什么,那么你就能很简单的明白HAWQ是什么。Greenplum是一个关系型的分布式MPP数据库,同样运行于X86架构的基础之上,具有查询、加载效率高,支持TB/PB级大数据量的OLAP应用, Greenplum的所有数据都存储于系统本地文件系统中。而HAWQ的最大改变就是将本地文件系统存储更换为了HDFS,成功的搭上了大数据库的班车。不过HAWQ相较于其它的SQL on Hadoop组件来说,也是具有很多优势的,比如:

  • 对SQL的完善支持,以及语法上的OLAP扩展支持
  • 具有比较成熟的SQL并行优化器,而这正是其它SQL on Hadoop组件比较欠缺的。
  • 支持ACID事务特性,这个在其它SQL on Hadoop组件也是比较欠缺的。
  • 支持多语言的UDF支持:Python, Perl, Java, C/C++, R
  • 等等,反正比较牛B,原Greenplum上支持的功能在HAWQ基本都能找到。
2. HAWQ 结构

  HAWQ在结构仍然是Master-Slave的主从模式,典型的部署方式仍然是在Master服务器上部署:HAWQ Master, HDFS Master, YARN ResouceManager, 在每一个SLAVE机器上部署: HAWQ segment, DataNode, NodeManager。具体结构看图:
HAWQ结构
  下面是一张HAWQ的软件组件图:
HAWO软件组件图
  可以看出HAWQ包含了好几个重要的组件,分别是:
1. HAWQ Master
  HAWQ Master是整个系统的接口,它负责接收客户端查询请求,解析SQL,优化查询,分发和协调查询的执行。当然作为老大,任务肯定不是这么简单的,它还得负责global system catalog的管理工作。
2. HAWQ Segment
  Segments是并行处理数据的单元。每一个Slave机器上部署的HAWQ程序叫作物理Segment,而且第一台Slave上只能部署一个物理Segment。一个物理Segment上可以运行多个虚拟Segment(一个查询解析后的并行分片就是虚拟Segment).虚拟Segment的数量决定了一个查询的并行度。
3. HAWQ Interconnect
  Segment之间的高速通信网络,默认采用UDP协议,并且HAWQ软件提供了针对UDP额外的数据包验证。使其可靠性接近于TCP,但性能和可扩展性又比TCP好。HAWQ也可以使用TCP进行通信,但有最大1000个Segment的限制。而使用UDP则没有该限制。
4. HAWQ Resource Manager
  HAWQ资源管理用于从YARN获取资源并响应资源请求。同时HAWQ会缓存资源用于低延迟的查询请求。除了使用YARN来管理资源外,HAWQ还可以使用自带的资源管理器,而不需要YARN.
5. HAWQ Catalog Service
  元数据服务存在于HAWQ Master中。作用肯定就是用于存储metadata.比如UDF,表信息等。以及提供元数据的查询服务。
6. HAWQ Fault Tolerance Service
  容错服务自然就是针对各个Segment节点的状态监控和失败处理等工作。
7. HAWQ Dispatcher
  HAWQ分发器是则是分发查询到指定的Segment上和coordinates上进行执行。

3. HAWQ 安装

  如果你安装过Greenplum,那么你会发现HAWQ的安装过程与Greenplum是极期相似,必竟它们两可以说是不同存储的版本。而整个安装过程相对其它实时组件来说,还是比较繁琐的。同时也可以看出来HAWQ是基于HDFS的独立数据库。而不像其它实时查询组件除了HDFS,可能还需要依赖于其它Hadoop组件。
  本文的测试环境为基于CDH 5.5的Hadoop集群环境的安装和测试。HAWQ的版本为:2.0.0, 另外HAWQ还可以使用Ambari图形界面安装。发竟安装过程请看:

 1. 设置系统参数,更改文件/etc/sysctl.conf,增加内容:

kernel.shmmax = 1000000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 200000
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1281 65535
net.core.netdev_max_backlog = 200000
vm.overcommit_memory = 50
fs.nr_open = 3000000
kernel.threads-max = 798720
kernel.pid_max = 798720
# increase network
net.core.rmem_max=2097152
net.core.wmem_max=2097152

   然后使用命令sysctl -p生效
 2. 更改文件/etc/security/limits.conf,增加内容:

* soft nofile 2900000
* hard nofile 2900000
* soft nproc 131072
* hard nproc 131072

 3. 安装epel-release包。该包在 http://fedoraproject.org/wiki/EPEL 官网下载后,安装到每一台集群节点上:

rpm -ivh epel
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值