IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据运维:datanode启动后挂了Initialization failed for Block pool <registering> -> 正文阅读

[大数据]大数据运维:datanode启动后挂了Initialization failed for Block pool <registering>

1.案发现场还原

? ? ?datanode节点因为坏盘,机器卡死掉线,datanode退役。把坏盘目录去掉后,重启datanode后,出现运行一会后dn自动挂掉的情况。

? ?查看日志报错如下:

1月 8, 上午10点26:12.689	WARN	org.apache.hadoop.hdfs.server.common.Storage	
Failed to analyze storage directories for block pool BP-465426754-10.5.32.151-1456251355718
java.io.IOException: BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop8/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718
	at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.loadBpStorageDirectories(BlockPoolSliceStorage.java:212)
	at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.recoverTransitionRead(BlockPoolSliceStorage.java:244)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:477)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
	at java.lang.Thread.run(Thread.java:745)
11月 8, 上午10点26:12.690	WARN	org.apache.hadoop.hdfs.server.common.Storage	
Failed to add storage for block pool: BP-465426754-10.5.32.151-1456251355718 : BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop8/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718
11月 8, 上午10点26:12.690	INFO	org.apache.hadoop.hdfs.server.common.Storage	
Storage directory [DISK]file:/hadoop9/dfs/dn/ has already been used.
11月 8, 上午10点26:12.722	INFO	org.apache.hadoop.hdfs.server.common.Storage	
Analyzing storage directories for bpid BP-465426754-10.5.32.151-1456251355718
11月 8, 上午10点26:12.722	WARN	org.apache.hadoop.hdfs.server.common.Storage	
Failed to analyze storage directories for block pool BP-465426754-10.5.32.151-1456251355718
java.io.IOException: BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop9/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718
	at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.loadBpStorageDirectories(BlockPoolSliceStorage.java:212)
	at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.recoverTransitionRead(BlockPoolSliceStorage.java:244)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:477)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
	at java.lang.Thread.run(Thread.java:745)

核心最后fetal报错如下,dn服务停止:?

11月 8, 上午10点26:12.723	WARN	org.apache.hadoop.hdfs.server.common.Storage	
Failed to add storage for block pool: BP-465426754-10.5.32.151-1456251355718 : BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop9/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718
11月 8, 上午10点26:12.723	FATAL	org.apache.hadoop.hdfs.server.datanode.DataNode	
Initialization failed for Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd) service to bd15-21-33-62/10.90.48.127:8040. Exiting. 
java.io.IOException: All specified directories are failed to load.
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
	at java.lang.Thread.run(Thread.java:745)
11月 8, 上午10点26:12.723	WARN	org.apache.hadoop.hdfs.server.datanode.DataNode	
Ending block pool service for: Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd) service to bd15-21-33-62/10.90.48.127:8040
11月 8, 上午10点26:12.723	INFO	org.apache.hadoop.hdfs.server.datanode.DataNode	
Removed Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd)
11月 8, 上午10点26:14.724	WARN	org.apache.hadoop.hdfs.server.datanode.DataNode	
Exiting Datanode
11月 8, 上午10点26:14.726	INFO	org.apache.hadoop.util.ExitUtil	
Exiting with status 0
11月 8, 上午10点26:14.729	INFO	org.apache.hadoop.hdfs.server.datanode.DataNode	
SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at bd15-21-131-85/10.21.131.85
************************************************************/

?2. 分析解决

? ? 因为这种是一个大类报错,抛出的异常

排查1:?namenode 和 datanode 集群 ID 不匹配?

? ? ?仔细查看了异常节点的所有数据盘符下的clusterid和namenode的ClusterID发现并没有不同,排除此方法。

?尖叫提示:

? ? ? 注意,这种clusterID不一致的情况,一般是是集群namenode 格式化时才会出现的情况,比如集群下线了一个节点,然后重新格式化namenode,再把已经下线的节点上线集群,发现报错,clusterid不一致(因为格式化集群会重新分配clusterid),这种clusterid不一致的一般是小白学习中才会出现的,生产集群你给我格式化namenode看看,老板会让你怀疑人生,牢底坐穿。

? ? ? 所以这种解决方式比如重新格式化namenode,格式化集群肯定可以解决问题,但是不具有实际实操意义。跟你重装一下集群一个道理,简单粗暴没啥意义。

?排查2: uuid不一致的问题?

? ? ? ? ? 其实一般不会有这种问题,比如uuid不一致等。? ? ? ? ??

排查3:磁盘数据目录有异常,读取数据异常,造成整个节点挂了。

开启日志的debug模式,查看详细信息,慎用,因为会有大量日志,记得关闭

?

日志查看是/hadoop7数据目录有问题,进入查看,

?问题解决:

? ? ?发现hadoop7目录下有个数据目录权限异常,造成加载失败,造成整个dn加载失败,无法注册。首先把/hadoop7目录直接从datanode的data_dir中删除。重新启动dn即可。

尖叫提示:

? ? ? ? ?有时候报错只是一个大类的报错,抛出的异常,诱因有可能有多种。所以这个时候去查看详细的日志,debug日志,看日志从哪里开始异常的,逐步排查,而不是直接查看fetal失败的日志去百度,大类报错很难百度到问题。生产集群一个大类报错往往有很多种诱因造成,排查是个细致活,尽可能查看详细的日志。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:21  更:2021-11-09 19:37:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:58:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码