<Hadoop重装><centos><NameNode失效>

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/*       ####可选,主要为了腾出空间给原来的硬盘
View Code

我应该先挂一个空目录上去的。这一切都是因为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"
View Code

  然后这样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>
      View Code
  • 格式化NameNode: hadoop namenode -format  清空整个文件系统,也就是清空目录树,即原数据。所有关于dataNode的元数据都会丢失。

Finally

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

转载于:https://www.cnblogs.com/wttttt/p/6836744.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值