元数据作为大数据的源泉,有着非常重要的作用。可在Impala中却隐藏着一个秘密?和元数据有着颇深的渊源,我们一起来追溯!
一、Impala体系结构
(1)每个slave节点运行一个Impala进程,和HDFS的DataNode进程同时协作
(2)两个其他的进程运行在master节点,用来支持查询执行
1、State Store进程:为ImpalaDaemon提供查找服务,并周期性地检查Impala进程状态
2、Catalog进程:把元数据的变更同步到所有ImpalaDaemons中
二、Impala如何执行查询
(1)Impala daemon查询执行过程
客户端(Impala-shell或Hue)连接到Impala daemon,它是Coordinator。Coordinator从State Store请求其他的Impala daemons,并把查询分发给其他的Impala daemons,最后返回结果给客户端。
三、元数据缓存
根据Impala的查询功能,我们可以知道在Impala里面存在元数据的缓存。元数据保存在Hive的Metastore里面,那么元数据缓存的作用是什么呢?就是在Impala启动的时候,将元数据缓存到Impala daemon的节点。当Impala daemon发起元数据变更的时候,比如说创建表,删除表,或者修改表的定义,这些都是可以缓存下来的。如果我们去查询表信息的时候,可以从缓存里面找到,直接在节点中进行查询,所以在每个Impala daemon里面有metadata cache节点用作缓存。
而当Impala进程改变了元数据,将会提示catalog服务,Catalog服务通知所有Impala daemons来更新缓存。
四、外部改变和元数据缓存
我们上面讲的都是内部的改变,然而很多时候还会有外部的改变,可外部的改变对于Impala来说是未知的,比如:
(1)Hive、Hcatalog或HueMetadata Manager改变了元数据
(2)数据直接添加到HDFS目录
外部的改变将导致Impala元数据缓存变得不可用,我们必须手动的刷新或验证Impala的元数据缓存。
当然,这种改变根据改变内容和性质的不同,有不同的方法去更新,比如:
有疑问,欢迎来吐槽,关注微信公众号“大数据cn”, 每天同行嗨不停,还有更多资源等着你!