2-zookeeper、ha
1、zookeeper
①背景:
Zookeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,
但是这些系统往往都存在分布式单点问题。所以,
雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。
①定义:Zookeeper是一个开源的分布式协调框架(主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源)
③角色:
1)领导者(Leader) : 处理所有请求,为客户的提供读和写服务
2)跟随者(Follower) : 只提供读服务,有机会通过选举成为leader
3)观察者(Observer): 只提供读服务 ,不参与投票,没机会成为leader
注:由角色可以看出,即便是你对Follower进行写操作,但是它不会写,而是会将请求转发给leader,待leader写成功之后,再同步给其余角色。
④特点:
1) Zookeeper的集群中必须保证半数以上的节点存活才能对外提供服务器
2) Zookeeper在更新数据的时候存在一个特性:原子性 (数据要么所有角色全部更新成功,要么全部失败)
⑤Master选举:
解决问题:单点故障(几个节点向Zookeeper进行注册,Zookeeper通过选举,得出领导者,如果领导者出现故障,重新选举)
选举规则:集群(5个)启动时,当启动到第3个时(过半数),找到这三个节点的myid,id最大的那个就是领导者,其余启动的都是跟随者。
第二次选举规则:第二次选举的时候由于已经存在了数据,则根据节点中数据版本最新的为主。
2、HA
1、QJM
Qurom Journal Manager:解决单点故障问题,即引入双NameNode架构,同时借助共享存储系统来进行元数据的同步。
RPC: 远程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
Qurom :Zookeeper分布式协调服务。
Journal Node:存储编辑日志,多个Journal Node通过Zookeeper实现共享存储系统。
Standby NameNode:备份状态的NN
Active NameNode: 启动状态的NN
ZKFC(单独进程,每个NN都有):
a.监控NN的健康状态
b.向ZK定期发送心跳,使自己可以被选举,当自己被ZK选为主时,active FailoverController通过RPC调用使相应的NN转换为active
c.自动备援
2、架构原理:
先找到三个节点(Journal Node),然后通过Zookeeper的Qurom(分布式协调服务),实现Journal Node上存储的编辑日志同步。
以上就是一个共享存储系统,而名称集群就是共享存储系统所覆盖的几个节点,每个NN都有一个ZKFC,用以解决单点故障。
运行过程:
①client向Active NN提交操作,先向Active NN中的编辑日志中写。
②如果成功,Active NN会修改元数据,并且Active NN向所有Journal Node请求写编辑日志,只要将请求发给了其中任意一台机器,则表示成功。 (由角色的定义可以看出)
③Standby NameNode 会一直监控JournalNode节点上的编辑日志,当发现编辑日志有所改变后会读取这些编辑日志并合并到自己的namespace中。
④为了尽量减少故障切换所消耗的时间,DataNode会定时向所有NameNode节点发送块的位置信息和心跳
注:外部访问hdfs变成了名称集群(此处命名MyNNS)
注:Journal Node + Qurom <==> 共享存储系统
2-zookeeper、ha的更多相关文章
- ActiveMQ笔记(2):基于ZooKeeper的HA方案
activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html,基于共享文件目录,db,zookeepe ...
- Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式
参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...
- 2-Zookeeper、HA安装
1.Zookeeper安装 1.解压 zookeeper 到安装目录中/opt/app/zookeeper 中. 2.在安装目录下创建data和logs两个目录用于存储数据和日志: cd /opt/a ...
- hiveserver2和zookeeper的HA搭建(转)
最近公司新项目申请资源,虚拟机资源打开时候使用source login.sh的脚本来进行登录注册,好奇心驱使下看了看里面的shell脚本,使用到了hiveserver2的zookeeper连接,百度一 ...
- (转)Dubbo与Zookeeper、SpringMVC整合和使用
原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
- 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
原文链接:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服 ...
- 160906、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)转
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
随机推荐
- linux svn 多项目设置
cd /svn/repos svnadmin create project_a svnadmin create project_b cd project_a cp -a conf /svn/ cd / ...
- linux基本网络配置
-- linux基本网络配置管理 rhel6开始有一个networkmanger的网络配置服务(可以图形配置网络,拔号,无线连接,vpn等)但此服务开启会造成你的ip不固定(会dhcp获取),而且后期 ...
- 用matlab生成mif文件
在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑. 在此介绍 ...
- Java学习笔记42(数据库连接池 druid连接池)
druid连接池: 是阿里的连接池,druid的稳定性及效率都很高,目前用的比较广,所以建议开发过程中尽量用druid连接池(支持国产最重要) druid连接池也需要配置文件,配置文件必须是prope ...
- 移动web总结
Meta标签: 1 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-sc ...
- linux vi命令详解
刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇. vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 ...
- 构建gulp项目
express是node.js中的构建工具,如果需要使用express构建,首先需要安装express. 构建一个项目: |-- app| |-- css| |-- js| | `-- class| ...
- Python全栈之路----函数----返回值
函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...
- RabbitMq入门以及使用教程
祭出原帖:https://blog.csdn.net/lyhkmm/article/details/78772919 原文转载:http://blog.csdn.net/whycold/article ...
- 软件工程 week 02
一.地址链接 1.作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110 2.git仓库地址:https://git.coding. ...