HDFSblock丢失过多进入安全模式(safemode)的解决方法

HDFS block丢失过多进入安全模式(Safe mode)的解决方法

背景及现象描述(Background and Symptom)

因磁盘空间不足,内存不足,系统掉电等其他原因导致dataNode datablock丢失,出现如下类似日志:

The number of live datanodes 3 has reached the minimum number 0.

Safe mode will be turned off automatically once the thresholds have been reached.

Caused by: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled.

Name node is in safe mode.

The reported blocks 632758 needs additional 5114 blocks to reach the threshold 0.9990

of total blocks 638510.

The number of live datanodes 3 has reached the minimum number 0.

Safe mode will be turned off automatically once the thresholds have been reached.

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode

(FSNamesystem.java:1209)

... 12 more

原因分析(Cause Analysis)*

由于系统断电,内存不足等原因导致dataNode丢失超过设置的丢失百分比,系统自动进入安全模式

解决办法(Solution)*

安装HDFS客户端,并执行如下命令:

步骤 1 执行命令退出安全模式:hadoop dfsadmin -safemode leave

步骤 2 执行健康检查,删除损坏掉的block。 hdfs fsck / -delete

注意: 这种方式会出现数据丢失,损坏的block会被删掉

集群机器意外断电重启,导致hbase 无法正常启动,抛出reflect invocation异常,可能是正在执行的插入或合并等操作进行到一半时中断,导致部分数据文件不完整格式不正确或在hdfs上block块不完整。

在网上查了一下相关资料,怀疑有可能是关闭前一些未提交的修改所存放的log文件数据写入一半文件不完整,故把hbase.hlog.split.skip.errors改成true进行尝试。

关于这个参数作用的解释:

当服务器奔溃,重启的时候,会有个回放的过程,把/hbase/WAL/下面记录的log都回放一遍,合并到每个region中,回放过程中如果有error发生,这个参数又是false,那么exception就会向外层输出,回放失败。

但是很遗憾,将此参数修改后hbase集群仍然无法正常启动。

然后就琢磨其他原因,先观察hbase启动时的60010监控页面,

发现部分region FAILED_OPEN错误,its007-meta表一共200个region,只启动成功199个。

似乎想到了什么,对了,很可能是这个region的数据文件格式不正确,那就先检查一下其在hdfs上的文件是否正常。

果不其然,观察hadoop的50070页面,会提示hadoop文件系统的具体路径上有两个数据块出错。

(关于hbase在hdfs上的目录相关文章链接:HBase在HDFS上的目录树)

解决方法:

1.运行hadoop fsck / -files检查hdfs文件

2.发现/hbase/oldWALs目录下有一个文件损坏,

运行hadoop fsck / -delete清除损坏的文件

3.运行hbase hbck -details查看hbase概况,发现Table its007-meta有一个region加载失败

4.运行hbase hbck -fixMeta尝试修复系统元数据表

5.运行hbase hbck -fix尝试修复region数据不一致问题。

6.再次运行hbase hbck -details发现问题仍然未修复,那个region仍然加载失败。

故直接将该region下出错的文件移走,暂时移至hdfs根目录

hadoop fs -move /hbase/data/default/its007-meta/fe6463cba743a87e99f9d8577276bada/meta/9a853fdbe13046fca194051cb9f69f9b/

fe6463cba743a87e99f9d8577276bada是region的名字

9a853fdbe13046fca194051cb9f69f9b是region下出错的HFile,有800k大小(注:一个region下可以有多HFile)

7.运行hbase hbck -fix重新加载之前失败的region,至此完成修复,丢弃了出错的HFile

总结:

hbase在hdfs上一共两个文件损坏。(关于hdfs文件写入相关文章:hdfs文件写入相关概念)

一个是oldWALs下的,这个是存放一些没用的HLog文件的,这里有文件损坏,说明从WALs中转移没用的HLog写到oldWALs下时,写了一半断电导致hdfs上文件数据块出错;

另一个是region下一个HFile文件损坏,这个文件800k比较小,应该是从Memstore flush到HFile时,写了一半没写完导致其在hdfs上的文件数据块出错。

时间: 2024-08-13 18:21:01

HDFSblock丢失过多进入安全模式(safemode)的解决方法的相关文章

office 2003的word提示:使用安全模式打开的解决方法

  office 2003的word提示:使用安全模式打开的解决方法 word用安全模式打开 office 2003的word提示:使用安全模式打开的原因: word自带的模板文件被破坏; office 2003的word提示:使用安全模式打开的解决方法: 删除模板文件即可解决,试试下面的简单的方法: 1.关闭所有打开的Word文档. 2.复制下面的命令. %appdata%microsofttemplates 3.开始按钮 → 运行 → 粘贴上面复制的命令 → 确定. 4.在打开的文件夹下,找

使用word提示“WORD上次启动时失败,以安全模式启动”的解决方法

导致的原因: Word 通用模板文件Normal.dot出错.有可能是Acrobat Reader.金山词霸之类的word插件往Normal.dot文件中写入内容而产生冲突,并非病毒所导致. Word以安全模式启动的解决方法 1.双击"我的电脑"-工具-文件夹选项-查看-把"隐藏文件和文件夹"选项的属性设置为"显示所有文件和文件夹"然后确定. 2.打开路径C:Documents and SettingsAdministratorapplicati

Win7提示丢失MSVCP100.dll错误窗口的解决方法

  在win7系统下,近期有部分用户在运行程序或正常操作电脑时,系统却弹窗出现"无法启动程序,因为计算机中丢失MSVCP100.dll"的错误提示,很多用户遇到该错误时,都束手无措,不知道如何解决,对于这类问题,小编为您带来了解决方法,下面我们一起看下吧! 解决方法: 用户下载并且安装Microsoft Visual C++vc2010运行库即可解决所遇到的问题! Microsoft Visual C++vc2010运行库(VC2010运行库下载)官方版大小:8.61 MB 版本: 环

Win7系统aliedit.dll丢失导致程序软件发生错误解决方法

  Aliedit.dll是保护淘宝密码的空间,一定程序上保护用户账号安全,最近用户在win7系统逛淘宝的时候会提示程序错误,影响正常操作,怎么回事呢?主要是aliedit.dll丢失或是损坏导致的,那该怎么修复呢?其实解决方法其实很简单.下面小编告诉大家修复方法. 1.按"Win+R"调出"运行"窗口,输入:regsvr32 c:windowssystem32alieditaliedit.dll; 2.检查出IE浏览器里的插件管理器是否可看到这个插件,然后运行 r

IE中JS跳转丢失referrer问题的2个解决方法_javascript技巧

曾整理过一个各种页面跳转方法中referrer丢失的情况,其中提到,在IE中,使用类似 location.href = "a.html"这样的方式跳转页面时,在目标页面中 document.referrer的值会是空.这应该是IE的一个 bug. 大多数情况下,这个问题不会给我们带来麻烦,但有时候我们不得不用JavaScript来跳转,同时又要在下一个页面收集 document.refer,这时就得想想其他办法了. Form GET方法 首先想到的是使用Form表单,用JS发起一个GE

开机只能进入安全模式的解决方法

  大家长期使用电脑的朋友就会知道,我们电脑的安全模式其实就是我们XP系统中的其中一种模式,那么我们电脑在该模式下能够检查和修复我们电脑系统错误的一些问题,更够解决到电脑系统故障,但是有用户就在反应说打开计算机就直接进入到了安全模式,这个是怎么回事呢,因为一般是我们要选择才会进入安全模式的,解决方法小编马上给大家分享. xp开机进入安全模式的解决方法如下: 1.首先我们打开电脑以后进入了安全模式,先关闭掉电脑中的所有运行程序. 2.然后在Windows任务栏直接用鼠标单击打开我们的"开始&quo

Win7打开word提示word以安全模式启动的原因及解决方法教程

word是一款的办公软件,主要用于编辑和处理文档里面的内部数据,有些Win7系统用户每次打开word时都会弹出提示"word以安全模式启动",出现这种情况该如何解决呢?下面小编为大家分享Win7打开word提示"word以安全模式启动"的解决方法.一起去看看吧! 故障原因:会出现word以安全模式启动的提示是因为word的Normal.dot模板损坏,这是用于word自动保存的模板,导致他损坏的原因可能是编辑过程中电脑突然断电或软件异常关闭. 解决方法: 1.只要删

Win7中快捷方式图标丢失问题的解决方法

有时在我们安装程序后或使用一些优化清理软件后,win7会突然出现软件快捷图标丢失问题,但是,如果你双击此丢失快捷图标仍然可以启动程序,虽然不影响我们的正常操作,但是却大跌我们的眼球,让人感觉很是不爽.- 有人也许会尝试在快捷方式属性里更改图标,但结果也是无济于事,但个别图标在我们重装了程序后能够解决修正过来,但是有些重装后也没用.出现这个问题最多的软件是360安全卫士.QQ等等~~!好吧!下面是小编整理的几种解决方法,需要的同学就试试吧~!Windows7系统中快捷图标丢失问题解决办法: 解决方

ntoskrnl.exe丢失系统无法启动的解决方法_应用技巧

这阵子,家里电脑系统启动不了啦.出现提示"因以下文件损坏或丢失Windows无法启动%systemroot%\system32\ntoskrnl.exe,请重新安装以上文件的拷贝."很是郁闷,然后重启,按F8进入安全模式,没问题.有时,多启动几次(硬重启),嘿,就好了.ntoskrnl.exe文件是关键.    先了解这个ntoskrnl.exe文件是何许人物. ntoskrnl - ntoskrnl.exe - 进程信息  进程文件: ntoskrnl 或者 ntoskrnl.exe