文档章节

Hadoop CDH4.5 NameNode HA方案实战

China_OS
 China_OS
发布于 2014/05/22 16:32
字数 1331
阅读 171
收藏 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
粉丝 413
博文 455
码字总数 512400
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

C4C销售订单行项目价格维护方法

需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域。 如下图所示: 下面是具体配置。 Business Configuration里,点击Sales Order的配置: ...

JerryWang_SAP
28分钟前
5
0
deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
今天
7
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
184
5
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
22
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部