摘要:高可用一个开源的分布式的为分布式应用提供服务的项目提供原语集合以便分布式应用可以在它之上构建更高层次的同步服务角色观察者模式领导者负责进行投票的发起及决议更新状态学习者接受客户端请求并发挥客户端返回结果参与投票接受请求转发给不参与投票只
高可用(HA) -- ZooKeeper ZooKeeper
一个开源的分布式的,为分布式应用提供服务的项目
提供原语集合以便分布式应用可以在它之上构建更高层次的同步服务
角色
观察者模式: leader: 领导者负责进行投票的发起及决议, 更新状态 学习者: follower: 接受客户端请求并发挥客户端返回结果,参与投票 observer: 接受请求,转发给leader,不参与投票,只同步leader. 客户端: 发起请求 观察者模式的应用: 软件皮肤, 编辑工具设置
安装
伪分布模式
1)安装ZooKeeper (再次注意权限) $ tar -zxf /opt/software/zookeeper-3.4.5.tar.gz -C /opt/modules/ 2)新建一个Zookeeper的data目录 $ mkdir zkData --//可以不用手动创建,启动自动生成 3)修改配置文件${ZOOKEEPER_HOME}/conf (注意: 配置文件为模板,需拷贝重名为zoo.cfg) $cd /opt/modules/zookeeper-3.4.5/ ##切换目录到zookeeper-3.4.5 $ cp conf/zoo_sample.cfg conf/zoo.cfg ##拷贝 $ vi conf/zoo.cfg ##修改12行,设置以下: dataDir=/opt/modules/zookeeper-3.4.5/zkData 4)启动zookeeper $bin/zkServer.sh start $ jps #查看java进程如下 2088 QuorumPeerMain 5)查看zookeeper的状态 $bin/zkServer.sh status #信息如下 JMX enabled by default Using config: /opt/modules/zookeeper-3.4.5/bin/../conf/zoo.cfg Mode: standalone #单机模式 6)一些命令的认识 $ bin/zkCli.sh #进入zookper help #查看命令 quit #退出 create #创建 -e临时znode -s 自动编号 get path #查看信息 ls path #查看指定目录的列表 rmr path #删除 ls / #查看根目录 create -e /myapp msg #创建目录 get /myapp #查看myapp创建信息 ls / watch # 添加关注事件 rmr /myapp #删除触发关注事件 quit
完全分布模式
1.安装JDK(3台PC都要安装JDK) 2.安装完全分布式集群 1)安装zk(注意权限) $ tar -zxvf /opt/software/zookeeper-3.4.5.tar.gz -C /opt/modules/ 2)配置zoo.cfg文件 $ cd /opt/modules/zookeeper-3.4.5/ $ cp conf/zoo_sample.cfg conf/zoo.cfg $ vi conf/zoo.cfg #修改添加以下内容 #修改 dataDir=/opt/modules/zookeeper-3.4.5/zkData #15行添加 server.1=centos01.ibeifeng.com:2888:3888 server.2=centos02.ibeifeng.com:2888:3888 server.3=centos03.ibeifeng.com:2888:3888 3)创建zkData目录,在zkData目录目录下创建myid文件,分发 $ mkdir zkData $ touch zkData/myid $ cd /opt/modules/ #切到modules下 从pc1分发到pc2, pc3 $ scp -r zookeeper-3.4.5/ centos02.ibeifeng.com:/opt/modules/ $ scp -r zookeeper-3.4.5/ centos03.ibeifeng.com:/opt/modules/ 4) 修改pc1, pc2, pc3 的myid文件 $ cd /opt/modules/zookeeper-3.4.5/ $ vi zkData/myid #根据conf/zoo.zfg中绑定的server.n对应 pc1的zkData/myid内容是1 pc2的zkData/myid内容是2 pc3的zkData/myid内容是3 5)启动3台的zookeeper $ bin/zkServer.sh start 6)检查进程 $ jps 3050 QuorumPeerMain 3111 Jps 8)检查并核对状态3台的状态 $ bin/zkServer.sh status Zookeeper shell命令 bin/zkCli.sh -server 主机名:2181 或者 bin/zkCli.sh
I) 文件系统(数据结构) Znode 1.代表zookeeper文件系统中的一个目录, 2.代表客户端(如:Namenode) |---/ |---app |---app1 |---app2 |---app2 动物 -> hadoop 中的节点 Namende II) Watch事件 1.NameNode启动,然后向Zookeeper,触发注册事件,同时会创建一个唯一的目录 2.通过心跳信息,来确认节点的状态(存活或者宕机) 3.如果宕机,长时间未收到心跳,触发节点丢失事件,删除这个目录 III)投票(偶数可能僵持) leader的候选人必须获取到超过半数的选票 n+1 zookeeper集群中存活的节点数据必须过半数Namenode HA
一)安装hadoop 此步骤要求,ip映射,主机名,jdk安装配置,hadoop解压 如果分布式已经搭建好,需对三台进行操作. 注意删除data,logs目录!!! 注意修改搭建前,停止相关进程 删除/tmp/*.pid文件 (注意不要全删了!!!!,是删除/tmp/的以pid结尾的) $ rm /tmp/*.pid 免密登录 可以按照下面的步骤修改即可 二)配置环境文件 检查 hadoop-env.sh mapred-env.sh yarn-env.sh 配置 export JAVA_HOME=/opt/modules/jdk1.7.0_67 三)配置hdfs文件 1.========core-site.xml========fs.defaultFS hdfs://ns1 2.=======hdfs-site.xml============= hadoop.tmp.dir /opt/modules/hadoop-2.5.0/data dfs.replication 3 dfs.permissions.enabled false dfs.nameservices ns1 dfs.ha.namenodes.ns1 nn1,nn2 dfs.namenode.rpc-address.ns1.nn1 centos01.ibeifeng.com:8020 dfs.namenode.http-address.ns1.nn1 centos01.ibeifeng.com:50070 dfs.namenode.rpc-address.ns1.nn2 centos02.ibeifeng.com:8020 dfs.namenode.http-address.ns1.nn2 centos02.ibeifeng.com:50070 dfs.namenode.shared.edits.dir qjournal://centos01.ibeifeng.com:8485;centos02.ibeifeng.com:8485;centos03.ibeifeng.com:8485/ns1 dfs.journalnode.edits.dir /opt/modules/hadoop-2.5.0/journal dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /home/hadoop/.ssh/id_rsa 3. ==========配置 slaves start========== centos01.ibeifeng.com centos02.ibeifeng.com centos03.ibeifeng.com 4. ============向第二台和第三台分发数据=============== $ cd /opt/modules/hadoop-2.5.0/ 其他两台机器安装了hadoop,直接覆盖对应的配置文件 (如果没有其他的服务器没有hadoop,可以把hadoop-2.5.0分发到其他两个服务器上) $ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml centos02.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ $ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml centos03.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ 使用命令检查是否分发成功在对应的pc上 $ cat etc/hadoop/hdfs-site.xml $ cat etc/hadoop/core-site.xml 切换到 $ cd /opt/modules/zookeeper-3.4.5/ 四) 启动相关进程 1. ============启动zookeeper相关=========== $ bin/zkServer.sh start $ jps #查看进程 3129 QuorumPeerMain $ bin/zkServer.sh status # 查看状态 JMX enabled by default Using config: /opt/modules/zookeeper-3.4.5/bin/../conf/zoo.cfg Mode: leader #或者是follower 2. ============启动HDFS HA start================= ## 注意:每一个步骤都严格按照以下步骤执行 $ cd /opt/modules/hadoop-2.5.0/ #切换目录 1. 启动journalnode $ sbin/hadoop-daemon.sh start journalnode #在三台分别启动, 日志同步的journalnode进程 $ jps #三台服务器显示 3422 Jps 3281 QuorumPeerMain 3376 JournalNode 2. 格式化namenode 在第一台上操作!!!!! 切记 $ bin/hdfs namenode -format 出现提示:successfully formatted 3. 在第一台(centos01)上启动namenode $ sbin/hadoop-daemon.sh start namenode #jps 查看是否启动 4. 切到第二台(centos02.ibeifeng.com)服务器,让另一个namenode 拷贝元数据 $ bin/hdfs namenode -bootstrapStandby $ sbin/hadoop-daemon.sh start namenode #启动namenode 可以在web页面观察,现在只有namenode启动了, 都是standby状态 http://centos01.ibeifeng.com:50070 http://centos02.ibeifeng.com:50070 5. 使用以下命令将一个namenode active $ bin/hdfs haadmin -transitionToActive nn2 #将第二个namenode作为active http://centos02.ibeifeng.com:50070 发现centos2服务器的namenode 时active状态 dfs.ha.fencing.ssh.connect-timeout 30000
开启故障自动转移
先停止HDFS进程,在机器centos01上执行 $ sbin/stop-dfs.sh 1.配置故障转移 ( 追加) 1)=====core-site.xmlResourceManager HA2)====hdfs-site.xml ha.zookeeper.quorum centos01.ibeifeng.com:2181,centos02.ibeifeng.com:2181,centos03.ibeifeng.com:2181 dfs.ha.automatic-failover.enabled true 2.分发配置文件 $ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml centos02.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ $ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml centos03.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ 3.启动故障转移服务 1)首先停止hdfs和zk $ sbin/stop-dfs.sh ##关闭zk(3台服务器) $ bin/zkServer.sh stop 重启##启动zk(3台服务器) $ bin/zkServer.sh start 2)初始化zkfc[PC1也就是nn1] 在第一台(cd /opt/modules/hadoop-2.5.0/ ) $ bin/hdfs zkfc -formatZK ##初始化ZKFC 17/12/22 04:50:55 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns1 in ZK. 17/12/22 04:50:55 INFO zookeeper.ZooKeeper: Session: 0x2607abd3bee0000 closed 17/12/22 04:50:55 INFO zookeeper.ClientCnxn: EventThread shut down 3) 启动hdfs 在centos01启动即可 $ sbin/start-dfs.sh ##启动hdfs $ bin/hdfs haadmin -getServiceState nn1 #查看nn1状态 $ bin/hdfs haadmin -getServiceState nn2 #查看nn2状态 4. 查看三台进程,确认开启 $jps [centos01] [hadoop@centos01 hadoop-2.5.0]$ jps 3281 QuorumPeerMain 4793 JournalNode 4610 DataNode 5137 Jps 4518 NameNode 4974 DFSZKFailoverController [centos02] [hadoop@centos02 hadoop-2.5.0]$ jps 3129 QuorumPeerMain 4270 Jps 4176 DFSZKFailoverController 3892 NameNode 3955 DataNode 4046 JournalNode [centos03] [hadoop@centos03 hadoop-2.5.0]$ jps 3630 Jps 3553 JournalNode 3022 QuorumPeerMain 3465 DataNode 5. 模拟active namenode 故障 $ kill -9 4518 #杀死active namenode standby namenode 切为active $ sbin/hadoop-daemon.sh start namenode #于该主机再次namenode ,为standby dfs.client.failover.proxy.provider.ns1 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
集群规划 PC01 PC02 PC03 NameNode NameNode ZKFC ZKFC ResourceManager ResourceManager DataNode DataNode DataNode JournalNode JournalNode JournalNode NodeManager NodeManager NodeManager ZooKeeper ZooKeeper ZooKeeper 先停止hdfs进程 $ sbin/hadoop-daemon.sh start namenode 1) 修改配置文件 =====yarn-site.xml (覆盖)yarn.nodemanager.aux-services mapreduce_shuffle yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 86400 yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id rmcluster yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 centos02.ibeifeng.com yarn.resourcemanager.hostname.rm2 centos03.ibeifeng.com yarn.resourcemanager.zk-address centos01.ibeifeng.com:2181,centos02.ibeifeng.com:2181,centos03.ibeifeng.com:2181 yarn.resourcemanager.recovery.enabled true 2) 分发配置文件 将yarn-site.xml分发到其他两台 $ scp etc/hadoop/yarn-site.xml centos02.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ $ scp etc/hadoop/yarn-site.xml centos03.ibeifeng.com:/opt/modules/hadoop-2.5.0/etc/hadoop/ 3) 启动ResourceManagere 先在centos01启动hdfs $ sbin/start-dfs.sh 在rm1(centos02)上: $ sbin/start-yarn.sh 在rm2(centos03)上手动启动: $ sbin/yarn-daemon.sh start resourcemanager 4) 检查进程是否启动 $ jps [hadoop@centos01 hadoop-2.5.0]$ jps 6737 DFSZKFailoverController 6559 JournalNode 3281 QuorumPeerMain 6375 DataNode 6975 Jps 6277 NameNode 6854 NodeManager [hadoop@centos02 hadoop-2.5.0]$ jps 5471 DataNode 4917 ResourceManager 5403 NameNode 3129 QuorumPeerMain 6020 Jps 5866 NodeManager 5687 DFSZKFailoverController 5564 JournalNode [hadoop@centos03 hadoop-2.5.0]$ jps 3022 QuorumPeerMain 4373 NodeManager 4174 DataNode 4577 Jps 4263 JournalNode 4518 ResourceManager 5) 查看serverid为rm1的resourcemanager节点的状态 $ bin/yarn rmadmin -getServiceState rm1 或网页查看 http://centos02.ibeifeng.com:8088/cluster http://centos03.ibeifeng.com:8088/cluster 6) 测试ResourceManager HA kill -9 4917 然后查看web界面的访问 centos03变为active 再次启动centos02的resourcemanager 状态为standby yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8657.html
摘要:基本概念介绍可以简单理解为一个节点多个节点构成整个集群某种类型的消息的合集它是在物理上的分组多个会被分散地存储在不同的节点上单个的消息是保证有序的但整个的消息就不一定是有序的包含消息内容的指定大小的文件由文件和文件组成一个由多个文件组成文件 基本概念介绍 Broker 可以简单理解为一个 Kafka 节点, 多个 Broker 节点构成整个 Kafka 集群;Topic 某种类型的消息...
摘要:但同样又会出现新的问题,如果服务提供者的节点新增或者删除消费者这边根本就不知道情况。通常来说消费者是需要知道服务提供者的网络地址才能发起远程调用,这块内容和我上面的需求其实非常类似。 showImg(https://segmentfault.com/img/remote/1460000016156768?w=2048&h=1337); 背景 最近在做分布式相关的工作,由于人手不够只能我...
摘要:慕课网入门学习总结时间年月日星期一说明本文部分内容均来自慕课网。而且底层使用,本身也有备份高性能底层的数据结构和有序排列等架构上的独特设计,使用具有非常高的写入性能。 慕课网《HBase入门》学习总结 时间:2018年06月11日星期一 说明:本文部分内容均来自慕课网。@慕课网:https://www.imooc.com 教学源码:无 学习源码:无 第一章:课程介绍 1-1 课程...
摘要:大数据运维更偏向于大数据生态的大数据应用运维。后面我们会上大数据开发课程,其实大数据开发和大数据运维课程很多跟运维课程是重叠的,只是掌握的着重点不同。因材施教,重点会针对每个小伙伴的情况,基本水平,确立职业规划,基于职业规划定制学习计划。 一.大数据运维相关答疑与概述 1.0 课程与老师介绍...
摘要:目标了解会使用过程首先示例代码以上它实现了算法,该算法从输入文本计算单词出现的直方图。 欢迎关注公众号:n平方如有问题或建议,请后台留言,我会尽力解决你的问题。 本文主要介绍【KafkaStreams】 简介 Kafka Streams编写关键任务实时应用程序和微服务的最简单方法,是一个用于构建应用程序和微服务的客户端库,其中输入和输出数据存储在Kafka集群中。它结合了在客户端编写和...
阅读 2999·2021-11-25 09:43
阅读 1900·2021-11-23 10:13
阅读 3247·2021-11-11 16:53
阅读 2626·2021-11-09 09:47
阅读 2507·2021-09-22 15:08
阅读 3149·2021-09-03 10:46
阅读 2069·2019-08-30 15:54
阅读 761·2019-08-28 18:09