`

hadoop2 ha概念特点 搭建手工切换ha的hdfs集群

 
阅读更多

 

 

0 ha简介:

 

high availibility: 高可靠,有两个namenode节点在运行,一个是active状态 一个是standby状态,此两个namenode要保持内部数据一致性
通过journalnode集群实现namenode内部数据一致性,active状态的namenode像journalnode集群写入数据,standby状态的namenode从journalnode集群读入数据
当active状态的namenode宕机下,可以自动或者手动方式将standby状态的namenode变成active状态

 

真实环境中如何确认不同机器担任何种角色?
答: namenode适合于大内存机器 datanode适合于大硬盘机器 journalnode对内存和硬盘要求不高无特殊需要

 

 

 

 

1 准备5个节点虚拟机,分配功能如下
namenode:h2master h2master2
datanode:h2sliver112 h2sliver113 h2sliver114
journalnode:h2master h2master2 h2sliver112

 

2 准备初始环境:

将5个节点机器的静态IP,机器别名,IP和别名映射关系(vi /etc/hosts 内写所有节点映射关系),防火墙关闭设置好

 

3 5台机器各自ssh互通

 

a) 在各自机器中生成各自机器ssh秘钥(ssh-keygen -t rsa),并cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys生成各自公钥
 
b) 分别在其余四台机器中通过命令ssh-copy-id -i h2master 将各自机器公钥拷贝到h2master中,
  后在h2master中,通过scp /root/.ssh/authorized_keys  其余四个机器别名:/root/.ssh 拷贝回去
  这样实现5台机器相互之间无密码下ssh连接
  
4  在h2master内安装jdk,配置环境变量,后拷贝到其余四个节点:

 

scp  /etc/profile  h2master2:/etc/profile
scp -r /usr/local/jdk1.7  h2master2:/usr/local/ 

或者写脚本执行:
# vi mysh.sh
#!/bin/sh
for i in 112 113
do
scp -rq /usr/local/hadoop2.5 h2sliver$i:/usr/local
done

 

5 h2master配置hadoop配置文件,后拷贝到其余四个节点

 

配置文件写法和解释如下:

1.1 配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves)
1.1.1 hadoop-env.sh
  export JAVA_HOME=/usr/local/jdk1.7
1.1.2 core-site.xml

	<property>
	<name>fs.defaultFS</name>
	<value>hdfs://cluster1</value>
	</property>

	<property>
	<name>hadoop.tmp.dir</name>
	<value>/usr/local/hadoop2.5/tmp</value>
	</property>

1.1.3 hdfs-site.xml

	<property>
	<name>dfs.replication</name>
	<value>3</value>
	</property>

	<property>
	<name>dfs.nameservices</name>  
	<value>cluster1</value>     ------  ha对应的namenode节点定义
	</property>

	<property>
	<name>dfs.ha.namenodes.cluster1</name>
	<value>h2master,h2master2</value>
	</property>

	<property>
	<name>dfs.namenode.rpc-address.cluster1.h2master</name>  ------  ha对应的namenode节点端口地址
	<value>h2master:9000</value>
	</property>

	<property>
	<name>dfs.namenode.http-address.cluster1.h2master</name> ------  ha对应的namenode节点端口地址
	<value>h2master:50070</value>
	</property>

	<property>
	<name>dfs.namenode.rpc-address.cluster1.h2master2</name> ------  ha对应的namenode节点端口地址
	<value>h2master2:9000</value>
	</property>

	<property>
	<name>dfs.namenode.http-address.cluster1.h2master2</name> ------  ha对应的namenode节点端口地址
	<value>h2master2:50070</value>
	</property>

	<property>
	<name>dfs.ha.automatic-failover.enabled.cluster1</name> ------  ha 上取消自动恢复
	<value>false</value>
	</property>

	<property> -- 节点数最少是3个并且建议使用奇数个
	<name>dfs.namenode.shared.edits.dir</name> ------   定义journalnode集群 /cluster1表示对cluster1对应的namenode集群进行数据共享
	<value>qjournal://h2master:8485;h2master2:8485;h2sliver112:8485/cluster1</value>   
	</property>

	<property>
	<name>dfs.journalnode.edits.dir</name> ------  定义journalnode集群存储namenode集群的数据存放位置
	<value>/usr/local/hadoop2.5/tmp/journal</value>
	</property>

	<property>
	<name>dfs.ha.fencing.methods</name> ------ 指定切换方式用ssh 
	<value>sshfence</value>
	</property>

	<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name> ------ 指定ssh私钥文件路径
	<value>/root/.ssh/id_rsa</value>
	</property>

	<property>
	<name>dfs.client.failover.proxy.provider.cluster1</name> ------ 声明执行切换要使用的代理类
	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>

1.1.6 slaves
	h2sliver112
	h2sliver113
	h2sliver114

 

拷贝代码写法如下,其余节点类推写法:

scp -r /usr/local/hadoop2.5  h2master2:/usr/local/ 

 

6 启动hadoop2 hdfs集群

 

a) 先启动journalnode集群:
h2master h2master2 h2sliver112 sbin下上分别执行: hadoop-daemon.sh start journalnode
通过jps可以发现:
[root@h2sliver112 sbin]# jps
5617 Jps
5571 JournalNode   启动成

b) 格式化namenode:
b.1)在h2master格式化后启动:
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
[root@h2master sbin]# jps
13436 NameNode
13298 JournalNode
13503 Jps

b.2) 在h2master2上格式化并启动:
bin/hdfs namenode -bootstrapStandby   表示从另一个namenode节点上把数据读取过来
sbin/hadoop-daemon.sh start namenode

格式化日志可见,确实是从h2master节点上拷贝文件过来:
15/01/10 23:44:36 INFO namenode.TransferFsImage: Opening connection to http://h2master:50070/imagetransfer?getimage=1&txid=0&storageInfo=-57:1431856901:0:CID-71ea9740-d125-461b-9663-f98bd1a5023d
15/01/10 23:44:36 INFO namenode.TransferFsImage: Image Transfer timeout configured to 60000 milliseconds
15/01/10 23:44:37 INFO namenode.TransferFsImage: Transfer took 0.00s at 0.00 KB/s
15/01/10 23:44:37 INFO namenode.TransferFsImage: Downloaded file fsimage.ckpt_0000000000000000000 size 351 bytes.

[root@h2master2 sbin]# jps
5843 Jps
5775 NameNode
5615 JournalNode

b.3) 
此时访问 http://h2master:50070/dfshealth.html   http://h2master2:50070/dfshealth.html 会发现这两个节点都是standby状态,

在h2master上执行hadoop2.5/bin/hdfs haadmin -failover --forceactive h2master2 h2master
haadmin -failover 命令是ha故障恢复命令,后面两个参数中,最后的参数表示让节点为active 第一个参数设置为standby

如果两个namenode节点都是standy状态 是不能执行hdfs操作的 执行也不会显示任何结果



d) 启动datanode
在datanode节点上分别执行 hadoop2.5/sbin/hadoop-daemons.sh start datanode

 

 

7 手动切换ha:

 

e.1) 上传数据到h2master中,
[root@h2master bin]# hdfs dfs -put /etc/hosts /

e.2) 手动杀死h2master
[root@h2master bin]# jps
13436 NameNode
14108 Jps
13298 JournalNode
[root@h2master bin]# kill -9 13436
[root@h2master bin]# jps
14120 Jps
13298 JournalNode

[root@h2master bin]# hdfs haadmin -failover --forceactive h2master h2master2
...
Failover from h2master to h2master2 successful

此时在访问
	
http://h2master2:50070/dfshealth.html  会发现状态已经为active

再去h2mater2中查看 以前在h2master中上传的数据,会存在  ha保证了数据一致性
[root@h2master2 bin]# hdfs dfs -ls /
-rw-r--r--   3 root supergroup        323 2015-01-11 00:11 /hosts

 

 

8 关闭各节点写法:

 

关闭datanode:
[root@h2master sbin]# hadoop-daemons.sh  stop datanode
h2sliver113: stopping datanode
h2sliver112: stopping datanode
h2sliver114: stopping datanode

两个节点关闭namenode:
[root@h2master sbin]# hadoop-daemon.sh stop namenode
stopping namenode

[root@h2master2 sbin]# hadoop-daemon.sh stop namenode
stopping namenode

注意: 关闭datanode 可以再任何节点关闭  并且使用命令hadoop-daemons.sh 是复数有s
       关闭namenode 只能在namenode节点关闭 使用命令hadoop-daemons.sh 是单数没有s

关闭JournalNode:
直接 kill -9 进程号即可

 

分享到:
评论

相关推荐

    搭建手工切换HA的HDFS集群

    搭建手工切换HA的HDFS集群,学习大数据hadoop搭建环境的可以看下,通俗易懂

    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase) 一、Hadoop HA高可用集群概述 在大数据处理中,高可用集群是非常重要的,Hadoop HA高可用集群可以提供高可靠性和高可用性,确保数据处理不中断。该集群由...

    hadoop2.6.4-ha集群搭建

    ### Hadoop 2.6.4 HA 集群搭建详解 #### 一、概述 在当前的大数据处理环境中,Hadoop作为一个强大的分布式计算框架,其稳定性和可用性至关重要。Hadoop 2.x版本引入了High Availability (HA)机制来确保系统在遇到...

    HadoopHA集群配置文件

    2. `hdfs-site.xml`: 这个文件是HDFS(Hadoop Distributed File System)的配置中心,其中的`dfs.nameservices`定义了HA命名服务的ID,如`nameservice1`,而`dfs.ha.namenodes.nameservice1`则指定了该命名服务下的...

    Hadoop2.0 HA集群搭建步骤

    所谓HA,即高可用,实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA;通过双namenode消除单点故障;通过双namenode协调工作

    hadoop - HA 集群搭建.txt 详细过程

    hadoop HA 搭建 包含 hdfs HA 集群搭建 以及yarn HA 集群搭建 适用于hadoop所有版本

    hadoopHA搭建资源包

    在IT行业中,Hadoop HA(高可用性)是大数据处理领域的一个重要概念,它确保了Hadoop集群在主节点故障时能够无缝切换到备份节点,从而保持服务的连续性和数据的完整性。本资源包提供了搭建Hadoop HA所需的关键组件,...

    HadoopHA集群部署、HDFSHA配置、启动与验证教学课件.pptx

    在构建高可用(HA)Hadoop集群时,HDFS(Hadoop Distributed File System)HA配置是关键步骤,目的是确保即使NameNode节点发生故障,数据访问和服务也不会中断。本教程将详细讲解如何配置、启动和验证Hadoop HA集群...

    HadoopHA高可用集群配置 hdfs-site.xml

    本文将重点介绍Hadoop HA高可用集群配置中的关键参数及其作用,特别是`hdfs-site.xml`文件中与HA相关的配置项。 #### 二、Hadoop HA概述 Hadoop HA(High Availability)是指通过在集群中部署多个NameNode实例来...

    hadoop2.7.2HA集群安装

    本文档将详细介绍如何搭建一个Hadoop 2.7.2版本的高可用(High Availability,简称HA)集群。此集群将包含五台服务器,分别命名为cancer01至cancer05,其中两台作为NameNode节点(活跃与备用),一台作为JournalNode...

    HadoopHA集群部署、规划HadoopHA集群教学课件.pptx

    HDFS HA架构图显示,Active NameNode通过JournalNode与Standby NameNode同步元数据,Zookeeper集群的ZKFC(Zookeeper Failover Controller)用于检测和执行NameNode之间的切换。 类似的,YARN HA使用相同的原理,...

    Hadoop2.6集群环境搭建(HDFS HA+YARN)

    在搭建Hadoop 2.6集群环境时,我们需要关注几个关键组件:HDFS(Hadoop Distributed File System)的高可用性(HA)以及YARN(Yet Another Resource Negotiator)。这个过程涉及多台虚拟机的配置,包括安装操作系统...

    Hadoop3以及高可用HA搭建方式.zip

    理解这些概念和步骤,对于成功搭建和管理一个高可用的Hadoop3集群至关重要。在实际应用中,还需要考虑网络配置、安全性、数据迁移策略等复杂因素。因此,持续学习和实践是掌握Hadoop3 HA的关键。

    Hadoop2.x HA环境搭建

    - 在搭建Hadoop2.x HA集群之前,需要确保所有相关的服务都已经停止运行,避免与新搭建的集群产生冲突。 2. **操作系统上的免密钥登录设置:** - 需要在node1、node2、node3、node4之间实现SSH免密钥登录,即通过...

    Hadoop HA集群配置.docx

    在构建Hadoop高可用(HA)集群时,ZooKeeper起着至关重要的作用。Hadoop HA主要关注两个关键组件的高可用性:HDFS(Hadoop分布式文件系统)的HA和YARN(Yet Another Resource Negotiator)的HA。ZooKeeper作为一个...

    Hadoop集群搭建详细简明教程

    本教程“Hadoop集群搭建详细简明教程”将带你逐步走进Hadoop的世界,了解并掌握如何构建一个高效稳定的Hadoop集群。 Hadoop是由Apache基金会开发的一个开源项目,其核心包括两个主要组件:Hadoop Distributed File ...

    hadoop集群搭建步骤

    hadoop集群搭建步骤 集群规划 安装步骤:安装配置zooekeeper集群、安装配置hadoop集群、验证HDFS HA

    hadoop2.x集群搭建.txt(hdfs和yarn貌似正常,但mapreduce 提交job执行失败,请看我的另一个资源,另一个搭建是成功的)

    根据提供的文件信息,本文将详细解析Hadoop 2.x集群的搭建步骤以及遇到的问题,特别是针对MapReduce提交Job执行失败的情况进行分析。 ### Hadoop 2.x 集群搭建 #### 一、前期准备 在搭建Hadoop 2.x集群之前,我们...

    Hadoop HA搭建笔记和配置文件

    首先,我们要理解Hadoop HA的基本概念。HA主要涉及到两个关键组件:NameNode和ResourceManager。NameNode是HDFS的元数据管理节点,而ResourceManager则是YARN资源调度器。在HA模式下,每个组件都有一个主节点和一个...

Global site tag (gtag.js) - Google Analytics