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集群,学习大数据hadoop搭建环境的可以看下,通俗易懂
Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase) 一、Hadoop HA高可用集群概述 在大数据处理中,高可用集群是非常重要的,Hadoop HA高可用集群可以提供高可靠性和高可用性,确保数据处理不中断。该集群由...
### Hadoop 2.6.4 HA 集群搭建详解 #### 一、概述 在当前的大数据处理环境中,Hadoop作为一个强大的分布式计算框架,其稳定性和可用性至关重要。Hadoop 2.x版本引入了High Availability (HA)机制来确保系统在遇到...
2. `hdfs-site.xml`: 这个文件是HDFS(Hadoop Distributed File System)的配置中心,其中的`dfs.nameservices`定义了HA命名服务的ID,如`nameservice1`,而`dfs.ha.namenodes.nameservice1`则指定了该命名服务下的...
所谓HA,即高可用,实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA;通过双namenode消除单点故障;通过双namenode协调工作
hadoop HA 搭建 包含 hdfs HA 集群搭建 以及yarn HA 集群搭建 适用于hadoop所有版本
在IT行业中,Hadoop HA(高可用性)是大数据处理领域的一个重要概念,它确保了Hadoop集群在主节点故障时能够无缝切换到备份节点,从而保持服务的连续性和数据的完整性。本资源包提供了搭建Hadoop HA所需的关键组件,...
在构建高可用(HA)Hadoop集群时,HDFS(Hadoop Distributed File System)HA配置是关键步骤,目的是确保即使NameNode节点发生故障,数据访问和服务也不会中断。本教程将详细讲解如何配置、启动和验证Hadoop HA集群...
本文将重点介绍Hadoop HA高可用集群配置中的关键参数及其作用,特别是`hdfs-site.xml`文件中与HA相关的配置项。 #### 二、Hadoop HA概述 Hadoop HA(High Availability)是指通过在集群中部署多个NameNode实例来...
本文档将详细介绍如何搭建一个Hadoop 2.7.2版本的高可用(High Availability,简称HA)集群。此集群将包含五台服务器,分别命名为cancer01至cancer05,其中两台作为NameNode节点(活跃与备用),一台作为JournalNode...
HDFS HA架构图显示,Active NameNode通过JournalNode与Standby NameNode同步元数据,Zookeeper集群的ZKFC(Zookeeper Failover Controller)用于检测和执行NameNode之间的切换。 类似的,YARN HA使用相同的原理,...
在搭建Hadoop 2.6集群环境时,我们需要关注几个关键组件:HDFS(Hadoop Distributed File System)的高可用性(HA)以及YARN(Yet Another Resource Negotiator)。这个过程涉及多台虚拟机的配置,包括安装操作系统...
理解这些概念和步骤,对于成功搭建和管理一个高可用的Hadoop3集群至关重要。在实际应用中,还需要考虑网络配置、安全性、数据迁移策略等复杂因素。因此,持续学习和实践是掌握Hadoop3 HA的关键。
- 在搭建Hadoop2.x HA集群之前,需要确保所有相关的服务都已经停止运行,避免与新搭建的集群产生冲突。 2. **操作系统上的免密钥登录设置:** - 需要在node1、node2、node3、node4之间实现SSH免密钥登录,即通过...
在构建Hadoop高可用(HA)集群时,ZooKeeper起着至关重要的作用。Hadoop HA主要关注两个关键组件的高可用性:HDFS(Hadoop分布式文件系统)的HA和YARN(Yet Another Resource Negotiator)的HA。ZooKeeper作为一个...
本教程“Hadoop集群搭建详细简明教程”将带你逐步走进Hadoop的世界,了解并掌握如何构建一个高效稳定的Hadoop集群。 Hadoop是由Apache基金会开发的一个开源项目,其核心包括两个主要组件:Hadoop Distributed File ...
hadoop集群搭建步骤 集群规划 安装步骤:安装配置zooekeeper集群、安装配置hadoop集群、验证HDFS HA
根据提供的文件信息,本文将详细解析Hadoop 2.x集群的搭建步骤以及遇到的问题,特别是针对MapReduce提交Job执行失败的情况进行分析。 ### Hadoop 2.x 集群搭建 #### 一、前期准备 在搭建Hadoop 2.x集群之前,我们...
首先,我们要理解Hadoop HA的基本概念。HA主要涉及到两个关键组件:NameNode和ResourceManager。NameNode是HDFS的元数据管理节点,而ResourceManager则是YARN资源调度器。在HA模式下,每个组件都有一个主节点和一个...