使用QJM构建HDFS HA架构(五)
来源:互联网 发布:贪吃枫淘宝店 编辑:程序博客网 时间:2024/06/06 14:59
集群规划,在以前的文档中我已经搭建好一个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
四 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
3)
On master
[hadoop@master hadoop]$ vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop/etc/hadoop/excludes</value>
</property>
<property>
<name>dfs.nameservices</name> <===(1)HDFS命名服务的逻辑名称
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name> <===(2)NameNode列表
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name> <===每个NameNode的RPC地址
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name> <===每个NameNode的RPC地址
<value>hadoop04:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name> <===(4)每个NameNode的HTTP地址
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name> <===(4)每个NameNode的HTTP地址
<value>hadoop04:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name> <===(5)Journalnode的URI地址
<value>qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name> <===(6)设置客户端与active namenode进行交互的java实现类
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name> <===(7)隔离机制(fencing):sshfence OR shell
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name> <===(7)隔离机制(fencing):sshfence OR shell
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
4)
On master
[hadoop@master hadoop]$ vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name> <===(2)Journalnode所在节点上的一个目录
<value>/opt/hadoop/journalnode/data</value>
</property>
</configuration>
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
11)
On hadoop04 《===(5)启动namenode2
[hadoop@hadoop04 name]$ hadoop-daemon.sh start namenode
12)
启动datanode
On master
[hadoop@master opt]$ hadoop-daemons.sh start datanode
13)
http://master:50070
14)
on hadoop04
15)
On master
[hadoop@master hadoop]$ hdfs haadmin-failover --forcefence --forceactive nn2 nn1
16)
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自动切换模式的实现
- 使用QJM构建HDFS HA架构(五)
- 使用QJM构建HDFS HA架构(2.2+)
- 使用QJM构建HDFS HA架构(2.2+)
- 使用QJM构建HDFS HA架构(2.2+)
- 使用 QJM 实现 HDFS 的 HA
- HDFS HA QJM
- Hadoop2.5.1 HDFS HA(QJM)
- 配置Hadoop2.0HDFS的HA以及联邦使用QJM
- HDFS HA with QJM && ResourceManager HA配置
- 基于QJM的HDFS HA总结
- HDFS HA与QJM[官网整理]
- HDFS HA与QJM[官网整理]
- HDFS QJM的架构设计
- HDFS QJM的架构设计
- HDFS利用QJM实现HA(HDFS High Availability Using the Quorum Journal Manager)
- Ubuntu上使用Hadoop 2.x 十二 HDFS Cluster HA QJM和Federation联合使用
- 如何配置Hadoop2.0HDFS的HA以及联邦使用QJM
- HDFS使用QJM实现高可用(二)
- Spring MVC @Transactional注解方式事务失效的解决办法
- Android下需注意的安全问题
- JSP之javaBean,EL表达式
- 粗糙分析设计模式-原型模式
- Ztree分级插件的使用总结
- 使用QJM构建HDFS HA架构(五)
- TCP和UDP协议
- ssm pom.xml的配置及问题
- bitShark对Android版本的支持
- RabbitMQ界面管理和命令管理
- 最近接触ZKoss的学习感受
- c++ const
- 聚类算法实践(一)——层次聚类、K-means聚类
- 蓝桥杯比赛javaB组练习《饮料换购》