IMPALA-元数据相关
Posted 南山笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IMPALA-元数据相关相关的知识,希望对你有一定的参考价值。
最近对CDH平台的SQL执行情况进行分析,涉及到元数据的刷新和再次加载等,impala的元数据管理,之前在一文中已经描述。如下图,其中catalogd负责进行元数据的维护,statestore负责元数据的同步,作为coordinator的impalad则在本地保存了一份元数据信息。
元数据的装载和同步大致如上图。但是对DDL执行时,元数据如何在catalogd和impalad之间快速同步,资料中介绍不够清晰,进行了简单验证分析,有以下的记录。另对catalogd启动后的加载过程进行了分析和记录。
1 当创建执行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所在主机)、hdp11和hdp16(数据节点)获取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。
2 catalogd进程重新启动后,元数据加载过程如下:
(1)进程启动,读取参数文件,分配相应的内存空间;
(2)创建元数据装载进程,连接至HMS;
(3)标记所有元数据为无效状态;
(4)获取所有数据库名信息;
(5)装载各数据库下的函数;
(6)装载各数据库的表信息;
(7)装载hdfs cache信息;
(8)装载权限数据;
(9)装载表和视图的元数据,包括从HMS获取元数据,以及从NAMENODE获取文件和数据块信息。表和分区多少影响整个装载的耗时时间,一般这一步耗时会较长。
大约涉及2000张模型元数据装载,约有半数为按日的分区表,整个模型的元数据加载完成耗时大约1个小时,从这个维度来看,在生产环境应该规避掉未规划的catalogd重启和invalidate metdata全库的操作,否则会带来严重的性能下降和抖动。
NO.20。
以上是关于IMPALA-元数据相关的主要内容,如果未能解决你的问题,请参考以下文章