天天看点

《impala官网笔记》1.1 impala组件

不生产博客,只是官网的搬运工
           

目录

 impala daemon

 impald statestore

 catalog service

impala是一个分布式的mpp数据库引擎,在cdh集群中由运行在指定主机上的不同的daemon进程组成

 impala daemon

核心的impala组件是impala daemon,由impalad(cdh impala服务impalad角色)表示,负责一些关键的功能

1.读写数据

2.接受来自impala-shell命令行、hue、jdbc、odbc的查询请求

3.并行执行查询并且在整个集群中分配工作

4.发送中间查询结果到coordinator节点

impala daemon可以通过以下方式部署

1.存储、计算在一起,和datanode在相同节点上

2.单独部署在计算集群,远程拉取数据从hdfs、s3等等

impala daemon不断的与statestore通信,来确保哪些daemon是健康的并且可以接受新的工作

他们也接收来自catalogd daemon的广播信息当集群中的impala daemon 执行create、alter、drop任何类型的object(可能是库、表、column、role等),或者通过Impala执行的insert、load data语句。这种后台的通信最小化了refresh或invalidate metadata获取元数据的需要在impala1.2之前,如果没有这个catalog服务,每次执行ddl都需要刷新元数据,有了之后,impala sql导致的元数据改变不需要手动刷新

在CDH5.12/impala2.9之后,可以控制那个节点充当coordinator节点和控制那些节点充当计算节点,以便提高高负载集群的伸缩性

 impald statestore

该组件检测集群中impala daemon节点的健康状态,并且不断的将结果传递给每个impala daemon,仅需要将该角色安装在一台节点上,如果一台impala daemon宕掉,这个statestore将通知别的impalad节点,防止以后有task分到该节点

因为statestore主要目的是对集群中节点宕机提供帮助和广播元数据到coordinator,所以是不重要的,如果该节点宕掉,impala计算节点像之前一样继续运行和分配工作,此时如果有impalad计算节点宕机,集群健壮性将降低,当该节点恢复,statestore会与别的impala计算节点重新建立连接

如果在statestore角色宕掉时执行ddl操作,将失败

statestore、catalog角色无需高可用,它们宕了也不会造成数据丢失,如果这俩角色宕掉不可恢复,删除角色,并在别的节点添加即可

 catalog service

该服务主要分发由impala sql导致的元数据改变到集群每个Impalad计算节点,仅需要一个节点安装该角色,因为分发请求是由statestore发起的,所以最好catalog、statestore角色装同一节点

该服务避免执行refresh、invalidate metadata语句的需要当元数据改变是由Impala语句造成的,当用hive执行ddl或load data的时候,在执行查询前,需要手动执行refresh或invalidate metadata

这个功能涉及到impala的多个方面:

不需要手动刷元数据当通过impala执行create table、insert或者别的ddl、dml操作,如果操作是通过hive或者直接操错hdfs文件仍需要手动刷新,只需要在一台impala daemon节点执行,而不是所有节点执行

-load_catalog_in_background参数控制元数据什么时候加载元数据

cdh5.16.2默认false

false:如果设置为flase.表的元数据在第一次使用的时候被加载,意味着第一次有查询涉及到该表时可能会比以后同样的查询慢,impala2.2开始,默认false

true:如果设置为true,加载表的元数据即使没有查询涉及到该表,所以在第一次查询之前,该表的元数据已经被加载,不建议设置为true,因为后台的load可能会干扰到某查询涉及到表的元数据加载,这种情况可能发生在服务刚启动或者元数据不可以之后,后台加载的耗时由元数据数量决定,可能导致某条sql运行很长时间,影响我们判断,impala可能load元数据对于那些我们从未使用的表,造成资源浪费

catalog角色同statestore一样,宕掉的话,直接删掉,在别的节点添加即可。