Hadoop-HA模式的搭建(手把手教,超细)

参考的Hadoop官

如果没有看过,请参照下文搭建!我们接下来的HA(高可用模式)是基于我们完全分布式的补充

先说一下此篇文章各个节点的角色

                        NameNode                DataNode        zookeeper           journalNode        zkfc

node01                  *                                                                                        *                *

node02                  *                                     *                        *                        *                *

node03                                                        *                        *                        *

node04                                                        *                        *
 

环境:

1.已经搭好完全分布式的四台虚拟机

2.zookeeper-3.4.6.tar.gz

1.背景

在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集只有一个NameNode,并且如果该计算机或进程不可用,则整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动。

这从两个方面影响了HDFS群集的总可用性:

  • 如果发生意外事件(例如机器崩溃),则在操作员重新启动NameNode之前,群集将不可用。

  • 计划内的维护事件,例如NameNode计算机上的软件或硬件升级,将导致群集停机时间的延长。

HDFS高可用性功能通过提供以下选项来解决上述问题:在具有热备用功能的主动/被动配置中,可以在同一群集中运行两个(自3.0.0起,超过两个)冗余NameNode。这可以在计算机崩溃的情况下快速故障转移到新的NameNode,或出于计划维护的目的由管理员发起的正常故障转移。

概念补充:

主从模式:一个主,多个从。主用于读写,从用于读,如果访问从节点想要写数据,那么从节点会转给主节点,让它进行写

主备模式:“养兵千日,用兵一时”,没错,就是先备着一台主机,当主的备胎,等主挂掉了之后,备机才会被使用,在这之前只是让其与主的数据同步,不会对其进行使用。

两者区别:根本区别,一个不养着,直接使用;另外一个,等到主挂了之后,才进行使用。

2.ssh免密node01,node02

node02: 
            cd ~/.ssh
            ssh-keygen -t dsa -P ” -f ./id_dsa
            cat id_dsa.pub >> authorized_keys
            scp ./id_dsa.pub  node01:`pwd`/node02.pub
        node01:
            cd ~/.ssh
            cat node02.pub >> authorized_keys

3.zookeeper集群的搭建

node02~node04

node02:

(2)将zookeeper移动到 /opt/poke/bigdata中 : mv zookeeper… /opt/poke/bigdata

(3)cd /opt/poke/bigdata/zookeeper../conf

(4)cp zoo_sample.cfg zoo.cfg

(5)vi zoo.cfg

(6)创建一个和上图datadir对应的目录 :mkdir /var/poke/bigdata/hadoop/zk

(7)设置myid 对应上图的server.x :x为myid的数值,echo 1 > /var/poke/bigdata/hadoop/zk/myid

(8)修改/etc/profile:

 source /etc/profile

(9)将zookeeper拷给node03 04

cd /opt/poke/bigdata

scp -r ./zookeeper-3.4.6 node03:`pwd`

scp -r ./zookeeper-3.4.6 node04:`pwd`

node03:

mkdir /var/poke/bigdata/hadoop/zk

echo 2 > /var/poke/bigdata/hadoop/zk/myid

配置/etc/profile

source /etc/profile

node04:

mkdir /var/poke/bigdata/hadoop/zk

echo 3 > /var/poke/bigdata/hadoop/zk/myid

配置/etc/profile

source /etc/profile

最后,打开node02-node04的zookeeper

zkServer.sh start

4.修改hadoop的相关配置

cd $HADOOP_HOME/etc/hadoop

core-site.xml
                   fs.defaultFS
          hdfs://mycluster
        

                    ha.zookeeper.quorum
           node02:2181,node03:2181,node04:2181
        

    hdfs-site.xml

                         dfs.replication
                2
        
                        dfs.namenode.name.dir
                /var/poke/bigdata/hadoop/ha/dfs/name
        

                             dfs.datanode.data.dir
                /var/poke/bigdata/hadoop/ha/dfs/data
            

                             dfs.namenode.secondary.http-address
                node02:50090
            

                             dfs.namenode.checkpoint.dir
                /var/poke/bigdata/hadoop/ha/dfs/secondary
            
                   dfs.nameservices
          mycluster
        
                   dfs.ha.namenodes.mycluster
          nn1,nn2
        
                   dfs.namenode.rpc-address.mycluster.nn1
          node01:8020
        
                   dfs.namenode.rpc-address.mycluster.nn2
          node02:8020
        
                   dfs.namenode.http-address.mycluster.nn1
          node01:50070
        
                   dfs.namenode.http-address.mycluster.nn2
          node02:50070
        
                   dfs.namenode.shared.edits.dir
          qjournal://node01:8485;node02:8485;node03:8485/mycluster
        
                   dfs.journalnode.edits.dir
          /var/poke/bigdata/hadoop/ha/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_dsa
        
                     dfs.ha.automatic-failover.enabled
           true
         

5.将node02的配置分发给node01,03,04

cd $HADOOP_HOME/etc

scp -r hadoop node01:`pwd`

scp -r hadoop node03:`pwd`

scp -r hadoop node04:`pwd`

 

6.初始化与启动

参照前面的各个节点角色表

        (1)先启动JN (node01,02)  hadoop-daemon.sh start journalnode 
        (2)选择一个NN 做格式化(node01或者node02):hdfs namenode -format   
        (3) 启动这个格式化的NN ,以备另外一台同步 hadoop-daemon.sh start namenode 
        (4) 在另外一台机器中: hdfs namenode -bootstrapStandby(另一台备用namenode输入这个命令) 
        (5) 格式化zk(node01):   hdfs zkfc  -formatZK    
        (6)  开启服务(node01):start-dfs.sh

 

7.结果与验证(这个自己去操作)

 

同学们如果感觉我的理解有误,请及时指出!

最后,写作不易,如果对您有帮助的话,请点个赞!

 

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8775 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月15日
下一篇 2021年10月15日

相关推荐