一、報錯:
File 'hdfs://nameservice1/user/hive/warehouse/dm/dm_sup_manager_duibi/tp=zonghe1/000000_0' has an invalid version number: �ϫ&
This could be due to stale metadata. Try running "refresh dm.dm_sup_manager_duibi".
報錯hive中繼資料過時,需要更新中繼資料
更新中繼資料的使用
- invalidate metadata 會加載相關表的
,這個操作對于有所有中繼資料資訊
的大表很多分區
,refresh加載中繼資料更快,因為它成本非常高
的位置資料隻要加載新增的資料檔案塊
- 如果數倉中發生了
或增删表
的行為,如改變表結構
、create table
、drop table
等,就使用alter table add column
語句。invalidate metadata [table]
- 如果數倉中某表加入了
,或者有新資料
的改動,如分區
、load data
等,就使用alter table add partition
語句。refresh [table] (partition [partition])
- invalidate metadata比起refresh而言要
得多,并且它造成impalad之間查詢不一緻也會更嚴重。是以,也幾乎重量級
禁止使用
。不帶表名的invalidate metadata語句
- 如果數倉中涉及到非常
,那麼建議直接大批量的中繼資料更改
,這總比使用不帶表名的invalidate metadata來得高效一些。重新開機catalogd和statestored
作者:xiaogp
連結:https://www.jianshu.com/p/c8f201e6d96a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
impala重新整理中繼資料方法
1.hue使用Perform incremental metadata update,不要用Invalidate all metadata and rebuild index,如果是invalidate metadata什麼都不加,甯願重新啟動catalogd。
2.如果涉及到表的schema改變,使用invalidate metadata [table]
3.如果隻是涉及到表的資料改變,使用refresh [table]。
4.如果隻是涉及到表的某一個分區資料改變,使用refresh [table] partition [partition]。
5.invalidate metadata操作比refresh要重量級。
錯誤解決參考
錯誤1
路徑權限問題
Error connecting: TTransportException, Could not connect to master:21000
在日志檔案/var/log/impala中檢視impalad.ERROR,錯誤如下
ERROR: short-circuit local reads is disabled because
- dfs.domain.socket.path is not configured.
- dfs.client.read.shortcircuit is not enabled.
1
2
3
解決方法
找到對應參數的下的值,檢視該路徑是否存在,impala使用者是否有權限進行讀寫
錯誤2
invalidate metadata 更新中繼資料出錯
錯誤代碼
Query: invalidate metadata
ERROR: Couldn't open transport for hdname:26000 (connect() failed: Connection refused)
1
2
檢視日志資訊,有如下錯誤,無法讀取datanode上的資料塊資訊
I0507 10:03:36.218281 21562 BlockStorageLocationUtil.java:177] Failed to query block locations on datanode 192.168.73.16:50020: org.apache.hadoop.ipc.RemoteException(java.lang.UnsupportedOperationException): Datanode#getHdfsBlocksMetadata is not enabled in datanode config
at org.apache.hadoop.hdfs.server.datanode.DataNode.getHdfsBlocksMetadata(DataNode.java:1547)
解決方法
注意:這裡使用的端口說是26000,事實上在整個配置過程中沒有任何的端口設定為26000,同時出現這種錯誤是在登入終端并且成功連接配接之後出現,也就是說這跟中繼資料相關
解決方法:
/etc/default/impala 中的配置項IMPALA_CATALOG_ARGS,需要增加參數 -state_store_host=${IMPALA_STATE_STORE_HOST}
結果如下
該參數告訴了catalog去哪個host找中繼資料,事實上在state-store的配置中也有重新設定state_store_host參數
————————————————
版權聲明:本文為CSDN部落客「Dino系我」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/zhong_han_jun/article/details/45563505