使用QJM构建HDFS HA架构(五)

集群规划,在以前的文档中我已经搭建好一个hadoop2.6.0的非集群环境,我们就在这个基础之上搭建HA
在这里插入图片描述

QJM的集群实现方式

操作系统的基本配置

(可以参考hadoop2.6.0三个节点集群环境搭建(一))

Hadoop的安装

(可以参考hadoop2.6.0三个节点集群环境搭建(一))

hdfs-site.xml配置(HA)

(1) HDFS命名服务的逻辑名称
(2) NameNode列表
(3) 每个NameNode的RPC地址
(4) 每个NameNode的HTTP地址
(5) Journalnode的URI地址
(6) 设置客户端与active namenode进行交互的java实现类
(7) 隔离机制(fencing):sshfence OR shell --sshfence要确保主机之间建立了信任关系

四 Core-site.xml配置(HA)

(1)缺省的目录前缀
(2)Journalnode所在节点上的一个目录

五 HDFS HA服务启动

(1)启动journalnode
(2)初始化journalnode
(3)启动namenode1,先格式化再启动(如果是已有的集群则不用格式化)
(4)启动namenode2,让nn2从nn1上拉取最新的fsimage
(5)启动datanode
(6)将namenode1状态切换为active

实施步骤:

如果是新环境可以参考hadoop2.6.0三个节点集群环境搭建(一)将软件部署上即可

假设你已经将hadoop 2.6.0部署到了master节点

1)

On master

[hadoop@master ~]$ cd/opt/hadoop/etc/hadoop/

[hadoop@master hadoop]$ vi hadoop-env.sh <===java环境变量

export JAVA_HOME=/usr/java/default

2)

On master

[hadoop@master hadoop]$ vi slaves

slave1

slave2

On master
[hadoop@master hadoop]$ vi hdfs-site.xml

dfs.namenode.secondary.http-address master:9001 dfs.namenode.name.dir file:/opt/hadoop/dfs/name dfs.datanode.data.dir file:/opt/hadoop/dfs/data dfs.replication 2 dfs.webhdfs.enabled true dfs.hosts.exclude /opt/hadoop/etc/hadoop/excludes dfs.nameservices <===(1)HDFS命名服务的逻辑名称 ns1 dfs.ha.namenodes.ns1 <===(2)NameNode列表 nn1,nn2 dfs.namenode.rpc-address.ns1.nn1 <===每个NameNode的RPC地址 master:9000 dfs.namenode.rpc-address.ns1.nn2 <===每个NameNode的RPC地址 hadoop04:9000 dfs.namenode.http-address.ns1.nn1 <===(4)每个NameNode的HTTP地址 master:50070 dfs.namenode.http-address.ns1.nn2 <===(4)每个NameNode的HTTP地址 hadoop04:50070 dfs.namenode.shared.edits.dir <===(5)Journalnode的URI地址 qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns1 dfs.client.failover.proxy.provider.ns1 <===(6)设置客户端与active namenode进行交互的java实现类 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods <===(7)隔离机制(fencing):sshfence OR shell sshfence dfs.ha.fencing.ssh.private-key-files <===(7)隔离机制(fencing):sshfence OR shell /home/hadoop/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000

4)

On master

[hadoop@master hadoop]$ vi core-site.xml

fs.defaultFS hdfs://ns1 hadoop.tmp.dir /opt/hadoop/tmp dfs.journalnode.edits.dir <===(2)Journalnode所在节点上的一个目录 /opt/hadoop/journalnode/data

5)
On slave1、slave2、hadoop04
[hadoop@slave1 hadoop]$ mkdir -p /opt/hadoop/journalnode/data

[hadoop@slave2 hadoop]$ mkdir -p /opt/hadoop/journalnode/data

[hadoop@hadoop04 hadoop]$ mkdir -p /opt/hadoop/journalnode/data

6)

On master

[hadoop@master hadoop]$ scp -r hdfs-site.xml hadoop04:/opt/hadoop/etc/hadoop

[hadoop@master hadoop]$ scp -r hdfs-site.xml slave1:/opt/hadoop/etc/hadoop

[hadoop@master hadoop]$ scp -r hdfs-site.xml slave2:/opt/hadoop/etc/hadoop

[hadoop@master hadoop]$ scp -r core-site.xml hadoop04:/opt/hadoop/etc/hadoop

[hadoop@master hadoop]$ scp -r core-site.xml slave1:/opt/hadoop/etc/hadoop

[hadoop@master hadoop]$ scp -r core-site.xml slave2:/opt/hadoop/etc/hadoop

注意:如果是新搭建系统则将hadoop的软件家目录整个考过去即可

[hadoop@master opt]$ scp -r hadoop-2.6.0 hadoop04:/opt

[hadoop@master opt]$ scp -r hadoop-2.6.0 slave1:/opt

[hadoop@master opt]$ scp -r hadoop-2.6.0 slave2:/opt

7)

启动journalnode <===(1)启动journalnode

On hadoop04

[hadoop@hadoop04 ~]$ hadoop-daemon.sh start journalnode

也可以在master节点执行

hadoop-daemons.sh --hostnames ‘slave1 slave2’ start journalnode

8)

On master <===(2)初始化journalnode

[hadoop@master ~]$ hdfs namenode -initializeSharedEdits

注意:如果是新环境则需要先执行namenode的格式化,再去执行journalnode的初始化

[hadoop@master ~]$ hdfs namenode -format -clusterid hd260

9)

On master 《===(3)启动namenode1

[hadoop@master opt]$ hadoop-daemon.sh start namenode

10)

从master节点拉取fsimage信息

On hadoop04 《====(4)让nn2从nn1上拉取最新的fsimage

[hadoop@hadoop04 name]$ hdfs namenode –bootstrapStandby

On hadoop04 《===(5)启动namenode2

[hadoop@hadoop04 name]$ hadoop-daemon.sh start namenode

启动datanode

On master

[hadoop@master opt]$ hadoop-daemons.sh start datanode

http://master:50070
在这里插入图片描述

14)

on hadoop04

在这里插入图片描述

On master

[hadoop@master hadoop]$ hdfs haadmin-failover --forcefence --forceactive nn2 nn1

在这里插入图片描述

17)

on hadoop04

在这里插入图片描述

切换测试的一些命令可以自行测试
首先将nn2启动
[hadoop@hadoop04 data]$ hadoop-daemon.sh start namenode 《===此时,nn1是active,nn2是standby
然后从nn1切换到nn2
[hadoop@master hadoop]$ hdfs haadmin -failover --forcefence --forceactive nn1 nn2
[hadoop@hadoop04 name]$ hdfs haadmin -transitionToStandby nn1
[hadoop@master opt]$ hdfs haadmin -transitionToActive nn1

以上实验都是HDFS HA服务启动及手工切换,下一节将配置 基于ZK自动切换模式的实现

作者:forever19870418
来源:CSDN
原文:https://blog.csdn.net/forever19870418/article/details/64126621
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值