1. IMPALA组件概述
Impala组件包含3
个子模块(Impala Catalog Server
、Impala StateStore
、Impala Daemon
),如图所示:
其中Impala Catalog Server
与Impala StateStore
是无数据
、无状态
的模块,没有高可用的需求更不需要做负载均衡;Impala Daemon
模块的每一个节点都可以提供jdbc和thrift服务(作为coordinator需要消耗CPU与内存等资源),为保证每个节点的资源消耗相差不大需要做资源的负载均衡。
Impala Catalog Server
,数据存储于 Oracle / MySQL 等第三方数据库。Impala StateStore
,是Impalad守护进程,数据全部缓存在内存
中。若Impala集群中某个节点因为各种原因离线,Impala StateStore
会及时通知Impala集群其他节点,避免之后的查询会落到这些离线节点。Impala Daemon
,接收client、jdbc 或者odbc的请求,执行并返回给impalad子节点上的守护进程,负责向statestore 保持通信,汇报工作。
请注意如下 4
点内容:
-
Impala Catalog Server
作为Impala组件的元数据网关,从Hive Metastore等外部catalog中获取元数据信息,放到impala自己的catalog结构中。当impalad执行命令时,通过catalogd由其代为执行,该更新则由statestored广播。 -
Impala StateStore
并不是必须的,它只是在Impala集群中有节点出错时才起作用,而如果Impala StateStore
未启动或者不能提供服务,并不影响Impala集群中其他节点正常工作,而Impala集群顶多是变得不可靠。当StateStore恢复在线,它将重建与其他节点的通讯,并恢复它的监控功能。 -
为提升impala组件的性能,将
Impala Catalog Server
与Impala StateStore
安装到Hive Metastore
所在的同一个节点中,且该节点尽可能避免安装Impala Daemon
模块 -
负载均衡分为四层负载均衡和七层负载均衡,前者是针对运输层的,后者是针对应用层的。区别在于前者不需要了解应用协议,只需要对传输层收到的IP数据包进行转发,而后者需要了解应用协议的。对于
Impala Daemon
的负债均衡,官方推荐使用四层负载均衡做数据包转发即可:官方说明