Big Data(四)关于Hadoop的HA&CAP理论详解
问题
思路:
主从集群:结构相对简单,主与从协作 主:单点,数据一致好掌握
问题:
单点故障,集群整体不可用 压力过大,内存受限
解决方案
单点故障:
高可用方案:HA(High Available)
多个NN,主备切换,主压力过大,内存受限:
联邦机制:Federation(元数据分片) 多个NN,管理不同的元数据 Hadoop2.X只支持HA的一主一备 Hadoop3.x支持一主多备(官方推荐NN为3)
HDFS-HA解决方案

HA解决方案图
Client只能与一个NameNode去通信,在我们的NameNode中。
存储的元数据:
1.dn提交的block
2.Cli交互操作,例如mkdir等
有关这两个数据交互操作,数据同步吗?
1.DN可以将块向两个NameNode进行传递区块,问题解决
2.NNActive和NNStandby得满足CA,中间时间差不能太多
所以使用3台JoinNode集群。如果3台,那么应该得等3台写完,再返回,还是一台写完就返回呢??
这陷入一个怪圈。
所以我们使用选举制度,加上权重,JoinNode只要3台中有2台返回ok,那么NN可以读取3台中2台有数据,那么该数据可信。(基于Paxos算法)
上部分的ZK集群主要用于主备切换,如果有了下部分,也可以手动解决NN挂掉的案例
FailoverController是一个故障转移控制器(3只手):
1.一只手:一个进程来监控NNActive,另外一个进程监控NNStandby
2.第二只手:连接ZK(ZK用于分布式决策,JN是用于分布式存储)
3.目录树结构,假设x节点,两个ZKFC进行抢锁,某个人抢锁成功就是Active,另一个是Standby
4.随着时间推移,假设NNActive挂掉,那么ZKFC将会把锁删除,另一个ZKFC在一直进行Watch监控,会立即触发Call Back,进行新一轮抢锁
5.新一轮抢锁原先的NN已经没有了,所以不进行抢锁,把NNActive让给备用
6.右侧抢锁成功,将会将第三只手偷偷伸向对方,查看原先的NN是否真的挂掉,如果真的挂掉,将对方降为Standby,自己升级为Active
7.所有都挂掉,这个是运维的错误,情况太低了
8.所有网络都是不可靠的,所以上面的集群架构都是基于串口
CAP理论(参考博客http://www.ruanyifeng.com/blog/2018/07/cap.html)

1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。
Consistency:一致性 Availability:可用性 Partition tolerance:分区容忍性
Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。
Partition Tolerance

先看 Partition tolerance,中文叫做"分区容错"。
大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。
上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。
一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。CAP 定理告诉我们,剩下的 C 和 A 无法同时做到。
Consistency

Consistency 中文叫做"一致性"。意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。

接下来,用户的读操作就会得到 v1。这就叫一致性。

问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。
Availability
Availability 中文叫做"可用性",意思是只要收到用户的请求,服务器就必须给出回应。
用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。、
参考(https://baijiahao.baidu.com/s?id=1619807486368681081&wfr=spider&for=pc)
- 舍C保A(AP)的例子:
比如刚刚的微博这个例子,我们更新了一条微博,不是所有的人都能马上刷出来的,对于哪些还只能刷出旧的微博数据的人来说数据就和我真实的操作不一致了。然而这种业务也不需要要求我们强一致性,没有刷出我的最新微博,也不是什么大事,大不了认为我没有更新而已,对业务影响很小。但是呢也不能一直都不一致是吧,所以C还是不能丢的,可以迟到。
- 舍A保C(CP)的例子:
比如银行账户的例子,大家生活中也许也已经注意到了,银行转账需要几个小时甚至几天,都会显示正在转账中。这时就是视作一种丢失可用性的状态。当然这是业务决定的。
- 舍P保C又保A的场景:
不是分布式的场景的话,我们可以选择CA,比如我是个小银行,我的转账功能可以设计为多地账户不互通,只能本地转账,只在一台服务器上操作,保证可用性和一致性。但整体来看可用性和一致性都丢失了。(这是关系型数据库情况)
ACID特性(参考https://www.jianshu.com/p/0b245d972e23)
Atomic(原子性):指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。
Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。
Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
Durability(持久性):指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
HDFS- Federation解决方案
NN的压力过大,内存受限问题:
1.元数据分治,复用DN存储
2.元数据访问隔离性
3.DN目录隔离block

Federation的图示
Big Data(四)关于Hadoop的HA&CAP理论详解的更多相关文章
- Hadoop 新 MapReduce 框架 Yarn 详解
Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...
- Hadoop 发行版本 Hortonworks 安装详解(一) 准备工作
一.前言 目前Hadoop发行版非常多,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,完全是由Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并 ...
- Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
一.通过yum安装ambari-server 由于上一步我们搭建了本地源,实际上yum是通过本地源安装的ambari-server,虽然也可以直接通过官方源在线安装,不过体积巨大比较费时. 这里我选择 ...
- Hadoop生态圈-Hbase的Region详解
Hadoop生态圈-Hbase的Region详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- “全栈2019”Java异常第四章:catch代码块作用域详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
Hadoop集群_WordCount运行详解--MapReduce编程模型 下面这篇文章写得非常好,有利于初学mapreduce的入门 http://www.nosqldb.cn/1369099810 ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Hadoop深入学习:MapTask详解
转自:http://flyingdutchman.iteye.com/blog/1878775#bc2337280 Hadoop深入学习:MapTask详解 博客分类: Hadoop MapTask执 ...
- 【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
1. HDFS概述 Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪 ...
随机推荐
- 【转】C++友元
转自:https://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.html 1.友元函数的简单介绍 1.1为什么要使用友元函数 在 ...
- java远程调用中出现的问题(主要是在不同电脑之间出现的问题)
1.在运行远程服务端之前,使用rmic命令操作impl 2.运行客户端出现time out,尝试ping服务器电脑不能成功.关闭服务器端防火墙,可ping成功. 3.显示连接失败,错误显示的ip不是自 ...
- Color色彩
Element 为了避免视觉传达差异,使用一套特定的调色板来规定颜色,为你所搭建的产品提供一致的外观视觉感受. ¶主色 Element 主要品牌颜色是鲜艳.友好的蓝色. Blue #409EFF ¶辅 ...
- python接口测试之mock(一)
在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在 server端已经开发完成,专门等着前端来调用,理想的情况 ...
- Selenium 2自动化测试实战7(定位元素)
一.xpath定位 1. 绝对定位 举例用百度输入框和搜索按钮 eg:find_element_by_xpath("/html/body/div/div[2]/div/div/div/fro ...
- Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already in use.
Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already in use. The ...
- java:反射(Hibernate的雏形)
* java.lang.Class类:Class类的实例表示正在运行的 Java 应用程序中的类和接口,没有构造方法. java反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法 ...
- 修改Windows 2008以后系统的NTP服务设置
@echo off echo autor OAK @echo off echo -------------------------------- @echo off echo setup time r ...
- SSM项目——乐淘商城话述1.0
乐淘商城 项目介绍 淘淘网上商城是一个综合性的B2C平台,类似京东商城.天猫商城.会员可以在商城浏览商品.下订单,以及参加各种活动.管理员.运营可以在平台后台管理系统中管理商品.订单.会员等.客服可以 ...
- 快速质因数分解及素性测试&ABC142D
首先,这个整数的标准分解非常的显然易见对吧: 一般我们要把一个数分解成这个样子我们可以这样写: #include<cstdio> ],w[],k; void factorize(int n ...