Hadoop HA的安装配置

一,HA的架构

Hadoop HA 即Hadoop的高可用,不同于普通的namenode+second namenode的模式,second namenode只能作为namenode的冷备份,当namenode挂掉后,second namenode不能自动充当namenode的角色。所以为了保证高可用性,就有了Hadoop HA的机制。
hdfs HA中即有至少有两个namenode,这儿以两个namenode为例,一个可以对外提供服务的namenode成为active namenode,待命状态的namenode成为standby namenode。

1.如何做到两个namenode的元数据的一致性呢?

将edits文件托管给稳定的第三方存放(当然,为了防止第三方挂掉,namenode本地的edits文件也是必要的),standby namenode就可以定时去第三方取edits文件放在内存中,做元素据的修改。这样就可以保证actice 和standby的数据一致性。

2.第三方用什么才能保证高可用?

第三方用的是qjournal集群,集群就可以将edits文件存放在每个机器中。并且这个集群使用zookeeper作为集群的协调,保证数据写入一半以上的机器,才为写入成功。

3.怎么做到standby在active节点挂掉自动充当active的角色呢?

这儿在每个namenode对应着一个监控进程ZKFC。在active上ZKFC使用RPC调用以判断active是否挂掉,如果挂掉,那么在zookeeper上将相应的节点删除(分布式锁),在Standby节点上的ZKFC进程就可以感知到节点删除的信息。Standby节点上的ZKFC进程感知到active节点挂掉的信息之后会向active节点发送一个杀死hdfs namenode的命令,确保active死亡,然后再向standby发送切换的指令,并向zookeeper创建节点。这样就可以让standby模式转换为active模式。

对于resourceManager的HA,因为不存在数据的一致性,所以只需要向zookeeper创建节点(获得分布式锁)即可。

二,环境准备

1.节点角色搭配(这儿是7台节点)

hadoop1:NameNode ZKFC
hadoop2:NameNode ZKFC
hadoop3:ResourceManager
hadoop4:ResourceManager
hadoop5:DataNode NodeManager zookeeper JournalNode
hadoop6:DataNode NodeManager zookeeper JournalNode
hadoop7:DataNode NodeManager zookeeper JournalNode

2.每台机器上都需要安装hadoop和jdk

3.节点之间的免密登陆,以及hosts文件的相应映射配置好

4.hadoop5,hadoop6,hadoop7上需要安装zookeeper

三,配置文件及解析

1.首先需要在hadoop-env.sh中加上HADOOP_HOME

2.core-site.xml


<property>
<name>fs.defaultFSname>
<value>hdfs://bi/value>
property>

<property>
<name>hadoop.tmp.dirname>
<value>/home/hadoop/hadoopdatavalue>
property>


<property>
<name>ha.zookeeper.quorumname>
<value>hadoop5:2181,hadoop6:2181,hadoop7:2181value>
property>

3.hdfs-site.xml

<configuration>

<property>
<name>dfs.nameservicesname>
<value>bivalue>
property>

<property>
<name>dfs.ha.namenodes.biname>
<value>nn1,nn2value>
property>

<property>
<name>dfs.namenode.rpc-address.bi.nn1name>
<value>hadoop1:9000value>
property>

<property>
<name>dfs.namenode.http-address.bi.nn1name>
<value>hadoop1:50070value>
property>

<property>
<name>dfs.namenode.rpc-address.bi.nn2name>
<value>hadoop2:9000value>
property>

<property>
<name>dfs.namenode.http-address.bi.nn2name>
<value>hadoop2:50070value>
property>

<property>
<name>dfs.namenode.shared.edits.dirname>
<value>qjournal://hadoop5:8485;hadoop6:8485;hadoop7:8485/bivalue>
property>

<property>
<name>dfs.journalnode.edits.dirname>
<value>/home/hadoop/qjournalvalue>
property>

<property>
<name>dfs.ha.automatic-failover.enabledname>
<value>truevalue>
property>

<property>
<name>dfs.client.failover.proxy.provider.biname>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
property>

<property>
<name>dfs.ha.fencing.methodsname>
<value>
sshfence
shell(/bin/true)
value>
property>

<property>
<name>dfs.ha.fencing.ssh.private-key-filesname>
<value>/root/.ssh/id_rsavalue>
property>

<property>
<name>dfs.ha.fencing.ssh.connect-timeoutname>
<value>30000value>
property>
configuration>

4.mapred-site.xml

<configuration>

<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>

5.yarn-site.xml

<configuration>



<property>
<name>yarn.resourcemanager.ha.enabledname>
<value>truevalue>
property>

<property>
<name>yarn.resourcemanager.cluster-idname>
<value>yrcvalue>
property>

<property>
<name>yarn.resourcemanager.ha.rm-idsname>
<value>rm1,rm2value>
property>

<property>
<name>yarn.resourcemanager.hostname.rm1name>
<value>hadoop3value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm2name>
<value>hadoop4value>
property>

<property>
<name>yarn.resourcemanager.zk-addressname>
<value>hadoop5:2181,hadoop6:2181,hadoop7:2181value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
configuration>

6.slaves文件

hadoop5
hadoop6
hadoop7

四,启动顺序

1.先启动hadoop5,hadoop6,hadoop7的zookeeper

zkServer.sh start

2.启动hadoop5,hadoop6,hadoop7的journalnode

hadoop-daemon.sh start journalnode

3.格式化HDFS(在hadoop1或者hadoop2上执行格式化)

hdfs namenode -format

注意:格式化完成之后,为了保证两个namenode的数据一致,需要把hadoop1的namenode的数据目录复制到hadoop2的相应的目录下

4.格式化ZKFC(在hadoop1或者hadoop2上执行格式化)

hdfs zkfc -formatZK

5.启动HDFS(在hadoop1或者hadoop2上启动)

start-dfs.sh

6.启动yarn(在hadoop3或者hadoop4上启动)

start-yarn.sh

注意:在hadoop3上启动yarn后,hadoop4上没有resourcemanager进程,需要自动启动,指令如下

yarn-daemon.sh start resourcemanager

五,验证安装

hadoop1

hadoop2

hadoop3

hadoop4

hadoop5

hadoop6

hadoop7

Hadoop HA的安装配置_第1张图片

Hadoop HA的安装配置_第2张图片

你可能感兴趣的:(大数据)