天天看點

Impala問題實錄

一、報錯:

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語句

  • 如果數倉中涉及到非常

    大批量的中繼資料更改

    ,那麼建議直接

    重新開機catalogd和statestored

    ,這總比使用不帶表名的invalidate metadata來得高效一些。

作者: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

繼續閱讀