6、子任务执行:每一个Fragment的执行输出通过DataStreamSink发送到下一个Fragment,由下一个Fragment的ExchangeNode接收,Fragment运行过程中不断向coordinator节点汇报当前运行状态。
7、结果汇总:查询的SQL通常情况下需要有一个单独的Fragment用于结果的汇总,它只在coordinator节点运行,将多个backend的最终执行结果汇总,转换成ResultSet信息。
8、客户端查询结果:客户端调用获取ResultSet的接口,读取查询结果。
9、关闭查询:客户端调用CloseOperation关闭本次查询,标志着本次查询的结束。
三、Impala组件
- Impala Daemon组件
Impalad是Impala的核心进程,运行在所有的数据节点上,可以读写数据,并接收客户端的查询请求,并行执行来自集群中其他节点的查询请求,将中间结果返回给调度节点。调用节点将结果返回给客户端。用户在Impala集群上的某个节点提交数据处理请求 则该节点称为coordinator node(协调器节点),其他的集群节点传输其中的处理的部分数据到该coordinator node,coordinator node负责构建最终的结果数据返回给用户。
Impala 支持在提交任务的时候(采用JDBC ,ODBC 方式) 采用round-robin算法来实现负载均衡,将任务提交到不同的节点上
Impalad 进程通过持续的和statestore 通信来确认自己所在的节点是否健康 和是否可以接受新的任务请求
- Impala Statestore(主要优化点,线程数)
状态管理进程,定时检查The I