• 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
  • 相关阅读:
    AngularJS 指令的 Scope (作用域)
    ubuntu16安装使用chrome
    kibana 和ES安装配置常见问题解决
    angular-translate国际化
    安装指定版本的nodejs
    Sass (Syntactically Awesome StyleSheets)
    小程序的网路请求赋值
    c# List<List<object(Id,Name)> 转换成 Dictionary<string, string>
    c# linq List<T> To Excel
    c# 格式化easyui tree
  • 原文地址:https://www.cnblogs.com/zyde/p/9225251.html
Copyright © 2020-2023  润新知