Hadoop 2.4.1 HA集群搭建

一:注意事项和准备工作

  1.1  准备3台Linux,可以ubuntu或者centOS ,本机设备性能不高,建议用设置开机进入命令行,然后用远程操作

  1.2  a .linux 必须关掉防火墙  b.设置ip和主机名并且配置ip和主机映射关系(不懂百度一下)

         b.用root用户进行操作,后面可以遇到最大limit文件数的问题,root可以直接操作,比较方便!

 1.3 群集规划


二:操作步骤

 2.1 安装jdk并设置环境变量(不懂可以看上一篇Hadoop伪分布搭建)

 2.2 配置免密码登陆

   a. #首先要配置sunshine02到sunshine02、sunshine03、sunshine04的免密码

   b. #在sunshine02上生产一对钥匙 

                  ssh-keygen -t rsa

   c .#将公钥拷贝到其他节点,包括自己

                  ssh-copy-id sunshine02

                  ssh-copy-id sunshine03

                  ssh-copy-id sunshine04

  d. sunshine03到sunshine02、sunshine03、sunshine04的免密码同上操作

  e. sunshine04到sunshine02、sunshine03、sunshine04的免密码同上操作

  f. 注意:两个namenode之间要配置ssh免密码登陆

 2.3 安装配置zooekeeper集群(在sunshine02上)

  a. 解压tar -zxvf zookeeper-3.4.5.tar.gz -C /home/linwentao/desktop/app   (后面自己路径可以自己定义)

  b. 修改配置

            cd /home/linwentao/desktop/app/zookeeper-3.4.5/conf/

            cp zoo_sample.cfg zoo.cfg

            vim zoo.cfg  修改:dataDir=/home/linwentao/desktop/app/zookeeper-3.4.5/tmp

                                              dataLogDir=/home/zookeeper/logs

            在最后添加:

           server.1=sunshine02:2888:3888

           server.2=sunshine03:2888:3888

           server.3=sunshine04:2888:3888

          保存退出

         创建一个tmp和logs文件夹

          mkdir /home/linwentao/desktop/app/zookeeper-3.4.5/tmp

          mkdir /home/linwentao/desktop/app/zookeeper-3.4.5/logs

           创建一个空文件

           touch /home/linwentao/desktop/app/zookeeper-3.4.5/tmp/myid

           向该文件写入ID 

            echo 1 > /home/linwentao/desktop/app/zookeeper-3.4.5/tmp/myid

 c. 将配置好的zookeeper拷贝到其他节点(sunshine03,sunshine04)

    scp -r /home/linwentao/desktop/app/zookeeper-3.4.5/  sunshine03:/home/linwentao/desktop/app/

    scp -r /home/linwentao/desktop/app/zookeeper-3.4.5/  sunshine04:/home/linwentao/desktop/app/

    注意:必须修改sunshine03、sunshine04 里面的myid的值(对应值为前面配置zoo.cfg最后server后面的数值)

    sunshine03-----2        sunshine04----3

2.4 安装hadoop群集

  a. 先对一台进行安装,然后进行复制或传输即可

  b .修改core-site.xml

   

         

         

                          fs.defaultFS

                          hdfs//ns1

           

         

           

                              hadoop.tmp.dir

                              /home/linwentao/desktop/app/hadoop-2.4.1/tmp

           

           

             

                                ha.zookeeper.quorum

                               sunshine02:2181,sunshine03:2181,sunshine04:2181 

               

 

   c. 修改hdfs-site.xml

         

               

                   

                            dfs.nameservices

                            ns1

                   

                   

                   

                             dfs.ha.namenodes.ns1

                            nn1,nn2

                   

                 

                 

                          dfs.namenode.rpc-address.ns1.nn1

                          sunshine02:9000

                 

                 

                 

                              dfs.namenode.http-address.ns1.nn1

                            sunshine02:50070

                 

                 

                 

                           dfs.namenode.rpc-address.ns1.nn2

                          sunshine03:9000

                   

                 

               

                           dfs.namenode.http-address.ns1.nn2

                             sunshine03:50070

               

             

             

                      dfs.namenode.shared.edits.dir


                     qjournal://sunshine02:8485;sunshine03:8485;sunshine04:8485/ns1  

             

             

             

                        dfs.journalnode.edits.dir

                         /home/linwentao/desktop/app/hadoop-2.4.1/journaldata  

             

             

             

                     dfs.ha.automatic-failover.enabled

                     true

             

             

            

                  dfs.client.failover.proxy.provider.ns1


                  org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider                

         

             

             

                         dfs.ha.fencing.methods

                         

                                           sshfence

                                         shell(/bin/true)

                                                                         

                   

                      < !-- 使用sshfence隔离机制时需要ssh免登陆 -->

                   

                                    dfs.ha.fencing.ssh.private-key-files

                                      /home/root/.ssh/id_rsa

                   

                   

                   

                                     dfs.ha.fencing.ssh.connect-timeout

                                    30000

                     

       

 d.修改mapred-site.xml

             

                            

                            

                                        mapreduce.framework.name

                                        yarn

                                

            

e.修改yarn-site.xml

               

                                    

                                    

                                                  yarn.resourcemanager.ha.enabled

                                                  true

                                     

                                    

                                       

                                                  yarn.resourcemanager.cluster-id

                                                      yrc

                                            

                                     

                                   

                                                  yarn.resourcemanager.ha.rm-ids

                                                      rm1,rm2

                                        

                                    

                                        

                                                  yarn.resourcemanager.hostname.rm1

                                                  sunshine02

                                           

                                            

                                                      yarn.resourcemanager.hostname.rm2

                                                      sunshine03

                                            

                                           

                                     

                                              yarn.resourcemanager.zk-address

                                               sunshine02:2181,sunshine03:2181,sunshine04:2181

                                     

                                     

                                                  yarn.nodemanager.aux-services

                                                  mapreduce_shuffle

                                       

             

  f .修改slaves(slaves是指定子节点的位置,因为要在sunshine02上启动HDFS、在sunshine03启动yarn,所以sunshine02上的slaves文件指定的是      datanode的位置,sunshine03上的slaves文件指定的是nodemanager的位置)

      sunshine02   : sunshine02、sunshine03、sunshine04

      sunshine03   : sunshine02、sunshine03、sunshine04

三:启动操作(严格按照下面的步骤)

   3.1 启动zookeeper集群(分别在sunshine02、sunshine03、sunshine04上启动zk)

             cd /home/linwentao/desktop/app/zookeeper-3.4.5/bin/

             ./zkServer.sh start

           #查看状态:一个leader,两个follower

           ./zkServer.sh status

 3.2 启动journalnode(分别在在sunshine02、sunshine03、sunshine04上执行)

                   cd /home/linwentao/desktop/app/hadoop-2.4.1

                  sbin/hadoop-daemon.sh start journalnode

     #运行jps命令检验,sunshine02、sunshine03、sunshine04上多了JournalNode进程

3.3 格式化HDFS

      #在weekend01上执行命令: hdfs namenode -format

      #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配  置的是/home/linwentao/desktop/app/hadoop-                         2.4.1/ tmp,然后将/home/linwentao/desktop/app/hadoop-2.4.1/ tmp拷贝到sunshine03的/weekend/hadoop-2.4.1/下。

              scp -r tmp/  sunshine03:/home/linwentao/desktop/app/hadoop-2.4.1/

3.4 格式化ZKFC(在sunshine02上执行即可)

            hdfs zkfc -formatZK

3.5 启动HDFS(在sunshine02上执行)

          start-dfs.sh

3.6 启动YARN(可以在sunshine02、sunshine03、sunshine04其中一台开,建议在sunshine04, 为把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)

四:验证

 http://192.168.157.140:50070

NameNode 'sunshine02:9000' (active)

http://1192.168.157.141:50070

NameNode 'sunshine03:9000' (standby)

验证HDFS HA

首先向hdfs上传一个文件

hadoop fs -put /etc/profile /profile

hadoop fs -ls /

然后再kill掉active的NameNode

kill -9

通过浏览器访问:http://192.168.157.141:50070

NameNode 'sunshine03:9000' (active)

这个时候weekend02上的NameNode变成了active

在执行命令:

hadoop fs -ls /

刚才上传的文件依然存在!!!

手动启动那个挂掉的NameNode

sbin/hadoop-daemon.sh start namenode

通过浏览器访问:http://192.168.157.140:50070

NameNode 'sunshine02:9000' (standby)

OK,大功告成!!!

测试集群工作状态的一些指令 :

bin/hdfs dfsadmin -report 查看hdfs的各节点状态信息

bin/hdfs haadmin -getServiceState nn1 获取一个namenode节点的HA状态

sbin/hadoop-daemon.sh start namenode  单独启动一个namenode进程

./hadoop-daemon.sh start zkfc   单独启动一个zkfc进程

你可能感兴趣的:(Hadoop 2.4.1 HA集群搭建)