HDFS高可用(HA)配置

来源:互联网 发布:淘宝店掌柜名怎么修改 编辑:程序博客网 时间:2024/05/22 17:38

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

对各个节点进行划分:

选项 主机1 主机2 主机3 NameNode NameNode JournalNode JournalNode JournalNode DataNode DataNode DataNode

此处不再需要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 -formatsbin/hadoop-daemon.sh start namenode

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

bin/hdfs namenode -bootstrapStandbysbin/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.shls /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
原创粉丝点击