Hadoop2的HA安装(high availability):nfs+zookeeper
前面介绍过hadoop的简单安装和FA安装,在这里将介绍几种hadoop2中HA(高可用性)安装,HA技术使hadoop不再存在单点namenode的故障。
先来第一种:nfs+zookeeper
Hadoop 版本:2.2.0
OS 版本: Centos6.4
Jdk 版本: jdk1.6.0_32
环境配置
|
机器名 |
Ip地址 |
功能 |
|
Hadoop1 |
192.168.124.135 |
NameNode, DataNode, ResourceManager, NodeManager Zookeeper Zkfc |
|
Hadoop2 |
192.168.124.136 |
NameNode DataNode, NodeManager Zookeeper Zkfc |
|
Hadoop3 |
192.168.124.137 |
DataNode, NodeManager Zookeeper Zkfc Nfs server |
安装zookeeper
使用 FileZilla上传zookeeper-3.4.5.tar.gz
解压缩 tar xzvf zookeeper-3.4.5.tar.gz
配置zookeeper
Vi conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/hadoop/repo1/zookeeper
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
在hadoop1, hadoop2, hadoop3, 修改 /home/hadoop/repo1/zookeeper/myid
按照下面的表哥填写myid
|
Hadoop1 |
1 |
|
Hadoop2 |
2 |
|
Hadoop3 |
3 |
nfs安装
在hadoop3上安装
yum install nfs-utils
vi /etc/exports
/home/hadoop/repo3/nfs 192.168.124.0/24(rw,sync,no_root_squash)
启动
service rpcbind restart
service nfs restart
在hadoop1和hadoop2运行mount命令
mount -t nfs hadoop3:/home/hadoop/repo3/nfs /home/hadoop/repo3/nfs
配置hadoop
vi etc/hadoop/hadoop-env.sh 修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/mapred-env.sh修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/yarn-env.sh修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/repo3/tmp</value>
<description>A base for other temporary
directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/repo3/journal</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>
vi etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/repo3/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/repo3/data</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>hadoop1,hadoop2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.hadoop1</name>
<value>hadoop1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.hadoop1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.hadoop2</name>
<value>hadoop2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.hadoop2</name>
<value>hadoop2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>file:///home/hadoop/repo3/nfs</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>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
vi etc/hadoop/yarn-site.xml
<configuration>
<property>
<description>the valid service name</description>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<description>The hostname of the RM.</description>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
</configuration>
vi etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi etc/hadoop/slaves
hadoop1
hadoop2
hadoop3
格式化namenode和failovercontroler
failovercontroler也需要格式化: bin/hdfs zkfc -formatZK
bin/hdfs namenode -format -clusterid mycluster
在hadoop2节点上的namenode信息需要与hadoop1节点同步,不能通过简单的格式化做到,hadoop2节点上的namenode需要向hadoop1的namenode发送数据请求。因此我们还需要启动hadoop1上的namenode.
在hadoop1上运行: bin/hdfs namenode
在hadoop3上运行:bin/hdfs namenode -bootstrapStandby
最后关闭hadoop1上的namenode,然后启动整个hadoop集群。
启动hadoop集群
cd /home/hadoop/hadoop-2.2.0
sbin/start-all.sh
从图上可以看出,先启动namenode,再启动datanode, 再启动ZK failover controller, 再启动resourcemanger, 最后启动nodemanager。

使用jps查看启动的进程
在hadoop1上运行jps

在hadoop2上运行jps

在hadoop3上运行jps

查看namenode的状态
bin/hdfs haadmin -getServiceState hadoop1

bin/hdfs haadmin -getServiceState hadoop2

从图上可以看出hadoop2上的namenode处于standby状态,而hadoop1上的namenode处于active状态
这些信息也可以通过Hadoop的web界面得到。
在浏览器里输入:http://hadoop1:50070

在浏览器里输入:http://hadoop2:50070

Failover 测试
从图上我们可以看出hadoop1节点上的namenode处于active状态,hadoop2上的节点处于standby状态,我们现在杀死hadoop1节点上的namenode,然后看hadoop2上的节点会自动变为active状态
在hadoop1上使用jps查看启动的进程

找到NameNode的进程,然后杀死它
Kill -9 11146,发现namenode消失了
查看一下hadoop2节点的状态 bin/hdfs haadmin -getServiceState hadoop2

查看hadoop1节点的状态 bin/hdfs haadmin -getServiceState hadoop1

启动hadoop1节点上的namenode bin/hdfs namenode后
再查看hadoop1节点的状态 bin/hdfs haadmin -getServiceState hadoop1

很显然,hadoop1节点上namenode为standby状态,hadoop已经很好的解决了single namenode的问题,在不停机的条件下 备用节点成功的接管了主节点的任务。
尽管namenode可以很好的完成failover工作,但是他们之间使用nfs来存储变量的数据。nfs也会存在单点问题,也有可能停机导致整个集群的失败。Hadoop还提供了一种叫做jornalnode的技术,解决nfs的问题。
Hadoop2的HA安装(high availability):nfs+zookeeper的更多相关文章
- Hadoop2的HA安装(high availability):JournalNode+ zookeeper
前面介绍过使用NFS+zookeeper来解决namenode单点失败问题,因为NFS可能也会存在单点问题,所以hadoop提供了一种叫做JournalNode技术,这项技术可以在JournalNod ...
- Hadoop2.6 Ha 安装
Hadoop 2.6安装文档 版本说明:hadoop 2.6 linux-64位 Zookeeper3.4.6 jdk 1.7.0_75 1. Ssh无密码 ssh-keygen vim ...
- hadoop2.7.1 HA安装部署(转)
hadoop集群规划 目标:创建2个NameNode,做高可用,一个NameNode挂掉,另一个能够启动:一个运行Yarn,3台DataNode,3台Zookeeper集群,做高可用. 在 hadoo ...
- Apache Hadoop2.x 边安装边入门
完整PDF版本:<Apache Hadoop2.x边安装边入门> 目录 第一部分:Linux环境安装 第一步.配置Vmware NAT网络 一. Vmware网络模式介绍 二. NAT模式 ...
- 2-Zookeeper、HA安装
1.Zookeeper安装 1.解压 zookeeper 到安装目录中/opt/app/zookeeper 中. 2.在安装目录下创建data和logs两个目录用于存储数据和日志: cd /opt/a ...
- FW 构建OpenStack的高可用性(HA,High Availability)
原文地址:http://blog.csdn.net/hilyoo/article/details/7704280 1.CAP理论 1) CAP 理论给出了3个基本要素: 一致性 ( Consisten ...
- 基于原生态Hadoop2.6 HA集群环境的搭建
hadoop2.6 HA平台搭建 一.条件准备 软件条件: Ubuntu14.04 64位操作系统, jdk1.7 64位,Hadoop 2.6.0, zookeeper 3.4.6 硬件条件 ...
- hadoop-2.4.1集群搭建及zookeeper管理
准备 1.1修改主机名,设置IP与主机名的映射 [root@xuegod74 ~]# vim /etc/hosts 192.168.1.73 xuegod73 192.168.1.74 xuegod7 ...
- hadoop2.8 ha 集群搭建
简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop ...
随机推荐
- silverlight客户端保存文件乱码问题
最近做一个项目,有一个需求是这样的:服务端从数据库里获得数据,客户端保存为Excel文件 最初解决方案:服务端获得数据,通过ExcelPackage,Convert.ToBase64String将by ...
- Ubuntu 下的webservices
搞 了一下午: 开发server程序.需使用gSOAP生成server端代码框架. 我们有两种做法: 编写WSDL,使用wsdl2h生成头文件,再soapcpp2生成框架代码. 编写头文件.使用soa ...
- hibernate 组件映射
注解方式: import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence ...
- O2O研究系列——O2O知识思维导图整理
本篇文章对O2O电子商务模式的常规知识点,使用思维导图的方式整理,表达的形式是名词纲领性的方式, 不会在图中详细说明各个点. 通过这个图研究O2O模式时,可以系统的对各个业务点进行更深入的研究,避免有 ...
- 【转】C# 视频监控系列(12):H264播放器——播放录像文件
原文地址:http://www.cnblogs.com/over140/archive/2009/03/23/1419643.html?spm=5176.100239.blogcont51182.16 ...
- mongodb - 集合重命名
#创建新的集合yb > for(i=0;i<10;i++){db.yb.insert({'i':i})} WriteResult({ "nInserted" : 1 } ...
- 2012全球SEO行业调查报告
这份报告是SEOmoz对每两年一度举办的SEO行业调查进行的分析数据,上次调查是在2010年.该调查,主要围绕SEO从业人员的特征.工作内容时间分配比例.SEO相关消费和预算.对未来市场的看法.seo ...
- ubuntu系统安装nginx出现的错误(依赖环境没有安装完)
报错信息: error: the HTTP image filter module requires the GD library. 编译参数:(或源安装) ./configure --prefix= ...
- unity, access scene ambient
lighting面板里设置的ambient color,在shader里访问是通过UNITY_LIGHTMODEL_AMBIENT这个变量. 它定义在UnityShaderVariables.cgin ...
- JavaNIO - AbstractInterruptibleChannel
1. 描述 可异步关闭和中断的Channel. (1)实现InterruptibleChannel接口的Channel支持异步关闭:如果一个线程IO阻塞在一个可中断的channel,另一个线程可以执行 ...