前言
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