1:周五快下班的时候,想到hive库查询一张表,突然发现访问会报错,反馈给了DBA,一起找了一整晚到现在还没找到。**是整个库的表都查询不了。
我在hue上执行查询会报错:
select * from 表名 limit 10;
通过hive客户端执行结果:
select * from 表名 limit 10;
org.apache.thrift.transport.TTransportException
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86)
at org.apache.thrift.transport.TSaslTransport.readLength(TSaslTransport.java:376)
at org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTransport.java:453)
at org.apache.thrift.transport.TSaslTransport.read(TSaslTransport.java:435)
at org.apache.thrift.transport.TSaslClientTransport.read(TSaslClientTransport.java:37)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:77)
at org.apache.hive.service.rpc.thrift.TCLIService$Client.recv_FetchResults(TCLIService.java:559)
这个表存的是T-1的离线数据, 每天凌晨2点从业务的MongoDB库dump过来的。看最新11月18号凌晨的写和读日志也是正常的。其他没有写入操作,只是每天凌晨调度写入一次。
因此尝试过:
1:把最新的11月17日的hdfs文件删除掉。
2:重建hive表,将hdfs文件移动到新表去。
3:全新从mongodb dump一个表到hive库去。
4:全新从mongodb dump一个表到一个另外一个hive库去。
上面的都失败了,都报如上错误,查询不了。
hive文件格式如下
/user/hive/warehouse/库名.db/表名/monthi=202211/stage-表名-20221117.bson
希望hive库能够能够正常查询和写入
我可以来试试,你把运行日志发给我
【不知道对不对,供你参考尝试】
思路:
1、重启hiveserver2,MetaStore服务看是否恢复
2、排除hive元数据的问题
show OPEN TABLES where In_use > 0;
show full processlist;
【这是一个实例修复成功的思路,同样分享给你】
hue/build/env/bin/pip install thrift-sasl==0.2.1
Use SASL framework to establish connection to host. use_sasl=true
engine=sqlite3 -> engine=postgresql_psycopg2 (or another db)
确认一下整个系统域名解析是否正常。
确认网络是否正常。nststat -sp 看是否有错包。
sar -all 看主机历史。
看主机日志 messages。
和你有啥关系,基础设施的问题,有专职DBA就交给专职DBA,记住你是应用方,不瞎给方案,除非你能确定你的方案有90%的把握,不然建议你还是不要“添乱”