Zookeeper的搭建及Zookeeper实现Hadoop的HA

以下步骤,除非特别说明,否则在四台机器上都要单独执行一次。

1、架构角色分配

Linux001: DataNode、NodeManager、
Linux002: DataNode、NodeManager、JournalNode、QuorumPeermain
Linux003: NameNode(备)、ResourceManager(备)、ZKFC、JournalNode、QuorumPeermain
Linux004: NameNode(主)、ResourceManager(主)、ZKFC、JournalNode、QuorumPeermain

2、与Hadoop全分布搭建相同的步骤

参考:Hadoop全分布搭建

这儿的第2步即本人的上一篇博客的第2步到第5步,不用看,直接复制黏贴即可。

3、Linux004安装zookeeper(仅Linux004)

1、上传zookeeper-3.4.6.tar.gz到/opt/source目录下
 
2、解压:
   tar -zxvf zookeeper-3.4.6.tar.gz -C ../apps/ 
   
    注意:
        有时候解压后的文件属主和属组会发生变化,如果发生变化请注意修改为你想要的属主和属组
 
3、vi + /etc/profile
       export ZOOKEEPER_HOME=/opt/apps/zookeeper-3.4.6
       export PATH=$PATH:$ZOOKEEPER_HOME/bin
    source /etc/profile
 
4、cp /opt/apps/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/apps/zookeeper-3.4.6/conf/zoo.cfg
    vi +12 /opt/apps/zookeeper-3.4.6/conf/zoo.cfg
        dataDir=/opt/apps/zookeeper-3.4.6/datadir
        行末添加:
            server.1=Linux004:2888:3888
            server.2=Linux003:2888:3888
            server.3=Linux002:2888:3888
   注意:
        dataDir属性在第12行
        server.1/server.2/server.3要与后续的myid文件中内容相对应
        2888通信端口、3888选举端口
 
5、  mkdir /opt/apps/zookeeper-3.4.6/data && cd /opt/apps/zookeeper-3.4.6/data
 
    vi /opt/apps/zookeeper-3.4.6/data/myid
        1
 
    #注意:
        不同节点的zk该数字不一样,该数字与zoo.cfg中的sever.x中的x相对应
        data目录为zookeeper数据存储目录。默认为/tmp目录
 
 
6、拷贝zookeeper安装文件到其他zookeeper节点
   scp -r /opt/apps/zookeeper-3.4.6 Linux002:/opt/apps
   scp -r /opt/apps/zookeeper-3.4.6 Linux003:/opt/apps

4、其他zk节点ZK配置(Linux002和Linux003)

1、vi + /etc/profile
    export ZOOKEEPER_HOME=/opt/apps/zookeeper-3.4.6
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
 
   source /etc/profile
 
2、vi /opt/apps/zookeeper-3.4.6/data/myid
    2
 
   #Linux003修改为2,Linux002修改为3,不可颠倒,因为和zoo.cfg中的配置是相对应的

5、启动zk完成zk搭建及zk命令补充

启动:
    ./zkServer.sh start   
 
 
    #启动时所有zk节点都要执行该命令,启动完成,则zk集群搭建完毕
    #每台zk节点执行jps可以看到zk的进程QuorumPeerMain
 
 
 
 
 
补充:
 
停止zk:
    ./zkServer.sh stop #停止zk,每台都执行
查看状态:
    ./zkServer.sh status #zk有一个leader,多个follower
进入zk客户端:
    ./zkCli.sh
        查看命令帮助:
            help
        查看文件夹:
            ls path
        删除文件[夹]:
            rmr
        查看文件内容:
            get 文件名
退出客户端:
    ctrl+c
        

6、安装hadoop(仅Linux004)

1、上传hadoop-2.6.5.tar.gz安装包到Linux004机子的/opt/source目录下
 
2、解压:
    tar -zxvf hadoop-2.6.5.tar.gz ../apps/
    #注意:
        凡是解压操作一定要注意观察,解压后的文件的属主和属组是否发生变化。发生变化后一定改过来。
 
3、配置环境变量
    vi + /etc/profile    
        export HADOOP_PREFIX=/opt/apps/hadoop-2.6.5
        export PATH=$PATH:$HADOOP_PREFIX/bin
 
4、创建临时数据保存目录
    mkdir /opt/apps/hadoop-2.6.5/tmp
 
   #个人测试环境建议给777权限客避免一些问题
 
5、创建DataNode、NameNode数据保存目录
    mkdir -p /opt/apps/hadoop-2.6.5/data/dfs

7、配置hadoop-env.sh(仅Linux004)

vi +25 /opt/apps/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=/usr/java/jdk1.7.0_80

8、配置core-site.xml(仅Linux004)

vi /opt/apps/hadoop-2.6.5/etc/hadoop/core-site.xml
 
  
        
                fs.defaultFS
                hdfs://mycluster
        
    
           
                hadoop.tmp.dir
                file:///opt/apps/hadoop-2.6.5/tmp
        
    
        
                ha.zookeeper.quorum
                Linux004:2181,Linux003:2181,Linux002:2181
        
       
 
注意:
    hadoop.tmp.dir:
        指定hadoop临时目录, hadoop.tmp.dir 是hadoop文件系统依赖的基础配置。很多路径都依赖它。
        如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这>个路径中。
 

9、配置hdfs-site.xml(仅Linux004)

vi /opt/apps/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
 
   
 
    
        dfs.namenode.name.dir
        file:///opt/apps/hadoop-2.6.5/data/dfs/name
    
    
    
        dfs.namenode.edits.dir
        ${dfs.namenode.name.dir}
    
    
    
        dfs.datanode.data.dir
        file:///opt/apps/hadoop-2.6.5/data/dfs/data
    
    
    
        dfs.replication
        3
    
 

    
        
                dfs.nameservices
                mycluster
        
    
        
                dfs.ha.namenodes.mycluster
                nn1,nn2
        
    
        
                dfs.namenode.rpc-address.mycluster.nn1
                Linux004:8020
        
        
                dfs.namenode.rpc-address.mycluster.nn2
                Linux003:8020
        
    
        
                dfs.namenode.http-address.mycluster.nn1
                Linux004:50070
        
        
                dfs.namenode.http-address.mycluster.nn2
                Linux003:50070
        
 
 
    
        
                dfs.journalnode.http-address
                0.0.0.0:8480
        
        
                dfs.journalnode.rpc-address
                0.0.0.0:8485
        
    
        
                dfs.namenode.shared.edits.dir
                qjournal://Linux004:8485;Linux003:8485;Linux002:8485/mycluster
        
    
        
                dfs.journalnode.edits.dir
                /opt/apps/hadoop-2.6.5/data/dfs/jn
        
    
        
                dfs.ha.automatic-failover.enabled
                true
        
    
        
                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.fencing.ssh.connect-timeout
                30000
        
    
 
    
        
                dfs.hosts
                /opt/apps/hadoop-2.6.5/etc/hadoop/slaves
        
 
#NameNode/Edits Log/DataNode数据存放目录可以不配置,不配置会自动配置在core-site.xml中
    hadoop.tmp.dir属性对应的目录中

10、配置maped-site.xml(仅Linux004)

1、cp /opt/apps/hadoop-2.6.5/etc/hadoop/mapred-site.xml.template /opt/apps/hadoop-2.6.5/etc/hadoop/mapred-site.xml
 
 
 
2、vi /opt/apps/hadoop-2.6.5/etc/hadoop/mapred-site.xml
    
        
                mapreduce.framework.name
                yarn
        
    
        
                mapreduce.jobhistory.address
                Linux004:10020
        
    
        
                mapreduce.jobhistory.webapp.address
                Linux004:19888
        

11、配置yarn-site.xml(仅Linux004)

vi /opt/apps/hadoop-2.6.5/etc/hadoop/yarn-site.xml
    
        
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        
    
        
            yarn.resourcemanager.ha.enabled
            true
        
    
        
            yarn.resourcemanager.ha.automatic-failover.enabled
            true
        
    
        
            yarn.resourcemanager.cluster-id
            yarn-cluster
        
    
        
            yarn.resourcemanager.ha.rm-ids
            rm1,rm2
        
    
        
            yarn.resourcemanager.hostname.rm1
            Linux004
        
        
            yarn.resourcemanager.hostname.rm2
            Linux003
        
    
        
            yarn.resourcemanager.zk-address
            Linux004:2181,Linux003:2181,Linux002:2181
        
    
        
            yarn.resourcemanager.zk.state-store.address
            Linux004:2181,Linux003:2181,Linux002:2181
        
    

12、配置slaves(仅Linux004)

vi /opt/apps/hadoop-2.6.5/etc/hadoop/slaves
 
    Linux001
    Linux002

13、将配置好的hadoop拷贝到其他节点(仅Linux004)

scp -r /opt/apps/hadoop-2.6.5 root@Linux001:/opt/apps/
 
 
scp -r /opt/apps/hadoop-2.6.5 root@Linux002:/opt/apps/
 
 
scp -r /opt/apps/hadoop-2.6.5 root@Linux003:/opt/apps/

14、加入环境变量(除Linux004外的其他节点)

环境变量:
    vi + /etc/profile
        export HADOOP_PREFIX=/opt/apps/hadoop-2.6.5
        export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
 
    source /etc/profile
 
#输入start双击tab键如果出现hadoop的相关脚本,则环境变量配置成功

15、在所有JournalNode节点启动JournalNode(除Linux001外的其他节点)

cd /opt/apps/hadoop-2.6.5/sbin && hadoop-daemon.sh start journalnode
 
 
#启动journalnode方便格式化时元数据落在journalnode上
#启动后执行jps命令会多一个JournalNode进程

16、格式化NameNode并同步元数据(仅Linux004)

说明:
    选定一台namenode节点,你选Linux003也行,进行格式化。格式化后在该机器上将NameNode元数据文件拷贝到另一台NameNode节点。
 
1、/opt/apps/hadoop-2.6.5/bin/hdfs namenode -format
 
2、scp -r /opt/apps/hadoop-2.6.5/data/dfs/name Linux003:/opt/apps/hadoop-2.6.5/data/dfs/
 
 
注意:
    格式化失败:
        先关闭集群,journalnode也关掉。
        然后删除本机上/opt/apps/hadoop-2.6.5/data/dfs和/opt/apps/hadoop-2.6.5/tmp两个文件夹
        再删除其他节点上的hadoop安装目录。
        然后重新重第13步执行起。

17、格式化Zookeeper(仅Linux004)

cd /opt/apps/hadoop-2.6.5/bin/ && hdfs zkfc -formatZK
 
#仅在集群搭建额时候需要格式化

18、启动hadoop集群

start-all.sh

19、启动备用ResourceManager节点

cd /opt/apps/hadoop-2.6.5/sbin && yarn-daemon.sh start resourcemanager
 
#备用的namenode不用手动启动,但备用的resourcemanager需要手动启动
 


##集群的监控和关闭怎么搞呢?
关闭和启动顺序相反即可

你可能感兴趣的:(Hadoop,Hadoop核心技术)