专栏首页简单聊聊SparkHadoop HA及Failover搭建

Hadoop HA及Failover搭建

Hadoop HA及Failover功能简单介绍:

在Hadoop1.X版本中使用单个NameNode来管理所有的DataNode的元数据,一旦NameNode节点发生故障将导致整个集群不可用,而且必须手动恢复NameNode节点才能够正常提供服务。基于以上致命的缺点,Hadoop2.X提出了HA(High Available)来改进单点故障;另外,通过使用Zookeeper的分布式通知协调功能实现HA的Failover(故障自动转移),而无需人工介入。下面开始介绍HA和Failover的安装配置。

首先,开始本文之前请先搭建好Zookeeper的环境,后续文章中会写关于Zookeeper如何搭建(各位看官如果有不会搭建Zookeeper的,目前请先自行百度,静候博主推出关于Zookeeper的搭建教程,博主这里默认已经搭建好了Zookeeper),本文是建立在分布式基础上进行的修改,如果已经安装好了完全分布式环境,则直接开始本文接下来的内容;如果还没有搭建好完全分布式环境,请看博主的上一篇关于完全分布式环境搭建教程,链接如下:

http://www.jianshu.com/p/962ac811623f

关于版本的介绍:

Zookeeper: zookeeper-3.4.5

Hadoop: hadoop-2.5.0

搭建HA:

1.修改hdfs-site.xml文件,内容如下:

#配置HA的nameservices <property>          <name>dfs.nameservices</name>          <value>ns1</value> </property> <property>         <name>dfs.ha.namenode.ns1</name>         <value>nn1,nn2</value> </property> #配置namenode RPC address <property>          <name>dfs.namendoe.rpc-address.ns1.nn1</name>          <value>master:8020</value> </property> <property>         <name>dfs.namendoe.rpc-address.ns1.nn1</name>         <value>slave1:8020</value> </property> #配置Namenode HTTP WEB的地址 <property>         <name>dfs.namenode.http-address.ns1.nn1</name>         <value>master:50070</value> </property> <property>         <name>dfs.namenode.http-address.ns1.nn1</name>         <value>slave1:50070</value> </property> #配置journalnode,share edit地址 <property>          <name>dfs.namenode.shared.edits.dir</name>         <value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value> </property> #配置edits的存放位置 <property>          <name>dfs.journalnode.edits.dir</name>           #这个目录请自行指定且该指定的目录已经创建好           <value>/usr/local/src/hadoop-2.5.0/data/dfs/jn</value> </property> #配置代理 <property>         <name>dfs.client.failover.proxy.provider.ns1</name>               <value>org.apache.hadoop.hdfs.hadoop.hdfs.server.namenode.ha. ConfiguredFailoverProxyProvider</value> </property> #配置namenode的隔离方式,这里使用ssh隔离方式,要求两个namenode之间能够通过ssh免密码登录 <property>         <name>dfs.ha.fencing.methods</name>         <value>sshfence</value> </property> <property>           <name>dfs.ha.fencing.ssh.private-key-files</name>           #这里根据实际情况修改,一般为/home/用户名/.ssh/id_rsa           <value>/root/.ssh/id_rsa</value> </property> #开启HA故障自动转移 <property>          <name>dfs.ha.automatic-failover.enabled</name>          <value>true</value> </property>

2.修改core-site.xml文件,内容如下:

<property>          <name>fs.defaultFS</name>          <value>hdfs://ns1</value> </property> <property>          <name>hadoop.tmp.dir</name>          <value>/usr/local/src/hadoop-2.5.0/data/tmp</value> </property> <property>          <name>fs.trash.interval</name>          <value>420</value> </property> #通过使用zookeeper实现HA故障自动转移 <property>          <name>ha.zookeeper.quorum</name>         <value>master:2181,slave1:2181,slave2:2181</value> </property>

启动测试:


①. HA通过使用zookeeper实现自动故障转移,实现方式如下:

    1. 配置好以后,启动所有节点的zookeeper服务

    2. 初始化HA在zookeeper中的状态,执行如下命令:

      bin/hdfs zkfc -formatZK


②. 启动HA,启动顺序如下:

    1. 启动每个节点的journalnode进程

sbin/hadoop-daemon.sh start journalnode

    2. 格式化集群,并启动namenode

bin/hdfs namenode -format        在nn1上执行格式化操作 sbin/hadoop-daemon.sh start namenode

    3. 同步nn1上的元数据到第二个nn2上,在nn2上执行如下命令

bin/hdfs namenode -bootstrapStandby

    4. 启动第二个namenode

sbin/hadoop-daemon.sh start namenode

    5. 启动datanode,在各个节点下执行如下命令启动datanode

sbin/hadoop-daemon.sh start datanode

    6.将一个namenode变成active状态,执行如下命令

bin/hdfs haadmin -transitionToActive nn1 #查看namenode的状态 bin/hdfs haadmin -getServiceState nn1 #将namenode变为standby状态 bin/hdfs haadmin -transitionToStandby nn1

      7. 对集群做基本测试,

          测试见:http://www.jianshu.com/p/962ac811623f 文章中的测试


至此,Hadoop的HA及Failover搭建完成,预祝各位朋友搭建成功。欢迎关注。

如需转载,请注明:

z小赵 Hadoop HA及Failover搭建

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hadoop2.5.0完全分布式环境搭建(亲测有效)

          说在前头的一些东西,关于Linux本身环境本身的一些处理见如下链接,主要是讲Hadoop环境的前期准备:http://www.jianshu.co...

    z小赵
  • Spark性能调优篇五之使用fastUtil工具包

            今天再来介绍一个小的优化点,是一个通过使用fastutil工具包对数据格式进行优化。首先来明确一个东西,什么是fastutil?

    z小赵
  • 搭建CM(ClouderaManager)

    首先,为什么要搭建本地yum源呢?大部分公司里面,由于内网机不允许连接外网,所有导致不能通过网络的方式安装软件,而本地yarn源就是为了解决这个问题而诞生的一种...

    z小赵
  • 基于druid和spring的动态数据库以及读写分离

    spring与druid可以实现动态数据源,夸库查询,读写分离等功能。现在说一下配置:

    一笠风雨任生平
  • druid简介与运用

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、P...

    Java架构师历程
  • 基于SSM的数据库连接池框架druid的使用

    可以先去druid的官网下载jar:http://druid.io/downloads.html

    SmileNicky
  • Hadoop完全分布式安装

    完全分布式安装部署,其实步骤上来说与伪分布式没有太大的区别,主要增加2台虚拟机部署称为一个3台的集群

    我脱下短袖
  • Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析

    yum install autoconfautomake libtool cmake

    用户3003813
  • Hadoop 2.6.0集群搭建

    yum install autoconfautomake libtool cmake

    用户3003813
  • Spring MVC多个视图解析器及优先级

    如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高

    試毅-思伟

扫码关注云+社区

领取腾讯云代金券