前言
Impala一直是我们各个业务使用的重点,但是在Impala的使用上感觉一直不是很成熟,比如说 invalidate metadata
操作,到底什么时候该使用-r参数,什么时候不使用,什么时候可以用refresh代替,什么时候不可以,这一直是一个问题。因此有了这次的测试。
这次的测试目的就是为了对Impala的元数据方面的使用进行一个彻底的测试,给出一个比较明确答复。在最大的成都上来减缓Impala集群的压力。
测试准备
本次测试,分为外表和内表,分别对表和分区进行各种操作,然后记录不同的操作是否需要使用-r或者refresh。
测试主要在三台机器上进行,一台进行各种数据操作,另两台进行数据查询操作。
其中invalidate metadata tablename
和refresh tablename
随机在各台机器上进行测试。
测试详情
下面就是测试详情。比较容易理解,不再解释。
结论
测试的结果比较出乎意料,比较简单的一个结论就是,除了对hdfs进行操作外,只要通过impala的命令执行的数据修改,一律不需要进行元数据的同步工作,这就意味着,基本上所有脚本的-r
参数都可以删除,查询语句的时候也不需要使用-r参数,如果害怕数据过期,那么断开重新连接即可。
注意:唯一需要注意的就是,只要对hdfs进行了操作,就需要执行元数据的更新的操作,根据Impala官方的建议,这种情况完全可以使用refresh tablename
操作,而不必加-r
参数。
补充
补充一: 亲测,catalog服务同步元数据的时候会有一定的延迟,但是不会特别长,我遇到过一次,延迟在一秒左右,不会太长。
补充二:这次没有对hive进行测试,但是按照官网的解释,通过hive和hdfs进行的操作,都会需要执行更新元数据的操作。
2016-04-14 19:08:00 hzct
来源:
http://blog.csdn.net/zhaodedong
http://zhaodedong.leanote.com
http://zhaodedong.com