impala的This could be due to stale metadata.问题

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来得高效一些。

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.

解决方法

找到对应参数的下的值,查看该路径是否存在,impala用户是否有权限进行读写

错误2

invalidate metadata 更新元数据出错
错误代码

Query: invalidate metadata
ERROR: Couldn't open transport for hdname:26000 (connect() failed: Connection refused)

查看日志信息,有如下错误,无法读取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参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值