vlambda博客
学习文章列表

Impala的基础架构温习

之前学习过Impala的系统架构知识点,今天有同事问到了,便重温了下之前学习的内容。
先简单介绍下Impala吧,Impala是Cloudera公司发布的实时查询开源项目,是一个分布式,大规模并行处理(MPP)数据库引擎。具有以下优点:
1).比Hive SQL的查询速度快3~90倍。
2).能查询存储在hdfs,hbase中的PB级数据。
Impala在生产环境中使用时通常包含HAproxy,Impala Catalog,Impala Statestore,impala Daemon四个核心组件。
大致架构图如下:

按照功能划分,这四个组件可分为三类,其中,HAproxy用于实现负载均衡,catalog与statestore是管理节点,impald是计算节点。下面展开具体介绍。
HAproxy:HAproxy是一个免费,开源的负载均衡服务器。通过代理连接impala有以下好处:
1).应用程序只需连接负载均衡服务器的端口即可,不需要关注底层具体的impalad进程节点信息。
2).避免单点失效问题,当单节点出现问题时,应用程序仍可以通过代理服务器转发请求。
3).实现负载均衡,Impala中,提交查询的节点被称为协调者节点,协调者节点一般与其他节点相比会消耗更多的资源,代理服务器可以通过算法,例如round-robin算法,将查询请求发送到不同节点,以防止每次连接都使用同一个节点作为协调者,造成单点资源过度使用。

Impala Daemon:Impala Daemon是impala集群每个节点的守护进程,进程名称为impalad。负责读写数据文件,在Impala集群中,可向任何一个节点的impalad进程提交查询,可通过impala-shell,Hue,JDBC等方式接受请求进行查询操作,此时,提交查询的节点被称为协调者节点,与其他节点并行计算,其他节点将自己的查询结果返回给中心协调者节点,协调者最终汇总后将运算结果返回。
Impala Catalog:Catalog是管理节点,主要功能是推送元数据变化到impalad节点,当Impala集群中某个impalad节点执行的SQL语句导致元数据发生变化后,catalog变化将这些变化推送到其他impalad节点上,使其信息同步。一个impala集群只需要一个catalog节点。
Impala Statestore:statestore也是管理节点,更准确的说,是一个impalad服务健康检查工具,当由于硬件,网络,软件或其他问题导致某个或几个impalad节点不可用时,statestore将会将这些信息传达到剩下的impalad节点上,当有新的查询请求过来时,impalad进程节点将不会把查询请求发送到不可用的节点上。一个Impala集群也只有一个statestore节点,当statestore服务不可用时,集群仍然可以正常对外提供服务,只是性能方面会比之前差,当statestore恢复后,会重新与impalad节点通信,实现impalad服务健康监控。一般statestore与catalog服务处于同一节点。
上面差不多就是Impala的一个体系结构了,也该睡觉了,晚安。