报错日志如下

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相关推荐

  1. Cannot obtain block length for LocatedBlock

    集群重启未关闭flume采集 报错日志 Caused by: org.apache.hadoop.hdfs.CannotObtainBlockLengthException: Cannot obtai ...

  2. 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 ...

  3. [Hadoop] - 异常Cannot obtain block length for LocatedBlock

    [Hadoop] - 异常Cannot obtain block length for LocatedBlock 参考文章: (1)[Hadoop] - 异常Cannot obtain block l ...

  4. hive执行报错:Both left and right aliases encountered in JOIN

    原因:两个表join的时候,不支持两个表的字段 非相等 操作. 可以把不相等条件拿到 where语句中. SELECT * FROM T1 LEFT JOIN T2 on T1.id=T2.id an ...

  5. 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 ...

  6. RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5

    RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5 用vi 编辑了一个数据文件 ,导致下面的错误: 验证还原 RM ...

  7. SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析

    SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析 因项目上成品库存管理启用了handlin ...

  8. 【WEB安全】Xstream最新反序列化poc执行报错问题

    前言 最近有个需求,用Xstream反序列化打个内存马,从通用性来讲,肯定用1.4.17的洞去打应用范围最广.众所周知,Xstream官方会提供其漏洞的poc.在我实验之下,1.4.17的几个poc只 ...

  9. 关于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 ...

  10. 日常问题——初始化Hive仓库报错com.google.common.base.Preconditions.checkArgument

    问题描述: 初始化Hive仓库报错Exception in thread "main" java.lang.NoSuchMethodError: com.google.common ...

最新文章

  1. 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
  2. 中科院分词ICTCLAS5.0_JNI 使用方法
  3. oracle查询orapw文件,oracle学习笔记《一》
  4. mysql可以存布尔_哪个MySQL数据类型用于存储布尔值
  5. vmware虚拟机配置串口
  6. Linux命令行上传本地文件到服务器 、 下载服务器文件到本地
  7. 随机梯度下降(SGD)和批量梯度下降(BGD)的区别
  8. Java写的一个二叉树三种遍历递归算法(仅用作理解三种遍历)
  9. android wifi 抓sniffer log
  10. c语言程序设计实验指导实验十二,C语言程序设计实验指导
  11. icom对讲机写频线定义_自制电台通用写频线(完整版).pdf
  12. 美团大众点评2017校园招聘笔试(编程题)
  13. linux虚拟机cents7配置静态ip
  14. redis 关闭保护模式
  15. 24微信小程序开发2
  16. MMDetection框架入门教程(三):配置文件详细解析
  17. 人工智能风暴狂飙突进,极致创新的微鲸深掘大屏金矿
  18. UDP服务器客户端编程流程
  19. 发送邮件工具类 - EmaiHelper
  20. oracle触发器中的after insert后继续触发,oracle触发器使用:after insert 与before insert的简单使用注意...

热门文章

  1. 【基站位置查询】通过lac,cellid进行手机基站位置查询和经纬度查询
  2. 计算机组成原理2017答案,计算机组成原理答案2017(西南大学).docx
  3. 当保险行业不再是压舱石,平安保险还保险吗?
  4. Matlab提示Ill-conditioned covariance created at iteration
  5. 理解常用的无理数:自然常数(e)、圆周率(π)、黄金比例(φ)
  6. VR家庭火灾安全系统_VR校园火灾安全系统_VR工厂火灾安全系统_VR宿舍火灾安全系统多场景选择
  7. 什么是知识库,怎么制作知识库?
  8. 修改注册表 打造个性化右键菜单
  9. 【深入理解TcaplusDB技术】详细介绍TDR表
  10. android版本内存卡,版本等级繁多 教你如何挑选手机内存卡