hadoop的HA高可用机制配置搭建

前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制

1.1 HA的运作机制

(1)hadoop-HA集群运作机制介绍

所谓HA,即高可用(7*24小时不中断服务)

实现高可用最关键的是消除单点故障

hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

 

(2)HDFS的HA机制详解

通过双namenode消除单点故障

双namenode协调工作的要点:

   A、元数据管理方式需要改变:

   内存中各自保存一份元数据

   Edits日志只能有一份,只有Active状态的namenode节点可以做写操作

   两个namenode都可以读取edits

   共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

   B、需要一个状态管理功能模块

   实现了一个zkfailover,常驻在每一个namenode所在的节点

   每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识

   当需要进行状态切换时,由zkfailover来负责切换

   切换时需要防止brain splitf现象的发生

2.HDFS HA 集群配置(以此为例)
1 )规划集群
102                                  103                                            104
NameNode                        NameNode
JournalNode                      JournalNode                               JournalNode
DataNode                          DataNode                                   DataNode
2 )配置集群
1 )官方地址: http://hadoop.apache.org/
2 )在 opt 目录下创建一个 ha 文件夹
               mkdir ha
3 )将 /opt/app/ 下的 hadoop-2.7.2 拷贝到 /opt/ha 目录下
cp -r hadoop-2.7.2/ /opt/ha/
        4 )配置 hdfs-site.xml
     
       
         dfs.nameservices
         ns1
       
       
       
         dfs.ha.namenodes.ns1
         nn1,nn2
       
       
       
       
         dfs.namenode.rpc-address.ns1.nn1
         hadoop102:8020
       
       
         dfs.namenode.rpc-address.ns1.nn2
         hadoop103:8020
       
       
       
         dfs.namenode.http-address.ns1.nn1
         hadoop102:50070
       
       
         dfs.namenode.http-address.ns1.nn2
         hadoop103:50070
           
       
       
       
         dfs.namenode.shared.edits.dir
         qjournal://hadoop102:8485;hadoop3.robot.com:8485;hadoop104:8485/ns1
           
       
       
         dfs.journalnode.edits.dir
         /opt/ha/hadoop-2.5.0/data/dfs/jn
       
       
       
         dfs.client.failover.proxy.provider.mycluster
         org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
       
       
       
       
         dfs.ha.fencing.methods
         sshfence
       
       
         dfs.ha.fencing.ssh.private-key-files
         /root/.ssh/id_rsa
           
       
        5 )配置 core-site.xml
              
                     fs.defaultFS
              hdfs://ns1
              
              
              
                     hadoop.tmp.dir
                     /opt/app/hadoop-2.5.0/data/tmp
              
        6 )拷贝配置好的 hadoop 环境到其他节点
3 HA 启动
1 )在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务:
                      sbin/hadoop-daemon.sh start journalnode
2 )在 [nn1] 上,对其进行格式化,并启动:
                      bin/hdfs namenode –format
                      sbin/hadoop-daemon.sh start namenode
3 )在 [nn2] 上,同步 nn1 的元数据信息:
                      bin/hdfs namenode –bootstrapStandby
4 )启动 [nn2]
                      sbin/hadoop-daemon.sh start namenode
        5 )查看 web 页面显示
          这时候hadoop102,hadoop103都是standby状态
6 )在 [nn1] 上,启动所有 datanode
                      sbin/hadoop-daemons.sh start datanode
7 )将 [nn1] 切换为 Active
                      bin/hdfs haadmin –transitionToActive nn1
        8 )查看是否 Active
                      bin/hdfs haadmin –getServiceState nn1

3 ZookeeperHA配置高可用

1 Zookeeper 配置 HA 自动故障转移架构图
hadoop的HA高可用机制配置搭建_第1张图片
2 )具体配置
        1 )在 hdfs-site.xml 中增加

       dfs.ha.automatic-failover.enabled
       true

        2 )在 core-site.xml 文件中增加

       ha.zookeeper.quorum
       hadoop102:2181,hadoop103:2181,hadoop104:2181

3 )启动
        1 )关闭所有 HDFS 服务:
              sbin/stop-dfs.sh
        2 )启动 Zookeeper 集群:
              bin/zkServer.sh start
        3 )初始化 HA Zookeeper 中状态:
              bin/hdfs zkfc -formatZK
        4 )启动 HDFS 服务:
              sbin/start-dfs.sh
        5 )在各个 NameNode 节点上启动 DFSZK Failover Controller ,先在哪台机器启动,哪个机器的 NameNode 就是 Active NameNode
              Sbin/hadoop-daemin.sh start zkfc
4 )验证
        1 )将 Active NameNode 进程 kill
              kill -9 pid
        2 )将 Active NameNode 机器断开网络
              service network stop

 4.HDFS Federation架构设计

  1. NameNode架构的局限性
1 Namespace (命名空间)的限制
由于 NameNode 在内存中存储所有的元数据( metadata ),因此单个 namenode 所能存储的对象(文件 + 块)数目受到 namenode 所在 JVM heap size 的限制。 50G heap 能够存储 20 亿( 200million )个对象,这 20 亿个对象支持 4000 datanode 12PB 的存储(假设文件平均大小为 40MB )。随着数据的飞速增长,存储的需求也随之增长。单个 datanode 4T 增长到 36T ,集群的尺寸增长到 8000 datanode 。存储的需求从 12PB 增长到大于 100PB
2 )隔离问题
由于 HDFS 仅有一个 namenode ,无法隔离各个程序,因此 HDFS 上的一个实验程序就很有可能影响整个 HDFS 上运行的程序。
        3 )性能的瓶颈
        由于是单个 namenode HDFS 架构,因此整个 HDFS 文件系统的吞吐量受限于单个 namenode 的吞吐量。
2 HDFS Federation 架构设计
能不能有多个 NameNode
NameNode                                 NameNode                                 NameNode
元数据                                         元数据                                         元数据
Log                                            machine                                      电商数据 / 话单数据
hadoop的HA高可用机制配置搭建_第2张图片
3 HDFS Federation 应用思考
不同应用可以使用不同 NameNode 进行数据管理
         图片业务、爬虫业务、日志审计业务
Hadoop 生态系统中,不同的框架使用不同的 namenode 进行管理 namespace 。(隔离性)

你可能感兴趣的:(hadoop开发相关,Hadoop从入门到高薪指南)