元数据作为大数据的源泉,有着非常重要的作用。可在Impala中却隐藏着一个秘密?和元数据有着颇深的渊源,我们一起来追溯!

一、Impala体系结构

(1)每个slave节点运行一个Impala进程,和HDFS的DataNode进程同时协作

(2)两个其他的进程运行在master节点,用来支持查询执行

1、State Store进程:为ImpalaDaemon提供查×××,并周期性地检查Impala进程状态

2、Catalog进程:把元数据的变更同步到所有ImpalaDaemons中

Impala隐藏的惊天秘密_第1张图片

二、Impala如何执行查询

(1)Impala daemon查询执行过程

客户端(Impala-shell或Hue)连接到Impala daemon,它是Coordinator。Coordinator从State Store请求其他的Impala daemons,并把查询分发给其他的Impala daemons,最后返回结果给客户端。

Impala隐藏的惊天秘密_第2张图片

三、元数据缓存

根据Impala的查询功能,我们可以知道在Impala里面存在元数据的缓存。元数据保存在Hive的Metastore里面,那么元数据缓存的作用是什么呢?就是在Impala启动的时候,将元数据缓存到Impala daemon的节点。当Impala daemon发起元数据变更的时候,比如说创建表,删除表,或者修改表的定义,这些都是可以缓存下来的。如果我们去查询表信息的时候,可以从缓存里面找到,直接在节点中进行查询,所以在每个Impala daemon里面有metadata cache节点用作缓存。

Impala隐藏的惊天秘密_第3张图片

而当Impala进程改变了元数据,将会提示catalog服务,Catalog服务通知所有Impala daemons来更新缓存。

Impala隐藏的惊天秘密_第4张图片

四、外部改变和元数据缓存

我们上面讲的都是内部的改变,然而很多时候还会有外部的改变,可外部的改变对于Impala来说是未知的,比如:

(1)Hive、Hcatalog或HueMetadata Manager改变了元数据

(2)数据直接添加到HDFS目录

Impala隐藏的惊天秘密_第5张图片

外部的改变将导致Impala元数据缓存变得不可用,我们必须手动的刷新或验证Impala的元数据缓存。

当然,这种改变根据改变内容和性质的不同,有不同的方法去更新,比如:

Impala隐藏的惊天秘密_第6张图片

 

有疑问,欢迎来吐槽,关注微信公众号“大数据cn”, 每天同行嗨不停,还有更多资源等着你!