Impala invalidate metadata详细使用方法说明

前言

Impala一直是我们各个业务使用的重点,但是在Impala的使用上感觉一直不是很成熟,比如说 invalidate metadata操作,到底什么时候该使用-r参数,什么时候不使用,什么时候可以用refresh代替,什么时候不可以,这一直是一个问题。因此有了这次的测试

这次的测试目的就是为了对Impala的元数据方面的使用进行一个彻底的测试,给出一个比较明确答复。在最大的成都上来减缓Impala集群的压力。

测试准备

本次测试,分为外表和内表,分别对表和分区进行各种操作,然后记录不同的操作是否需要使用-r或者refresh。

测试主要在三台机器上进行,一台进行各种数据操作,另两台进行数据查询操作。

其中invalidate metadata tablenamerefresh tablename随机在各台机器上进行测试。

测试详情

下面就是测试详情。比较容易理解,不再解释。 
impala测试结果

结论

测试的结果比较出乎意料,比较简单的一个结论就是,除了对hdfs进行操作外,只要通过impala的命令执行的数据修改,一律不需要进行元数据的同步工作,这就意味着,基本上所有脚本的-r参数都可以删除,查询语句的时候也不需要使用-r参数,如果害怕数据过期,那么断开重新连接即可。

注意:唯一需要注意的就是,只要对hdfs进行了操作,就需要执行元数据的更新的操作,根据Impala官方的建议,这种情况完全可以使用refresh tablename操作,而不必加-r参数。

补充

补充一: 亲测,catalog服务同步元数据的时候会有一定的延迟,但是不会特别长,我遇到过一次,延迟在一秒左右,不会太长。

补充二:这次没有对Hive进行测试,但是按照官网的解释,通过hive和hdfs进行的操作,都会需要执行更新元数据的操作。