您的位置:首页 > 运维架构 > 网站架构

HDFS高可用(HA)配置

2017-11-18 20:32 363 查看
关于HDFS HA如何进行设计,请查看——>HDFS高可用(HA)设计,以下的配置也都是根据此文中的设计方式进行配置,所以为了更好的理解下面各个配置的含义,务必先阅读此文。

对各个节点进行划分:

选项主机1主机2主机3
NameNodeNameNode
JournalNodeJournalNodeJournalNode
DataNodeDataNodeDataNode
此处不再需要SecondaryNameNode,因为SecondaryNameNode的作用时合并镜像文件和日志文件,防止下次启动时读取数据的速度太慢,而配置高可用之后不需要再次启动。

这里的配置将基于之前已经配置过的hadoop分布式集群进行配置,集群搭建这里不再进行讨论,至于如何配置hadoop分布式集群,请查看——>Hadoop集群搭建——环境配置



配置HDFS HA

以下的配置也是根据官方文档进行的配置,您也可以直接查看官方文档

配置core-site.xml

<configuration>
<!--配置客户端的ns-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!--临时目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bxp/Documents/install/hadoop-2.6.5-hdfsha/data/tmp</value>
</property>
<!--垃圾回收-->
<property>
<name>fs.trash.interval</name>
<value>420</value>
</property>
</configuration>


配置hdfs-site.xml

<configuration>

<!--nameservices,管理namenode的空间-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>

<!--配置nameservices所管理的namenode,即ns1管理的namenode为nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--配置两个namenode所在主机-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop-series.bxp.com:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop-series1.bxp.com:8020</value>
</property>
<!--配置两个namenode的web 50070端口-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-series.bxp.com:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoop-series1.bxp.com:50070</value>
</property>
<!--jernalNode所在主机-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-series.bxp.com:8485;hadoop-series1.bxp.com:8485;hadoop-series2.bxp.com:8485/ns1</value>
</property>
<!--配置客户端代理-->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置两个namenode之间的隔离方式-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!--此处是自己主机的ssh-key路径
注意:此处使用的是ssh隔离方式,必须提前配置两个namenode所在主机之间能够进行无密钥登陆,否则会失败
-->

<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/bxp/.ssh/id_rsa</value>
</property>
<!--配置jernal日志文件存放在本地磁盘的那个目录下-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/bxp/Documents/install/hadoop-2.6.5-hdfsha/data/dfs/jn</value>
</property>

<!-- 副本数量不需要进行控制,默认就可以-->
<!--
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
-->
<!-- secondaryNamenode放在第hadoop-series2.bxp.com上-->
<!--
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-series2.bxp.com:50070</value>
</property>
-->
</configuration>


启动HDFS HA集群

1、逐个启动journalnode

sbin/hadoop-daemon.sh start journalnode


2、格式化nn1,并启动nn1的namenod

bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode


3、在nn2上执行如下命令从nn1上拷贝格式化生成的镜像文件,并启动nn2的namenode

bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode


4、逐个启动datanode

sbin/hadoop-daemon.sh start datanode


5、将nn1设置为Active NameNode

bin/hdfs haadmin -transitionToActive nn1


Zookeeper实现namenode间自动故障转移

启动后都是Standby,通过Zookeeper选举一个为Active。并通过zookeeper监控两个namenode。(ZKFC, FailoverController)



1、配置自动故障转移

hdfs-site.xml中增加如下配置

<!--下面时配置自动故障转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>


core-site.xml中增加如下配置

<!--指定zookeeper所在主机-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop-series.bxp.com:2181,hadoop-series1.bxp.com:2181,hadoop-series2.bxp.com:2181</value>
</property>


2、重新启动集群

(1)关闭所有的HDFS服务

(2)启动Zookeeper集群

zookeeper-3.5.0-alpha/bin/zkServer.sh start


(3)初始化HA在Zookeeper中状态

bin/hdfs zkfc -formatZK


初始化成功,会提示 Successfully created /hadoop-ha/ns1 in ZK.

通过zk客户端进行查看会发现确实创建了/hadoop-ha/ns1目录

zookeeper-3.5.0-alpha/bin/zkCli.sh
ls /hadoop-ha


(4)启动HDFS服务

在各个NameNode节点上启动DFSZK Failover Controller,现在哪个主机上启动,那个主机NameNode就是Active NameNode。

sbin/hadoop-daemon start zkfc


(5)验证自动故障转移配置成功。

将Active NameNode进程杀死,查看Standby是否会迅速转换成Active

kill -9 16299


将Active NameNode网络断开,查看Standby是否会迅速转换成Active

service network stop
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: