Impala架构详细讲解

来源:互联网 发布:sodu小说源码 编辑:程序博客网 时间:2024/06/14 08:37

这里写图片描述

架构:采用无中心设计

三大核心组件:

Impala Daemon

  impalad是Impala的核心进程,运行在所有的数据节点上,可以读写数据,并接收客户端的查询请求,并行执行来自集群中其他节点的查询请求,将中间结果返回给调度节点。调用节点将结果返回给客户端。用户在impala集群上的某个节点提交数据处理请求 则该节点称为coordinator node(协调器节点),其他的集群节点传输其中的处理的部分数据到该coordinator node,coordinator node负责构建最终的结果数据返回给用户。
  impala 支持在提交任务的时候(采用JDBC ,ODBC 方式) 采用round-robin算法来实现负载均衡,将任务提交到不同的节点上
impalad 进程通过持续的和statestore 通信来确认自己所在的节点是否健康 和是否可以接受新的任务请求

Impala Statestore(主要优化点,线程数)

  状态管理进程,定时检查The Impala Daemon的健康状况,协调各个运行impalad的实例之间的信息关系,Impala正是通过这些信息去定位查询请求所要的数据,进程名叫做 statestored,在集群中只需要启动一个这样的进程,如果Impala节点由于物理原因、网络原因、软件原因或者其他原因而下线,Statestore会通知其他节点,避免查询任务分发到不可用的节点上。

Impala Catalog Service(元数据管理和元存储)

  元数据管理服务,进程名叫做catalogd,将数据表变化的信息分发给各个进程。接收来自statestore的所有请求 ,每个Impala节点在本地缓存所有元数据。 当处理极大量的数据和/或许多分区时,获得表特定的元数据可能需要大量的时间。 因此,本地存储的元数据缓存有助于立即提供这样的信息。当表定义或表数据更新时,其他Impala后台进程必须通过检索最新元数据来更新其元数据缓存,然后对相关表发出新查询。

impala组件列表:

  impala client:
    功能:将HiveQL请求送给impalad,并等待结果返回给用户
  impalad:
    Planner > FE(JAVA)
      功能:负责解析查询请求,并生成执行计划树(Query Plan Tree)
    Coordinator > BE(C++)
      功能:拆解请求(Fragment),负责定位数据位置,并发送请求到Exec Engine,汇聚请求结果上报
    Exec Engine > BE(C++)
      功能:执行Fragment子查询,比如scan,Aggregation,Merge etc.
  statestore server:
    功能:维护impalad的伙伴关系,负责通知伙伴关系变化,类似于仪表盘的zk的故障监控功能
  meta server:
    Hive Meta Storage
      功能:用户维护表的schema信息等元数据(存在于一个关系型数据库)
    NameNode of HDFS
      功能:用于定位hdfs的数据位置
    HMaster of HBase
      功能:用于定位HBase的数据的位置
  storage server:
    HDFS:
      功能:HDFS的DataNode服务
    HBASE:
      功能:HBase的RegionServer服务