文档章节

Hadoop CDH4.5 NameNode HA方案实战

China_OS
 China_OS
发布于 2014/05/22 16:32
字数 1331
阅读 166
收藏 0
点赞 0
评论 0

本篇实战Hadoop2.0 NameNode的HA方案,采用QJM的自动故障转移方案。

Hadoop集群信息如下(增加了U-7):

192.168.1.10    U-1  Active-NameNode  zkfc
192.168.1.20    U-2  DataNode  zookeeper  journalnode
192.168.1.30    U-3  DataNode  zookeeper  journalnode
192.168.1.40    U-4  DataNode  zookeeper  journalnode
192.168.1.50    U-5  DataNode
192.168.1.70    U-7  Standby-NameNode  zkfc
        U-7的系统初始化和之前的机器一样,安装JDK,修改/etc/hosts,设置时钟同步等等。不过因为NameNode要和DataNode进行ssh无密码登陆,所以除了U-1要和DataNode进行无密码登陆外, U-7也要和DataNode进行无密码登陆,以上是基本的配置。由于NameNode、DataNode、zookeeper之前已经在集群中配置完毕,所以本篇只要配置U-7及journalnode。为了信息明确,在各个节点不启动mapreduce相关进程,只操作hdfs。


1    安装journalnode服务(U-2/3/4)

apt-get install hadoop-hdfs-journalnode

2    因为要配置fencing服务,所以需要active和standby节点的hdfs用户可以进行无密码ssh相互登陆,注意必须是hdfs用户

        登陆U-1,执行如下命令

#切换到hdfs用户
su - hdfs

#生成相关ssh密钥对
ssh-keygen

#CDH的hads用户家目录在/var/lib/hadoop-hdfs目录,进入该目录下的.ssh目录
cd /var/lib/hadoop-hdfs/.ssh

#拷贝id_rsa.pub到U-7的/var/lib/hadoop-hdfs/.ssh/authorized_keys文件
#注意这时候U-7上面还没有该目录,可以在U-7上面先执行ssh-keygen
scp id_rsa.pub hdfs@U-7:/var/lib/hadoop-hdfs/.ssh/authorized_keys

          登陆U-7,执行和上面U-1类似的步骤,最终效果就是U-1和U-7的hdfs用户可以无密码ssh相互登陆,要不然zkfc会启动失败。 

3    在U-7上创建namenode.dir相关目录

mkdir /data
chown hdfs:hadoop /data

4    创建journalnode的edit日志目录(U-2/3/4)

mkdir /jdata
chown hdfs:hdfs /jdata
5    假如我们的hadoop集群的 NameService ID为mycluster,下面配置core-site.xml(U-1)

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster/</value>
  </property>

  <property>
    <name>ha.zookeeper.quorum</name>
    <value>U-2:2181,U-3:2181,U-4:2181</value>
  </property>
</configuration>
6    接着配置hdfs-site.xml(U-1)

<configuration>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>

  <property>
     <name>dfs.namenode.name.dir</name>
     <value>/data</value>
  </property>

  <property>
     <name>dfs.datanode.data.dir</name>
     <value>/data01,/data02</value>
  </property>

  <property>
     <name>dfs.nameservices</name>
     <value>mycluster</value>
  </property>

<!--  HA Config  -->
  <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>U-1,U-7</value>
  </property>

  <property>
      <name>dfs.namenode.rpc-address.mycluster.U-1</name>
      <value>U-1:8020</value>
  </property>

  <property>
      <name>dfs.namenode.rpc-address.mycluster.U-7</name>
      <value>U-7:8020</value>
  </property>

  <property>
      <name>dfs.namenode.http-address.mycluster.U-1</name>
      <value>U-1:50070</value>
  </property>

  <property>
      <name>dfs.namenode.http-address.mycluster.U-7</name>
      <value>U-7:50070</value>
  </property>

  <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://U-2:8485;U-3:8485;U-4:8485/mycluster</value>
  </property>

  <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/jdata</value>
  </property>

  <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

  <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
  </property>

  <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/var/lib/hadoop-hdfs/.ssh/id_rsa</value>
  </property>

  <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
  </property>
</configuration>

7    把U-1上的core-site.xml和hdfs-site.xml文件同步到U-2/3/4/5/7节点的相同目录下

8    安装zkfc服务(U-1/7)

apt-get install hadoop-hdfs-zkfc
9    安装完zkfc后,你需要初始化以创建znode,在随便一台NameNode上执行即可(U-1)

su - hdfs hdfs zkfc -formatZK
10    如果你是从non-HA模式转换到HA模式,则需要初始化共享edits目录(U-1)

su - hdfs hdfs namenode -initializeSharedEdits
11   下面开始启动各个节点的相关进程

        1    启动Journal Node(U-2/3/4)

service hadoop-hdfs-journalnode start
         2    格式化Active NameNode(U-1)

sudo -u hdfs hadoop namenode -format
         3     如果你是从non-HA模式转换到HA模式,则需要初始化共享edits目录(U-1)

su - hdfs hdfs namenode -initializeSharedEdits

                注意:如果你不格式化,则NameNode不会启动成功

        4    删除DataNode上的数据(U-2/3/4/5)

rm -fr /data01/* /data02/*

                第3步执行完毕后,会创建空的fsimage文件和edit log,以及随机生成的storage ID。DataNode连接到NameNode后会获取到这个storage ID,这样以后就拒绝连接到其他namenode。如果要重新格式化namenode,那么必须删除所有datanode的数据,因为其保护了storage ID信息。因为我们用的是老的集群,之前在DataNode上面存有数据,如果再次重新格式化NameNode,DataNode在启动会失败,所以要删除DataNode上的老数据

                注意:如果你本来就是新的集群,则不需要执行以上步骤

        5    启动Active NameNode(U-1)

service hadoop-hdfs-namenode start
          6    初始化S tandby NameNode(U-7)

su - hdfs hdfs namenode -bootstrapStandby

            当Active NameNode完成格式化后,StandBy NameNode不能通过相同的方式进行格式化,因为这样会导致出现不一致的namespace id,使得DataNode不能同时与两个NameNode交互。StandBy NameNode需要与Active NameNode同步信息

         7    启动Standby NameNode(U-7)

service hadoop-hdfs-namenode start
           8    启动zookeeper(U-2/3/4) 

service zookeeper-server start
           9     启动ZKFC(U-1/7)

service hadoop-hdfs-zkfc start

        10  启动DataNode(U-2/3/4/5)

service hadoop-hdfs-datanode start

12   下面挑选U-1/3/5/7节点,查看都运行了哪些服务


13    查看U-1/7的NameNode各处于什么状态


            可以看到U-1处于active状态,而U-7处于standby状态

14    模拟一个故障转移


        可以看到U-7以及转移到active状态了,U-1进入standby状态。

15    直接kill掉U-7的NameNode,然后看结果


        可以看到kill掉U-7的NameNode后,U-1自动转入active状态,而这时也链接不上U-7的NameNode了。也可以在浏览器通过IP:50070查看各个NameNode 的状态。





© 著作权归作者所有

共有 人打赏支持
China_OS
粉丝 403
博文 438
码字总数 487778
作品 0
徐汇
技术主管
Hadoop CDH4.5升级CDH5 以及NameNode和YARN HA实战

CDH5支持很多新特性,所以打算把当前的CDH4.5升级到CDH5,软件部署还是以之前的CDH4.5集群为基础 192.168.1.10 U-1 (Active) hadoop-yarn-resourcemanager hadoop-hdfs-namenode hadoop-mapr...

China_OS
2014/05/27
0
0
Hadoop HA 是什么?架构?

Hadoop HA 是什么? Hadoop HA架构详解 1.1 HDFS HA背景 HDFS集群中NameNode 存在单点故障(SPOF)。对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直...

weixin_39915358
05/06
0
0
Hadoop-2.6.0集群搭建(多机环境HDFS HA+YARN HA,推荐)

搭建 HDFS HA 和 ResourceManager HA 集群 下载Hadoop: http://hadoop.apache.org/releases.html 集群规划 HDFS HA说明 Hadoop 2.x中通常由两个NameNode组成,一个处于Active状态,另一个处...

翻船全靠浪
2016/04/25
66
0
Hadoop基础之HA(高可用)

1.Hadoop2.0产生背景 早期的hadoop版本,NN(namenode)是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法 使用。为了解决这个问题,出现了一堆针对HDF...

landy8530
2017/11/25
0
0
实战hadoop2.6.3+zookeeper3.4.6+hbase1.0.2高可用集群方案

实战hadoop2.6.3+zookeeper3.4.6+hbase1.0.2高可用集群方案 一、安装前准备 1.环境5台 2、修改hosts文件 [root@hadoop01 ~]# cat /etc/hosts 192.168.10.201hadoop01 192.168.10.202hadoop0......

jxzhfei
2016/08/08
0
0
HADOOP的HA部署方案

一、准备服务器环境 1.1、服务器规划 Hadoop2 HA Cluster Host IP NameNode JournalNode FailoverController DataNode nn1 192.168.50.221 Y Y Y N nn2 192.168.50.222 Y Y Y N dn1 192.168.......

ifree613
2016/03/04
508
0
Hadoop 2.0中单点故障解决方案总结

项目构建 Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,该问题在很长时间...

jackwxh
06/29
0
0
3、HDFS的HA原理及配置

原理: 1、如何保证两个NameNode之间的数据同步? active记录日志的时候,需要往外部存储系统(qjounal)中记录一份,然后standby的NameNode从qjounal中读取数据,然后进行checkpoint(也就是...

刘付kin
2016/11/30
8
0
Hadoop基础之HA的安装与配置

即上篇文章Hadoop基础之HA(高可用)之后,本文将介绍HDFS HA的搭建与配置。参考官方文档:http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWith...

landy8530
2017/11/25
0
0
hadoop全分布式高可用方案

集群规划: 主机名 IP 安装的软件 运行的进程 hadoop01 192.168.88.155 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain hadoop02(A)192.168.88.164 jdk、hadoo......

泡海椒
2015/12/20
561
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
1
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
0
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
0
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
0
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
1
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
0
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
0
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部