hadoop2.2.0的ha分布式集群搭建
阅读原文时间:2021年04月20日阅读:1

hadoop2.2.0 ha集群搭建

使用的文件如下:
    jdk-6u45-linux-x64.bin
    hadoop-2.2.0.x86_64.tar
    zookeeper-3.4.5.tar.gz
    hbase-0.96.2-hadoop2-bin.tar
    使用WinSCP工具将上述文件复制到linux的根目录的cloud文件夹下

文件所在路径为:
    /cloud/jdk-6u45-linux-x64.bin
    /cloud/hadoop-2.2.0.x86_64.tar
    /cloud/zookeeper-3.4.5.tar.gz
    /cloud/hbase-0.96.2-hadoop2-bin.tar

文件安装路径为:
    /cloud/jdk
    /cloud/hadoop

1使用wmware创建6台虚拟机,这里不再一一叙述配置过程
    主机名    IP地址            安装的软件                                运行的进程
    hdp1    192.168.1.11    jdk1.6、hadoop2.2.0                        NameNode、DFSZKFailoverController
    hdp2    192.168.1.12    jdk1.6、hadoop2.2.0                        NameNode、DFSZKFailoverController
    hdp3    192.168.1.13    jdk1.6、hadoop2.2.0                        ResourceManager
    hdp4    192.168.1.14    jdk1.6、hadoop2.2.0、zookeeper3.4.5        DataNode、NodeManager、JournalNode、QuorumPeerMain
    hdp5    192.168.1.15    jdk1.6、hadoop2.2.0、zookeeper3.4.5        DataNode、NodeManager、JournalNode、QuorumPeerMain
    hdp6    192.168.1.16    jdk1.6、hadoop2.2.0、zookeeper3.4.5        DataNode、NodeManager、JournalNode、QuorumPeerMain
    
2关闭防火墙
    关闭防火墙如下:      
    停止运行防火墙:service iptables stop  
    关闭防火墙自启动:chkconfig iptables off  
    验证防火墙是否关闭:chkconfig --list | grep iptables  
    
3生成ssh免密码登录
    分别在每个节点上生成公钥私钥:
        cd /root/.ssh    
        ssh-keygen -t rsa三次回车  
        cp id_rsa.put authorized_keys
    将hdp2、hdp3、hdp4、hdp5、hdp6的私钥复制到hdp1节点上:
        在hdp2节点上执行:ssh-copy-id -i hdp1
        在hdp3节点上执行:ssh-copy-id -i hdp1
        在hdp4节点上执行:ssh-copy-id -i hdp1
        在hdp5节点上执行:ssh-copy-id -i hdp1
        在hdp6节点上执行:ssh-copy-id -i hdp1
    将hdp1节点上的authorized_keys复制给hdp2、hdp3、hdp4、hdp5、hdp6节点:
        在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp2:/root/.ssh/
        在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp3:/root/.ssh/
        在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp4:/root/.ssh/
        在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp5:/root/.ssh/
        在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp6:/root/.ssh/
    验证ssh免密码登录(包括登录自己):
        在hdp1节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        在hdp2节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        在hdp3节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        在hdp4节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        在hdp5节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        在hdp6节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
        
4配置hdp1节点上的jdk-6u45-linux-x64.bin
    cd /cloud/目录下
        为jdk-6u45-linux-x64.bin赋予执行权限:chmod u+x jdk-6u45-linux-x64.bin
        在当前目录下解压jdk-6u45-linux-x64.bin:./jdk-6u45-linux-x64.bin(/cloud/文件夹下多了一个jdk1.6.0.45文件夹)
        重命名jdk1.6.0.45:mv jdk1.6.0.45 jdk
    配置jdk到环境变量:
        vi /etc/profile添加如下内容:
        export JAVA_HOME=/cloud/jdk
        export PATH=.:$JAVA_HOME/bin:$PATH
        保存退出
    使修改的环境变量立即生效:
        source /etc/profile
    验证jak:
        java -version
        
5配置hdp1节点上的hadoop-2.2.0.x86_64.tar
    cd /cloud/目录下
        在当前目录下解压hadoop-2.2.0.x86_64.tar:tar -zxvf hadoop-2.2.0.x86_64.tar(/cloud/下多了个hadoop-2.2.0文件夹)
        重命名hadoop2.2.0:mv hadoop-2.2.0 hadoop
    配置hadoop到环境变量:
        vi /etc/profile添加如下内容:
        export HADOOP_HOME=/cloud/hadoop
        修改PATH变量为:export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
        保存退出
    使修改的环境变量立即生效:
        source /etc/profile
    修改位于hadoop/etc/hadoop下的配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves)如下:
        修改hadoop-env.sh的27行jdk
            export JAVA_HOME=/cloud/jdk
            
        修改core-site.xml
                                                                   fs.defaultFS                     hdfs://ns1                                                                        hadoop.tmp.dir                     /cloud/hadoop/data                                                                        ha.zookeeper.quorum                     hdp4:2181,hdp5:2181,hdp6:2181                              
            
        修改hdfs-site.xml
                                                                           dfs.nameservices                     ns1                                                                        dfs.ha.namenodes.ns1                     nn1,nn2                                                                        dfs.namenode.rpc-address.ns1.nn1                     hdp1:9000                                                                        dfs.namenode.http-address.ns1.nn1                     hdp1:50070                                                                        dfs.namenode.rpc-address.ns1.nn2                     hdp2:9000                                                                        dfs.namenode.http-address.ns1.nn2                     hdp2:50070                                                                        dfs.namenode.shared.edits.dir                     qjournal://hdp4:8485;hdp5:8485;hdp6:8485/ns1                                                                        dfs.journalnode.edits.dir                     /cloud/hadoop/journal                                                                        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                                                                        dfs.ha.fencing.ssh.private-key-files                     /root/.ssh/id_rsa                                                    修改mapred-site.xml                                                                    mapreduce.framework.name                     yarn                              

        修改yarn-site.xml
            
                
                
                                     yarn.resourcemanager.hostname                     hdp3                 
                
                                     yarn.nodemanager.aux-services                     mapreduce_shuffle                 
            </configuration
            
        修改slaves
            hdp4
            hdp5
            hdp6
    由于core-site.xml中指定了hadoop数据存放的本地磁盘路径是/cloud/hadoop/data,而这个/cloud/hadoop/下data文件夹是不存在需要创建;
    由于hdfs-site.xml中指定了JournalNode在本地磁盘存放数据的位置是/cloud/hadoop/journal,而/cloud/hadoop/下的journal文件夹是不存在的需要创建。
    此上6个配置文件都是hdp1节点上的,修改完成后将配置好的环境变量/etc/profile文件、/cloud/jdk文件夹和/cloud/hadoop文件夹复制到其他节点:
        将/cloud/jdk文件夹和/cloud/hadoop文件夹复制到其他节点:
            在hdp1节点上执行:scp -r /cloud/ hdp2:/
            在hdp1节点上执行:scp -r /cloud/ hdp3:/
            在hdp1节点上执行:scp -r /cloud/ hdp4:/
            在hdp1节点上执行:scp -r /cloud/ hdp5:/
            在hdp1节点上执行:scp -r /cloud/ hdp6:/
        将环境变量/etc/profile文件复制到其他节点(在其他节点上要执行source /etc/profile使其修改立即生效):
            scp /etc/profile hdp2:/etc/
            scp /etc/profile hdp3:/etc/
            scp /etc/profile hdp4:/etc/
            scp /etc/profile hdp5:/etc/
            scp /etc/profile hdp6:/etc/

6在hdp4节点配置zookeeper-3.4.5.tar.gz
    cd /cloud/目录下
        解压zookeeper-3.4.5.tar.gz:tar -zxvf zookeeper-3.4.5.tar.gz(当前目录下多了一个zookeeper-3.4.5文件夹)
        重命名zookeeper-3.4.5:mv zookeeper-3.4.5 zk
        cd到/cloud/zk/conf/目录下:cp zoo_sample.cfg zoo.cfg
        vi zoo.cfg
            修改:dataDir=/cloud/zk/data
            在最后面添加:
            server.1=hdp4:2888:3888
            server.2=hdp5:2888:3888
            server.3=hdp6:2888:3888
        在/cloud/zk/创建data文件夹,进入/cloud/zk/data下创建myid文件,内容为1
        将/cloud/zk文件夹复制到hdp5和hdp6下:
            在hdp4节点上执行:scp -r /cloud/zk hdp5:/cloud/
            在hdp4节点上执行:scp -r /cloud/zk hdp6:/cloud/
            
            在hdp5节点上修改/cloud/zk/data/myid为2
            在hdp6节点上修改/cloud/zk/data/myid为3
            
7启动hdp4、hdp5和hdp6节点上的zk
    分别在每个节点上执行:
        cd /cloud/zk/bin目录下
        启动zk:zkServer.sh start
        查看状态:
            zkServer.sh status(leader或follower)
            jps后多出来个quorumpeerMain
        
8在hdp1节点上启动journalnode(会启动所有journalnode)
    cd /cloud/hadoop/sbin目录下
    启动journalnode:hadoop-daemons.sh start journalnode(在hdp4、hdp5和hdp6节点上运行jps命令检验,多了JournalNode进程)        
        
9在hdp1节点上格式化HDFS
    格式化HDFS:hadoop namenode -format
    将格式化后生成的hadoop的数据文件都在hdp1节点上,需要将hdp1节点上的数据同步到hdp2节点上,因为hdp1节点和hdp2节点是ha,这里我直接复制:scp -r /cloud/hadoop/data hdp2:/cloud/hadoop
    
10在hdp1节点上格式化ZK
    格式化ZK:hdfs zkfc -formatZK
        
11在hdp1节点上启动HDFS
    cd /cloud/hadoop/sbin目录下
    启动HDFS:start-dfs.sh

12在hdp3节点上启动YARN
    cd /cloud/hadoop/sbin目录下
    启动YARN:start-yarn.sh
    
验证:
    验证hdp1节点上的NameNode:jps或者http://hdp1:50070
    验证hdp2节点上的NameNode:jps或者http://hdp2:50070
    验证hdp3节点上的YARN:jps或者http://hdp3:8088/
    
    各个节点进程如下:
        hdp1
        5267 DFSZKFailoverController
        4990 NameNode
        5380 Jps
        hdp2
        4471 Jps
        4388 DFSZKFailoverController
        4285 NameNode
        hdp3
        3734 ResourceManager
        3982 Jps
        hdp4
        4214 DataNode
        2373 QuorumPeerMain
        4543 Jps
        4431 NodeManager
        4304 JournalNode
        hdp5
        4050 DataNode
        2458 QuorumPeerMain
        4267 NodeManager
        4374 Jps
        4140 JournalNode
        hdp6
        4437 NodeManager
        4220 DataNode
        4310 JournalNode
        4549 Jps
        2705 QuorumPeerMain
    
完成

   

转载于:https://www.cnblogs.com/mengyao/p/4105288.html