IMPALA-元数据相关

Posted 南山笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IMPALA-元数据相关相关的知识,希望对你有一定的参考价值。

最近对CDH平台的SQL执行情况进行分析,涉及到元数据的刷新和再次加载等,impala的元数据管理,之前在一文中已经描述。如下图,其中catalogd负责进行元数据的维护,statestore负责元数据的同步,作为coordinator的impalad则在本地保存了一份元数据信息。

元数据的装载和同步大致如上图。但是对DDL执行时,元数据如何在catalogd和impalad之间快速同步,资料中介绍不够清晰,进行了简单验证分析,有以下的记录。另对catalogd启动后的加载过程进行了分析和记录。

当创建执行DLL语句,元数据是如何管理和同步?

操作过程如下:

(1)在hdp11节点登录impala-shell,执行下述脚本:

Create table test.t_test_catalog1(id decimal(10)) ;

(2)继续在hdp11节点上执行数据插入脚本:

Insert into test.t_test_catalog1 values(2) ;

(3)登录hdp16,查看和访问test.t_test_catalog1的结构和数据,均能正访问和显示。

 然后分别从hdp01(catalogd所在主机)hdp11hdp16(数据节点)获取impala.log.INFO文件,查看关于test.t_test_catalog1模型元数据的处理过程,如下:

从日志分析看到以下:

(1)ddl语句首先是catalogd执行的,此时元数据大小为41,版本为50293,之后同步元数据到各impalad。

(2)catalogd在ddl执行完成后,重新从HMS装载了表的元数据,从namenode获取了文件和块的元数据,这个时候元数据大小为1220,版本更新为50297,再次同步元数据到impalad。

(3)当在表中插入数据后,catalogd再次刷新元数据,刷新了文件元数据信息,元数据大小增加到1494,版本更新为50298,并再次同步元数据到impalad。


 catalogd进程重新启动后,元数据加载过程如下:

(1)进程启动,读取参数文件,分配相应的内存空间;

(2)创建元数据装载进程,连接至HMS;

(3)标记所有元数据为无效状态;

(4)获取所有数据库名信息;

(5)装载各数据库下的函数;

(6)装载各数据库的表信息;

(7)装载hdfs cache信息;

(8)装载权限数据;

(9)装载表和视图的元数据,包括从HMS获取元数据,以及从NAMENODE获取文件和数据块信息。表和分区多少影响整个装载的耗时时间,一般这一步耗时会较长。

大约涉及2000张模型元数据装载,约有半数为按日的分区表,整个模型的元数据加载完成耗时大约1个小时,从这个维度来看,在生产环境应该规避掉未规划的catalogd重启和invalidate metdata全库的操作,否则会带来严重的性能下降和抖动。 


NO.20。

以上是关于IMPALA-元数据相关的主要内容,如果未能解决你的问题,请参考以下文章

Impala 通过 jdbc 使元数据无效

Impala MetaData问题

如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新

Java实现impala操作kudu

在 Impala 中自动执行“验证元数据”

Impala 中的无效元数据和刷新命令之间的区别?