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的配置更改用的时候再说吧- -。 心累

最新文章

  1. D3D9 优化小技巧
  2. SpringMVC的简单示例
  3. httpServer V1
  4. jmeter linux使用经验小结
  5. 《University Calculus》-chape10-向量与空间几何学-向量夹角
  6. getgpc($k, $t=&#39;GP&#39;),怎么返回的是 NULL?
  7. groovy安装 ideal
  8. Vijos P1459 车展 (treap 任意区间中位数)
  9. MYSQL ERROR 1045 (28000) Access denied for user (using password YES)问题的解决
  10. u3d不显示阴影的处理方法
  11. 【题解】JSOIWC2019 Round1
  12. wxPython:消息对话框MessageDialog
  13. 2017战略No.2:开始电子化记账
  14. java日志之log4j简单使用
  15. 38-解决Fiddler查看Post参数中文乱码的问题
  16. 作业要求20181113-4 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 02
  17. daemon not running的解决办法
  18. Python3.x time模块
  19. 过滤xss攻击脚本
  20. vue-router爬坑记

热门文章

  1. ERROR: java.lang.NullPointerException的一种情况
  2. web功能模块测试用例(模板)
  3. rsync+inotify
  4. mybatis使用@param(&quot;xxx&quot;)注解传参和不使用的区别
  5. python BeautifulSoup 介绍--安装
  6. HomeBrew的安装和简单使用
  7. Qt Widgets——子区域和子窗口
  8. samba共享文件夹设置
  9. rnnlib依赖ubuntu环境配置
  10. win10与centos7的双系统U盘安装(三:win10启动项的恢复)