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. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. CF-825E Minimal Labels 反向拓扑排序

    http://codeforces.com/contest/825/problem/E 一道裸的拓扑排序题.为什么需要反向拓扑排序呢?因为一条大下标指向小下标的边可能会导致小下标更晚分配到号码,导致字 ...

  2. android -------- 错误Attribute application@allowBackup value=(true) from AndroidManifest.xml

    开发中遇到一个问题,运行项目时,出现了一个这如下这样的问题 问题: Manifest merger failed : Attribute application@allowBackup value=( ...

  3. jq 倒计时

    引入jq 注 在IE和safari 如果时间出现NAN 将时间格式改为YYYY/MM/DD HH:MM:SS 例:var d2 = new Date("2019/02/18 15:59&qu ...

  4. 邂逅明下 HDU - 2897

    Problem description: 有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直到堆里的硬币取完,最 ...

  5. python记录_day10 动态传参 命名空间 作用域

    一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...

  6. XML注释与取消注释快捷键

    IntelliJ IDEA和eclipse中编辑Java文件时,注释和取消注释的快捷键都是: "CTRL + / " 编辑xml文件时, 注释:CTRL + SHIFT + / 取 ...

  7. C语言实现哈夫曼编码(最小堆,二叉树)

    // 文件中有通过QT实现的界面#include <stdio.h> #include <stdlib.h> #include <string.h> typedef ...

  8. noip2013转圈游戏

    题目描述 n个小伙伴(编号从 0到 n−1)围坐一圈玩游戏.按照顺时针方向给 n个位置编号,从0 到 n−1.最初,第 0号小伙伴在第 0号位置,第 1号小伙伴在第 1 号位置,……,依此类推. 游戏 ...

  9. 自签名证书说明——自签名证书的Issuer和Subject是一样的。不安全的原因是:没有得到专业SSL证书颁发的机构的技术支持?比如使用不安全的1024位非对称密钥对,有效期设置很长等

    一般的数字证书产品的主题通常含有如下字段:公用名称 (Common Name) 简称:CN 字段,对于 SSL 证书,一般为网站域名:而对于代码签名证书则为申请单位名称:而对于客户端证书则为证书申请者 ...

  10. dvwa安装、配置、使用教程(Linux)

    一.搭建LAMP环境 首先搭建好LAMP环境,如没配好参见“Linux+Apache+MySQL+PHP配置教程” 或者使用官方推荐的XAMPP:https://www.apachefriends.o ...