Hive执行报错CannotObtainBlockLengthException: Cannot obtain block length for LocatedBlock
报错日志如下:
Caused by: org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtain block length for LocatedBlock{BP-438308737--1615993069368:blk_1073893685_152906; getBlockSize()=949; corrupt=false; offset=0; locs=[DatanodeInfoWithStorage[:9866,DS-3c8778e1-fc6a-46f8-b774-a270aa727cce,DISK], DatanodeInfoWithStorage[:9866,DS-1cbdb041-f016-4b4a-8054-2f10171f2856,DISK], DatanodeInfoWithStorage[:9866,DS-843c0421-6683-4070-a6a1-1b761ac0ad28,DISK]]}at org.apache.hadoop.hdfs.DFSInputStream.readBlockLength(DFSInputStream.java:364)
原因分析:
上面这个报错是我在执行hive查询的时候报的错,这是一个map reduce阶段读取数据时候报错,是读取文件的一个数据块异常的问题
我这里出现这个问题是flume写数据到hdfs要注意的一个地方,因为我之前关闭了hdfs一段时间,导致flume数据到hdfs文件没有正常关闭导致的,我们需要找到这些数据块,修复他们。
解决方法:
1. 通过命令hdfs fsck /user/hive -openforwrite 检查哪些文件处于打开写的过程一直未关闭(根据自己实际要检查的目录来,如果确定是哪个目录下的话,范围可以更精准),可以看到有一些文件处于打开状态。但是这里有些文件是当前正在写的文件,我们要处理的是前一天的异常文件,当天的文件是正常的不要处理。
hdfs fsck /user/hive -openforwrite
[root@bigdata-agent01 usr]# hdfs fsck /user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin -openforwrite
Connecting to namenode via http://online-bigdata-manager:9870/fsck?ugi=root&openforwrite=1&path=%2Fuser%2Fhive%2Fwarehouse%2Fods_tmp_t.db%2Fo_flume_kafka_data_origin
FSCK started by root (auth:SIMPLE) from /10.88.10.65 for path /user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin at Sun Mar 27 18:34:21 CST 2022
/user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin/dt=2022-03-26/log_20220326_11.1648377005444.tmp 18469 bytes, replicated: replication=3, 1 block(s), OPENFORWRITE: /user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin/dt=2022-03-27/log_20220327_18.1648377005927.tmp 19902 bytes, replicated: replication=3, 1 block(s), OPENFORWRITE:
Status: HEALTHYNumber of data-nodes: 4Number of racks: 1Total dirs: 69Total symlinks: 0Replicated Blocks:Total size: 100606289256 BTotal files: 18528Total blocks (validated): 18544 (avg. block size 5425274 B)Minimally replicated blocks: 18542 (99.98921 %)Over-replicated blocks: 0 (0.0 %)Under-replicated blocks: 0 (0.0 %)Mis-replicated blocks: 0 (0.0 %)Default replication factor: 3Average block replication: 2.9996765Missing blocks: 0Corrupt blocks: 0Missing replicas: 0 (0.0 %)Blocks queued for replication: 0Erasure Coded Block Groups:Total size: 0 BTotal files: 0Total block groups (validated): 0Minimally erasure-coded block groups: 0Over-erasure-coded block groups: 0Under-erasure-coded block groups: 0Unsatisfactory placement block groups: 0Average block group size: 0.0Missing block groups: 0Corrupt block groups: 0Missing internal blocks: 0Blocks queued for replication: 0
FSCK ended at Sun Mar 27 18:34:21 CST 2022 in 210 millisecondsThe filesystem under path '/user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin' is HEALTHY
2. 通过命令修复对应文件
hdfs debug recoverLease -path /user/hive/warehouse/ods_tmp_t.db/o_flume_kafka_data_origin/dt=2022-03-26/log_20220326_11.1648377005444.tmp -retries 3
参考1
参考2
Hive执行报错CannotObtainBlockLengthException: Cannot obtain block length for LocatedBlock相关推荐
- Cannot obtain block length for LocatedBlock
集群重启未关闭flume采集 报错日志 Caused by: org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtai ...
- hadoop 修复hdfs中文件块错误 和文件修复 Error: java.io.IOException: Cannot obtain block length for LocatedBlock
一:问题 Error: java.io.IOException: Cannot obtain block length for LocatedBlock Error: java.io.IOExcept ...
- [Hadoop] - 异常Cannot obtain block length for LocatedBlock
[Hadoop] - 异常Cannot obtain block length for LocatedBlock 参考文章: (1)[Hadoop] - 异常Cannot obtain block l ...
- hive执行报错:Both left and right aliases encountered in JOIN
原因:两个表join的时候,不支持两个表的字段 非相等 操作. 可以把不相等条件拿到 where语句中. SELECT * FROM T1 LEFT JOIN T2 on T1.id=T2.id an ...
- hive报错Could not get block locations. Source file “/user/hive/warehouse/xxx
hive报错 Could not get block locations. Source file "/user/hive/warehouse/xxx... 以及 Caused by: or ...
- RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5
RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5 用vi 编辑了一个数据文件 ,导致下面的错误: 验证还原 RM ...
- SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析
SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析 因项目上成品库存管理启用了handlin ...
- 【WEB安全】Xstream最新反序列化poc执行报错问题
前言 最近有个需求,用Xstream反序列化打个内存马,从通用性来讲,肯定用1.4.17的洞去打应用范围最广.众所周知,Xstream官方会提供其漏洞的poc.在我实验之下,1.4.17的几个poc只 ...
- 关于ADB 执行报错问题-db server version (31) doesn't match this client (40); killing...
关于ADB 执行报错问题-db server version (31) doesn't match this client (40); killing... D:\ADB>adb devices ...
- 日常问题——初始化Hive仓库报错com.google.common.base.Preconditions.checkArgument
问题描述: 初始化Hive仓库报错Exception in thread "main" java.lang.NoSuchMethodError: com.google.common ...
最新文章
- 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
- 中科院分词ICTCLAS5.0_JNI 使用方法
- oracle查询orapw文件,oracle学习笔记《一》
- mysql可以存布尔_哪个MySQL数据类型用于存储布尔值
- vmware虚拟机配置串口
- Linux命令行上传本地文件到服务器 、 下载服务器文件到本地
- 随机梯度下降(SGD)和批量梯度下降(BGD)的区别
- Java写的一个二叉树三种遍历递归算法(仅用作理解三种遍历)
- android wifi 抓sniffer log
- c语言程序设计实验指导实验十二,C语言程序设计实验指导
- icom对讲机写频线定义_自制电台通用写频线(完整版).pdf
- 美团大众点评2017校园招聘笔试(编程题)
- linux虚拟机cents7配置静态ip
- redis 关闭保护模式
- 24微信小程序开发2
- MMDetection框架入门教程(三):配置文件详细解析
- 人工智能风暴狂飙突进,极致创新的微鲸深掘大屏金矿
- UDP服务器客户端编程流程
- 发送邮件工具类 - EmaiHelper
- oracle触发器中的after insert后继续触发,oracle触发器使用:after insert 与before insert的简单使用注意...
热门文章
- 【基站位置查询】通过lac,cellid进行手机基站位置查询和经纬度查询
- 计算机组成原理2017答案,计算机组成原理答案2017(西南大学).docx
- 当保险行业不再是压舱石,平安保险还保险吗?
- Matlab提示Ill-conditioned covariance created at iteration
- 理解常用的无理数:自然常数(e)、圆周率(π)、黄金比例(φ)
- VR家庭火灾安全系统_VR校园火灾安全系统_VR工厂火灾安全系统_VR宿舍火灾安全系统多场景选择
- 什么是知识库,怎么制作知识库?
- 修改注册表 打造个性化右键菜单
- 【深入理解TcaplusDB技术】详细介绍TDR表
- android版本内存卡,版本等级繁多 教你如何挑选手机内存卡