hadoop+wsl 10.255.255.254,BlockMissingException: Could not obtain block: 踩坑

记录执行hivesql时报org.apache.hadoop.hdfs.BlockMissingException:Could not obtain block错误 在执行hive sql时明明已经插入了数据,可是过了一会儿查询的时候数据表为空,而且报以下错误,以前也经常遇到,搞得我一直重新插入数据反反复复,今天终于找到了root cause⬇️ ⚠️报错: org.apache.hadoop.hdfs.BlockMissingException:Could not obtain block: BP-1094756810-192.168.10.102-1623427145615:blk_1073755935_15114 file=/warehouse/gmall/ads 阅读详情

起因:

我在我的wsl中启动一个hadoop

用java客户端连接 hdfs,读取某个文件的内容异常,但是读取文件名,文件列表正常

问题:

BlockMissingException: Could not obtain block:BP-xxx

 显示缺少文件块,因此我检查block块,也显示没有问题

hdfs fsck [-options] <path> [...]

 也试过初始化namenode、datanode, 都不好使

# 格式化NameNode
hdfs namenode -format

# 删除datanode数据
rm -rf $HADOOP_HOME/data/data

最后我给代码加了log4j配置,打印debug日志,发现,请求了namenode后,他返回了一个很奇怪的datanode ip【10.255.255.254】,然后我在wsl中 ip a 发现了这个奇怪的ip,这个ip在wsl内部是可以访问的,但是我的windows访问wsl是不能通过这个ip进行访问的。

root@wsl01:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:23:8c:a2 brd ff:ff:ff:ff:ff:ff
    inet 172.17.211.34/20 brd 172.17.223.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe23:8ca2/64 scope link
       valid_lft forever preferred_lft forever

相关文档

经过研究发现,这是wsl dns隧道开启的一个内部ip。

WSL 中的高级设置配置 | Microsoft Learn

dnsTunneling**booleantrue更改将 DNS 请求从 WSL 代理到 Windows 的方式
dnsTunnelingIpAddress**string10.255.255.254仅当 wsl2.dnsTunneling 设置为 true 时才适用。 指定启用 DNS 隧道的情况下将在 Linux resolv.conf 文件中配置的 nameserver。

解决方案

1、将dnsTunneling改成false,镜像网络直接设置成false, Windows 11 以上可用

2、新增dnsTunnelingIpAddress配置,设置成你的windows能认识的wsl ip(镜像网络不会弄。)

配置文件,文件路径为 C:\Users\<UserName>\.wslconfig  Windows 11 版本 22H2 以上可用

[wsl2]
#networkingMode=mirrored # 开启镜像网络
dnsTunneling=true

[experimental]
dnsTunnelingIpAddress=172.17.211.34

这样之后,就没有inet 10.255.255.254/32 brd 10.255.255.254 scope global lo

root@wsl01:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:23:8c:4f brd ff:ff:ff:ff:ff:ff
    inet 172.17.211.34/20 brd 172.17.223.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe23:8c4f/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:05:a2:d6:a5 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

补充一点

ubuntu,/etc/resolv.conf 这个文件每次重启wsl都会变,可以加一个配置

vi /etc/wsl.conf

[network]

#取消自动生成 resolv.conf

generateResolvConf = false 

或者直接暴力一点

mv /etc/resolv.conf /etc/resolv.conf_bak


echo 'nameserver 8.8.8.8' > /etc/resolv.conf

# 直接物理禁止修改 readonly,再重启也没办法改

chattr +i /etc/resolv.conf

# 取消readonly

# chattr -i /etc/resolv.conf

 其实就是两个问题

1:java访问hdfs时,获取文件元数据信息是访问的namenode,如果想访问文件内容,需要访问先namenode,然后返回文件所在的datanode的信息,然后拿到地址再去访问datanode,所以当你发现能访问文件元数据,但是没法获取文件内容的时候,考虑是不是不认识namenode返回的datanode地址(会返回hostsname),另外出问题,可以加log4j 看debug级别的报错内容。

2:wsl dns隧道会默认加一个172.17.255.255内部通信地址,但是这个地址windows不认识,要么删掉他,要么改掉他

但是为什么 我有这么多ip,他偏偏返回10.255.255.254这个ip呢?我也不懂,感觉是hadoop认为这是一个本地请求所以,返回了一个内部地址。。以后再研究这个问题

Root cause: BlockMissingException【查看修复HDFS中丢失的块】ORG.APACHE.HADOOP.HDFS.BLOCKMISSINGEXCEPTION: COULD 首先得好看有多少损坏的文件,其中需要使用Hadoop的fsck命令: 以下是官方解释 用法: hadoop fsck //路径 以上将会展示该路径下所有受损的文件 最后用-delete 可以清除掉所有受损的文件 阅读详情

相关推荐

外网无法访问HDFS org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block

1、遇到问题 今天使用自己的电脑,使用外网操作阿里云服务器上的HDFS。 报错  org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block 2、百度结果 参考 https://blog.csdn.net/xiaozhaoshigedasb/article/details/88999595  防火墙记得关掉; 查看DataNode是否启动; 有些数据块是损坏了,可以命令查看 阿里云防火墙已经关闭了 使用 jps 查看本地本地 datanode 启动没问题 使用 hadoop fsck /weblog/log.

hadoop集群:关于Could not obtain block:报错问题

hadoop集群:关于Could not obtain block:报错问题 在访问hdfs时,遇到了上述问题, 属于是节点问题: 然后依次查看,防火墙是否关闭,DataNode是否启动,数据块是否损坏: 检查得知问题是其二,然后在命令行对应主机重启hadoop-deamon start datanode, jps查看是已经启动了的, 再试试执行代码是否报错, 同样问题, 还有DataNode经常会自动挂掉, … 去web端看一下(主机:9870) 在LIVE NODE中发现其他节点没有真正启动起来 好了

m0_46301437的博客 1万+

使用QGIS提取天地图遥感影像中的建筑物轮廓,及AI方案

用QGIS的插件提取遥感影像中的建筑轮廓,并提供了几个AI提取建筑轮廓的方案。

cky_123的博客 2万+

记一次本机使用 Java API 读取虚拟机 HDFS 文件出错:Could not obtain block…

记一次本机使用 Java API 读取虚拟机 HDFS 文件出错:Could not obtain block… 背景 虚拟机安装 Hadoop 3.1.3,并运行了 HDFS。 使用本机 Java API 读取文件出错,在虚拟机中正常。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fzUj8BKs-1639462803170)(file:///Users/simonmao/Library/Mobile%20Documents/comappleCloudDocs/Cra

Simon的博客 4836

为什么PCB设计中的50Ω阻抗如此重要?从USB到以太网的实战解析

本文深入解析了PCB设计中50Ω特征阻抗的核心重要性及其工程权衡起源。文章从传输线理论出发,阐释了阻抗匹配对防止信号反射、确保信号完整性的关键作用,并对比了USB、以太网等不同应用场景的阻抗标准。同时,文章结合实际案例,剖析了在两层板等简单设计中实现精准阻抗控制的难点与实战解决方案。

weixin_29268385的博客 298

深入解析SVPWM七段式与五段式调制的电压波形差异及优化策略

本文深入解析了SVPWM七段式与五段式调制在相电压和线电压波形上的核心差异。七段式波形对称、谐波含量低,适合追求静音与性能的场景;五段式开关次数少、损耗低,适用于对效率与散热要求高的应用。文章提供了基于谐波与损耗权衡的优化策略与选型指南。

weixin_29216957的博客 440

关于unbuntu启动hadoop时报错org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block的解决方案

仅记录,新手有误轻喷。

weixin_53019598的博客 2541

Android 15网络子系统深度解析(一):ConnectivityService与网络管理框架全解析

深入剖析Android 15核心网络服务ConnectivityService的架构设计、NetworkAgent/Factory机制、网络状态管理、以及WiFi/移动网络切换的完整流程

Cheson的专栏 1749

[解决方案]org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block

[解决方案]org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block...报错情况查看受损block有可能当前路径下的受损block不止一个删除损坏的block 报错情况 Caused by: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: xxxxxxxxxxxxxxxxxxxx file=/p

weixin_45212094的博客 7692

一文读懂世界模型(World Model):AI的“数字大脑”,通往AGI的核心基石

世界模型正成为AI领域的关键技术,它让AI在虚拟环境中模拟物理世界规律并预测行动后果,从而减少现实试错成本。2018年Ha和Schmidhuber提出的VAE+RNN架构奠定基础,2022年后自监督学习推动快速发展。当前世界模型分为潜空间、生成式、强化学习和对象中心四大流派,已在机器人、自动驾驶、工业仿真等领域落地应用。尽管面临长时序预测误差等挑战,未来将向多模态建模、大模型融合等方向发展,成为实现具身智能和通用人工智能的核心基石。

m0_38116472的博客 811

ubuntu 18.04 + Kimera slam 安装与demo测试

环境:opencv 3.4.12,其他的都是按照文档下载的。 首先进行组件的安装 一、Kimera-VIO 安装参考文档:https://github.com/MIT-SPARK/Kimera-VIO/blob/master/docs/kimera_vio_install.md 按照文档装就好,在安装过程中碰到如下问题: 0、make 过程很卡,不要用所有的核 1、cmake过程中卡下载 ORBvoc.zip ,手动下载这个文件,解压,将里面的3个文件,放到/Kimera-VIO/vocabu.

dna葡萄糖的博客 3630

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block

使用IDEA 编译Hive源码。 启动Hive,并查询数据时报错: Failed with exception java.io.IOException:org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-533367018-172.16.69.205-1640615257526:blk_1073741857_1033 file=/user/hive/warehouse/my_db.db/emp_hive/emp

qq_45494908的博客 4423

【Android 教程系列第 30 篇】为什么要为 App 应用加固 ?如何为 App 应用加固 ?

一:为什么要为 App 应用加固 ? 二:如何为 App 应用加固 ? 三:加固后为什么要重新签名 ?

“Allen Su”的博客 7054

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1091099277-192.168.100.251-

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1091099277-192.168.100.251-1594136610548:blk_1073741848_1024 file=/test/input/wordcount.txt 这个错误就是NN与DN失联了,我的报错是在使用flink读取hdfs路径上文件的时候报的错 这个时候重启hadoop就行 根据依赖关系 可以先关闭依赖...

weixin_44519124的博客 4465

YOLO26涨点改进 | Conv篇/小目标改进 | AAAI 2025 FBRT-YOLO 两个轻量级FCM和MKP模块, 助力无人机航拍任务VisDrone、UAVDT和AI-TOD高效涨点

本文提出FBRT-YOLO26模型,通过引入两个轻量级模块FCM和MKP优化航拍图像检测性能。FCM模块通过特征互补映射解决小目标信息丢失问题,MKP模块利用多尺度卷积核增强目标感知能力。在VisDrone等数据集上的实验表明,该方法在精度和速度上均优于现有实时检测器。文章详细介绍了模块结构、核心代码实现及YAML配置文件修改方法,为航拍图像中的小目标检测提供了高效解决方案。该模型实现了检测精度与效率的良好平衡,具有实际应用价值。

Ai缝合怪、助力小伙伴高效发论文 369

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1421546975-192.168.216.200-

这个错误就是NN与DN失联了,我的报错是在下载HDFS上的文件时报的错 我的解决办法是 停掉集群 重新启动 再次执行命令 正常 我这个一个是伪集群,如果全分布式的话有的结点DN起不来,那么就需要将所有结点下的/var/abc文件夹干掉,并重新 hdfs namenode -format 格式化 ...

Yuki的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

windows 11 + kali wsl二合一配置步骤与踩坑

在前几天的某市攻防演练中,在攻防前期,我的虚拟机经常无缘无故出现断网、卡顿等现象,但找不出原因。为了不影响后续的这些天的攻防演练,我选择在一个晚上通宵 在我的windows 11系统上快速搭建了wsl的kali 无缝模式,配置好之后的第二天,即通宵之后立马就开始使用它来进行攻防作战了,体验和效果还是相当不错的。

M1n9K1n9的博客 7309

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WSL2 下启动 Webots 地址一直不对:`10.255.255.254` 的原因与修复

记录一次在 WSL2 + ROS2 Humble + Webots 环境下,webots-controller 自动使用错误 IP 地址 `10.255.255.254` 导致连接失败的问题排查过程,并给出通过直接修改 webots_ros2_driver 地址推断逻辑的解决方案。

专注机器人开发与后端系统架构,分享 ROS2、Web 全栈与工程实战经验的技术博客~ 1384

Error: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-965200530-172.21.3.1

跑hive脚本也就是mr程序时遇到以下错误: Ended Job = job_1406698610363_0394 with errors Error during job, obtaining debugging information... Examining task ID: task_1406698610363_0394_m_000014 (and more) from job jo

yonghutwo的专栏 3万+

在运行jar包时出现 Could not obtain block: BP-502585858-192.168.10.132-1648953135759:blk_1073741867_1043 fil

这个错误就是NN与DN失联了,我当前出现的错误是因为执行jar包时出现的 此时只需要重启你的Hadoop集群即可

weixin_47408244的博客 3293

hadoop错误Could not obtain block blk_XXX_YYY from any node:java.io.IOException:No live nodes contain c...

错误: 10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes contain current block. Will get new bl...

931

解决kettle整合hadoop报Could not obtain block: BP-998830852-10.0.0.45-1610881645960错误

当前环境: 阿里云CentOS6.9,CDH514,Kettle8.2 kettle整合hadoop报错:Could not obtain block: BP-998830852-10.0.0.45-1610881645960 1.kettle的版本要适应cdh的版本; 2.检查hdfs配置文件是否放到kettle的相关目录下; 3.检查namenode、datenode服务是否正常启动; 4.检查namenode、datenode、ResourceManager相关端口是否打开(我正是

高国才的博客 1188

大数据集群常见问题总结

  项目将近尾声,上线一切顺利,在开发过程中遇到了不少的问题,趁着空闲时间对项目中遇到的常见问题做一个总结,当作一个笔记,问题如下: java.io.IOException: Could not obtain block: blk_194219614024901469_1100 file=/user/hive/warehouse/src_20180124_log/src_20180124_l...

weixin_30673611的博客 613

java.io.IOException: Could not obtain block

前段时间在单机redhat上配置好了hadoop环境,今天运行wordcount例子时出现了无法获取in目录中到文件问题,不知道是否是权限问题,错误原因如下 [hadoop@lee hadoop-1.0.4]$ bin/ hadoop jar hadoop-examples-1.0.4...

969
上一篇: hive session 超时
下一篇: paimon的四种changelog模式(1)-input模式
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值