时间:2021-10-16 19:19:32

Overview

记一次真真切切的NameNode单点故障。

学校机房着火之后,刀片机上的四台服务器,唯独就NameNode彻底宕掉了,去机房看了下硬盘都坏了。。

所以只能换一个master咯。基本上改一些配置文件就可以。要修改的配置如下:

core-site.xml
yarn-site.xml
mapred-site.xml
masters
slave

本以为修改完了,格式化一下新的NameNode,在start-dfs.sh和start-yarn.sh就可以了。结果进web页面发现datanode全是failed的。

曾经的血泪指引着我去看了下df -h,结果果然hadoop所在的那个分区,已经99%了。

磁盘挂载

说到这个磁盘挂载,就忍不住吐槽,我们这个服务器的磁盘不知道是谁挂的。

[root@host99 /home/hadoop-2.6.2]$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 50G 15G 33G 32% /
tmpfs 32G 216K 32G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sdb1 551G 198M 523G 1% /var/lib/mysql
/dev/sda6 399G 199M 378G 1% /var/lib/mysql/usbsda6

把两个超大的磁盘全都挂到mysql路径下是想怎样。。。

于是强迫症忍不了了,总不能让我把hadoop装到mysql路径下吧,况且多个服务器的大磁盘挂载的路径还完全不一样???

于是,重新挂载,这个时候我脑子也坑了,我想把/usr挂到/dev/sda6上面,但是我直接umount再mount了,也修改了/etc/fstab,但是我忘记备份/usr数据了。。。

mkdir /new  ###跳板目录

mount /dev/sdb1 /new  ###首先挂载跳板目录

cp -R /home/*  /new  ###复制/home目录所有数据到/new先

rm -rf /home/*       ####可选,主要为了腾出空间给原来的硬盘

我应该先挂一个空目录上去的。这一切都是因为Linux的VFS(虚拟文件系统)机制导致的,正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。

移动Hadoop

  • 为了利用重新挂载的空间,我移动了hadoop的安装路径。因此修改各种配置,基本上跟重装没什么区别了。
  • 首先是hadoop的环境变量, /etc/profile
export HADOOP_INSTALL=/home/hadoop-2.6.2

export PATH=$PATH:$HADOOP_INSTALL/bin
#export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

  然后这样which hadoop就没问题了。因为我其实最后才做这步,所以导致在启动的时候报错:找不到或无法加载主类:xxx

  • 修改各种配置文件
    • core-site.xml   主要是修改tmp.dir的位置。tmp.dir是临时的本地目录,而且缺省情况下mapred.system.dir被设置成"${hadoop.tmp.dir}/mapred/system"。所以tmp.dir是很多临时文件的根目录。包括dfs.name.dir(存放namenode原数据的地址)缺省是${hadoop.tmp.dir}/dfs/name;dfs.data.dir(存放HDFS block的地址)缺省是${hadoop.tmp.dir}/dfs/data;fs.checkpoint.dir(secondaryNameNode存放checkponits的地址)缺省是${hadoop.tmp.dir}/dfs/namesecondary。
    • <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/home/hadoop-2.6.2/tmp</value>
      <description>Abase for other temporary directories.</description>
      </property>
    • hdfs-site.xml: 主要是修改上面提到的dfs.name.dir和dfs.data.dir。其实如果保持缺省的话这个文件就不用改了。
    • <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/home/hadoop-2.6.2/dfs/name</value>
      </property>
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/hadoop-2.6.2/dfs/data</value>
  • 格式化NameNode: hadoop namenode -format  清空整个文件系统,也就是清空目录树,即原数据。所有关于dataNode的元数据都会丢失。

Finally

  • 终于一切正常了。关于Hive和Spark的配置更改用的时候再说吧- -。 心累

<Hadoop重装><centos><NameNode失效>的更多相关文章

  1. How To Setup Apache Hadoop On CentOS

    he Apache Hadoop software library is a framework that allows for the distributed processing of large ...

  2. Hadoop 2&period;0 NameNode HA和Federation实践【转】

    Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...

  3. org&period;apache&period;hadoop&period;hdfs&period;server&period;namenode&period;SafeModeException&colon; Cannot create directory &sol;user&sol;hive&sol;warehouse&sol;page&lowbar;view&period; Name node is in safe mode

    FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteExceptio ...

  4. hadoop错误FATAL org&period;apache&period;hadoop&period;hdfs&period;server&period;namenode&period;NameNode Exception in namenode join java&period;io&period;IOException There appears to be a gap in the edit log

    错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...

  5. Hadoop错误之namenode宕机的数据恢复

    情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...

  6. 启动HDFS之后一直处于安全模式org&period;apache&period;hadoop&period;hdfs&period;server&period;namenode&period;SafeModeException&colon; Log not rolled&period; Name node is in safe mode&period;

    一.现象 三台机器 crxy99,crxy98,crxy97(crxy99是NameNode+DataNode,crxy98和crxy97是DataNode) 按正常命令启动HDFS之后,HDFS一直 ...

  7. Hadoop JobTracker和NameNode运行时参数查看

      1)JobTracker运行时参数: hadoop@ubuntu:/home/zhangchao3$ ps -ef | grep job hadoop 29563 1 0 11:34 pts/12 ...

  8. 【Hadoop】Seondary NameNode不是备份NameNode!!

    昨天和舍友聊天时无意中提起Secondary NameNode,他说这是备用NameNode.我当时就有点疑惑..之后查阅了相关资料和博客,算是基本理解了什么是Secondary NameNode. ...

  9. HDFS超租约异常总结(org&period;apache&period;hadoop&period;hdfs&period;server&period;namenode&period;LeaseExpiredException)

    HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException) 转载 2014年02月22日 14:40:58 96 ...

随机推荐

  1. IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)

    IntelliJ IDEA 乱码解决方案 (项目代码.控制台等) 最近IDE从eclipse改成IntelliJ IDEA 了,原因是公司大部分人都在用这个IDE,而且一直推荐用,所以尝尝鲜.换的第一 ...

  2. 使用Dom4j进行XML解析

    1  概述 在进行ESB集成项目中,使用到了很多系统的接口,这些接口传输的数据大部分都采用了XML的格式,这样在使用ESB开发服务时就需要对XML数据进行解析或拼接的操作,本文以项目中流程服务为例,讲 ...

  3. 读javascript高级程序设计15-Ajax&comma;CORS&comma;JSONP&comma;Img Ping

    平时用惯了jQuery.ajax之类的方法,却时常忽略了它背后的实现,本文是学习了AJAX基础及几种跨域解决方案之后的一些收获. 一.AJAX——XMLHttpRequest 谈起Ajax我们都很熟悉 ...

  4. Lua标准库&lpar;转&rpar;

    转载地址:http://www.yiibai.com/lua/lua_standard_libraries.html Lua的标准库提供了一组丰富的功能,与C的API直接实现,建立在Lua编程语言函数 ...

  5. 【转】教你爱上Blocks(闭包)

    Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使用Block可以让代码更加具有易读性,而我们在写回调时,也可以直接写在函数内部,而不用再去写一个回调函数 Block 闭包 ...

  6. karma&plus;jasmine自动化测试

    1.安装nodejs,进入项目目录 2.安装karma和相关插件 npm install karma --save-dev npm install karma-jasmine karma-chrome ...

  7. less学习笔记(一)

    less的写法如下 .content { ul{ list-style: none; } li{ height: 25px; line-height: 25px; padding-left: 15px ...

  8. Example008关闭IE窗口时,不弹出询问对话框

    <!-- 实例008关闭IE主窗口时,不弹出询问对话框 --> <meta charset="UTF-8"> <a href="#&quot ...

  9. 解决mysql设置时区时的错误Unknown or incorrect time zone&colon; &&num;39&semi;Asia&sol;Shanghai&&num;39&semi;

    Mysql默认时区格式是'+8:00'的格式,这个时区可以在my.ini中[mysqld]节点下设置 default-time-zone = '+8:00' 默认这个设置是没有的 但是mysql不支持 ...

  10. SQL 字符串分割表函数

    --字符串分割表函数 ) ) declare @i int; declare @count int; ); ); declare @Index int; )) declare @rowID int; ...