Impala 三大组件:
1. Impala Daemon:
功能:
负责读写数据文件,接受来自 Impala-shell, ODBC,Hue 和 JDBC 的查询请求,然后与集群中的其他节点分布式并行工作,将本节点的查询结果返回给中心协调者节点。
查询流程:
我们向一个 Impalad 发送一个 SQL,这个Impalad 就要负责解析sql, 生成查询计划树,将执行计划分发给本节点的 协调者 Coordinator, 协调者执行计划再分发给其他节点的 执行器 Executor,各个 节点的Executor 将各自的 查询结果返回给 中心协调者节点(这个中心协调者节点就是接受sql 查询的节点),协调者 最后将整合后的查询结果返回给客户端。
2. Impala Statestore:
功能:
StateStore 搜集集群中各个 impalad 进程节点的健康状况,然后不断的将健康状况结果发送给所有的 impalad进程节点。
当集群有impalad 故障时,statestore 会及时将信息发送给其他 impalad节点,这样,其他impala 节点就不会 将查询请求发送到坏的impalad 节点上了。
3. Impala Catelog:
功能:
Catalog 负责将元数据变化推送到所有的Impalad 进程节点上,例如创建,修改,删除或者 Insert / load 等操作,Catalog 会连接到元数据库并进行元数据更新操作。
Catalog还负责从HiveMetestore 获取元数据。
题外话,怎么配置Impala 高可用
现在的Impala 并不支持高可用,一旦我们连接的impalad 进程节点崩溃,就必须得手动换一个节点或者等待这个节点恢复正常。
暂时有个方法就是在Impala 外面在包一层 haproxy 代理 实现impala 的四层负载均衡,从而实现Impala HA。
官方文档连接:https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_proxy.html
参考的博客连接:https://blog.csdn.net/yu616568/article/details/53821439