zookeeper搭建

zookeeper:
    分布式协同服务,负责处理分布式框架所产生的一些问题


分布式框架:
    可扩展性
    透明性
    高可靠性


分布式框架的弊端:
    不一致性:单个节点数据的缺失,处理数据
    竞态条件:多个节点同时处理一个只需要一个节点处理的数据
    死锁:      两个节点互相等待对方完成


zk为了解决问题能提供什么服务?
    
    名字服务:    标识集群中的所有节点,(节点能够向其注册并产生唯一标识)
    配置管理:    存储配置文件,以便共享
    集群管理:    添加或删除节点同时,事实更新集群信息
    领袖推选机制:    
    锁和同步服务:    当文件进行修改,会将其进行加锁,防止多用户同时写入
    高有效性数据注册:


zk:
    follower    
    leader            

    推荐配置奇数个节点:
        (n-1)/2 个节点挂掉,仍能提供服务,超过则挂掉    //奇数
        n/2    个节点挂掉,不能提供服务,        //偶数


    2888:leader独有端口,负责和follower进行通信
    3888:负责leader选举的端口

    2181:client端口


zk启动:
    zkServer.sh start    //启动zk
            stop
            status

    
    zkCli.sh        //启动本地zk客户端
    zkCli.sh -server s102:2181    //启动远程zk客户端

    zk的节点和数据,是zk的目录结构

    节点    数据
    /    'tom'
    /a/b    ...
    /aaa

    create    /a ''        //创建节点:持久节点    客户端断开不会自动删除
    create    /a -e ''    //创建节点:临时节点    客户端断开会自动删除
    create    /a -s ''    //创建节点:序列节点    在节点后加上10位的自增字段

    rmr    /a/b/c        //递归删除
    delete    /a        //不能递归

    ls /        //列出孩子节点
    stat /        //查询节点状态,不包括数据
    get /        //查询数据并返回状态
    set /        //修改节点数据


使用zk对hdfs实现自动容灾:hdfs-site.xml


<!-- =======================配置hdfs自动容灾======================= -->
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

  <property>
   <name>ha.zookeeper.quorum</name>
   <value>s102:2181,s103:2181,s104:2181</value>
 </property>

    0、启动zk,不用启动hdfs进程
    1、配置文件,如上
    2、分发hdfs-site.xml
    3、hdfs zkfc -formatZK
    4、启动hdfs进程


 zkfc进程:zookeeper failover controller    //zk容灾管理器





初始化journalnode方法:关闭所有namenode进程
    hdfs namenode -initializeSharedEdits


hadoop ha的切换:
================================
    nn1    //s101
    nn2    //s105

    hdfs haadmin -transitionToActive [--forcemanual] nn1    //强制切换
    hdfs haadmin -transitionToStandby nn1
    hdfs haadmin -getServiceState nn1

    无法将两个namenode处于standby或active状态


resourcemanager配置高可用以及自动容灾:yarn-site.xml
==============================================
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>mycluster</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>s101</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>s105</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>s101:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>s105:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>s102:2181,s103:2181,s104:2181</value>
</property>

    0、zk保持开启,yarn不要启动
    1、配置文件,如上
    2、分发文件yarn-site.xml
    3、在/soft/hadoop/etc/hadoop下添加rm_hosts文件,内容如下
        s101
        s105

    4、修改/soft/hadoop/sbin/start-yarn.sh倒数第五行,改为
        "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR --hosts rm_hosts  start resourcemanager
    
       修改/soft/hadoop/sbin/stop-yarn.sh倒数第五行,改为
        "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR --hosts rm_hosts  stop resourcemanager
        

    5、分发以上三个配置文件


    6、start-yarn.sh并查看8088端口,可看出一个节点为active模式,另一个为standby



重新格式化HA模式的hadoop集群:
===========================================
    1、停止进程:
        stop-all.sh    //停止hadoop进程
        xzk.sh stop    //停止zk进程

    2、将s101-s105的临时(工作)目录删除
        xcall.sh "rm -rf ~/hadoop/*"

    3、在s102-s104节点启动journalnode    //s101
        hadoop-daemons.sh start journalnode
    
    4、格式化s101的namenode
        hdfs namenode -format

    5、将s101的工作目录分发到s105
        rsync -r ~/hadoop centos@s105:~/

    6、启动zk
    7、启动hadoop

hadoop进程:
    slave:s102 s103 s104

    s101和s105:
        namenode
        resourcemanager
        DFSZKFailoverController(zkfc)

    s102-s104:
        datanode
        nodemanager
        journalnode

zk进程
    s102-s104:
        QuorumPeerMain

 

posted on 2018-06-25 17:16  飞机耳朵  阅读(127)  评论(0编辑  收藏  举报

导航