00:00
啊,讲了那么多是吧,哎,终于到我们那个高可用了,高可用要解决的其实就是刚才我们所讲的这个单点故障问题,就是说机器发生意外宕机了怎么办,或者说软件的升级怎么办,就是涉及到咱们内not的挂掉的这种情况,我们一定要。提前想好这个问题的解决方案。解决方案解决方案其实就是配置两台。配置两台,一个active active是活跃的嘛,然后一个stand啊,备用的两台机器,但对外工作呢,就active来对外工作就OK了,Stand by就随时待命,当你active挂掉以后,咱们用stand自己去什么代替它的一个工作,代替它的一个工作。整个的也就是配置两个内note来消除它的一个单点故障,单点故障好,那我们接下来就要具体的来讲这个ha了。
01:07
那讲具体的内容之前,或者学一个新知识之前,一定要看什么?看官网啊,你们官网上的多。首先进到这个哈,阿瓦奇所有框架都是这样的是吧,框架名加点阿瓦奇点G是吧,OK,然后找到我们的一个文档,这边是有一个左边点一个文档对吧。好,现在我们用的版本是2.7.2是吧,2.7.2。其实整个大的二点版本啊,它差距都不太大,而且2.7版本的它这种内部小版本之间差距更小了,更小了,前一段时间看应该还是2.7.5呢,现在又变成2.7.6了啊,其实都差不多,差不多我们就用那个2.7.6。就咱咱们网很差是吗?
02:08
哎,好了是吧,点到这个2.7.6,如果你要想看2.7.2,你自己手上的把这个改成二也可以是吧,不是过是吧,OK,然后我来看咱们现在要讲的是HDFS,然后这是HDF什么用户指南,它的命令对吧,命令然后这地方看。高可用,它有两种实现方式,一个QGM,一个NFSFS,我们今天所讲的是这个QG。格DM那种方式。又要躺一会儿是吧。QGM点下来之后就是这样一个页面页面。好,我们往下看啊,官网上呢,他们并没有提供一个什么。关于高可用它的一个架构图,正常的我们应该是看图就能理解它的一个原理,对吧?啊,光看一些文字的话不太好,不太好弄来给大家手动画一下,是这样。
03:08
刚刚我们讲了是采用两个内node来消除它的一个单点故障,对吧,一个active,一个stand,如果active挂掉了,Stand自己起来。自己起来啊。两个,我们称为N1跟N2 N一根二。那要想实现他们两个人都能成为那not,至少他们要拥有什么东西啊?那么更重要的是原数据吧,对,一定要是有原数据的。好。我们讲他一个是active的,一个是stand。Active是对外提供服务的嘛,Active对外提供服务的。他提供服务之后,他就涉及到他自己原数据的一个更新吧,他更新了他得知道了,是不是三他是不对外。
04:13
服务的,所以他要更新它自己的一个原数据,他只能找一个it的要。的。这样中间多了一个什么文件系统。你可以把它理解为一个文件系统。当然,这个file system在我们后面的学习过程当中,你会知道它叫什么,这journal它也是一个节点,你现在理解为一个file system,这个file system里边存的什么呢?啊,存什么,想想一下这里面应该存什么,刚才我们所说了这个N1啊,它更新了原数据以后,哎,它需要N2,需要去同步这个n na1。
05:12
同步它不是直接同步,而是通过中间的一个中间键来同步的,那这里面应该放什么呢?大才想的都是原数据对吧?原数据啊,其实它放的其实就是爱丽跟那个F这两个文件啊,其实就等于原数据嘛,对吧?啊,这两个文件就等于原数据,他们一合并就等于原数据。好,这只是保证了什么?它之间的一个数据的一个同步问题吗。数据同步问题。但并没有保证,假如你挂掉了,他怎么讲又有问题了,这个时候还是我们之前所讲的,它总共有两种方式,一种是手动挡,还有一种是自动挡,当然我们的重点是自动挡,但是手动的我们也要讲手动的方式怎么实现呢?看啊。
06:06
这个地方你或者手动写个脚本,就像我们之前所讲,实时的监控N1的一个状态吧,啊给。运维发短信,发短信也是可以的,发短信这个还是效率太低吧,效率太低,手动的肯定效率低,没办法,但是他能实现啊,这是这种方案,还有一种方案。把这个撤销掉,还有一种方式是什么呢?你不是第三方监控吗?你可以让N2自己去监控。可不可以呀?让N2来监控N1的一个状态。Ne的一个状态。见不到他不可用了,或者说他们俩通信不上了,他就自己把自己提升为老大,他就把自己提起来当IP,这种方案可不可以啊?
07:03
可以吗?这种方案最终被pass掉了。这种方案不通过的。想一下为什么下面呢,你NN2去监控n na1的时候。他通信不上了,说明NN1挂掉了吗?不一定吧。只是你N2不能跟N通信了啊,假如说当时的一个网络阻塞了,或者端口被占用了等等这些情况。有可能人n na1跟其他的一个被动not还正常的通信,好好的呢,还正常工作呢,对吧?啊,这个时候你N2把自己提升为老大了,这时候集群当中出现什么情况。两个老大吧,这就出现了一个很严重的问题,在大数据里,域把它称为B,当然这个B不是你们所想的,那这个叫的脑力。
08:00
啊,所以说你你们以后发骂人的时候是吧,骂split brain更高端一点,Split split大脑脑裂吗?脑裂两个大脑啊,那你接下来去通信的时候,他需要跟谁通信啊。不知道了对吧,根本不知道,所以这个方案是被pass掉的,不能擅自做主,不能擅自做主的。啊,这是这个问题。那我们只能说手动的去起,咱们手动的这种方式呢,就是通过人工手动的去起,而不能说你写一个脚本,让N2去实时的监控N1的状态,然后N2一旦监控他,他是出问题了,自己自作主张的把自己起来,这是很危险的。脑裂了,S闭了是吧,S闭了这咱们手动的一个方式啊,相对来说手动方式的一个原理比较简单,就是说你要把它一个原数据拿出来,然后二二呢,实时的监控啊,实时的监控,当然这个监控是不需要你自己去。
09:15
写一些脚本啊,或者做的他内部加哈,如果2.0是不是提供了高可用啊,他那个监控啊,或者其他的一些原数据的一个读取拉取啊,然后推送到他呀,都是他自己,你只要配的这个JN节点,他自己会完成的这个事情啊,会完成这个事情,这是不需要你操心的,但是你要知道的问题就是。你不能写这个脚本对吧,脑裂这个脚本一定要避免他的一个脑裂。这也就是我们后面在做操作的时候,你会发现一个问题,什么问题啊。嗯。咱们不是采用手动的方式去洗吗?对吧,首先我们启动的过程当中呢,两个都是stand。你启动的时候两个都是stand。
10:02
这个时候你是不是要起一个?为active法啊,将它一个状态转换过来,它就能正常工作了,但正常工作过程当中啊,你把这个假如说一被你置为了active。此时你把给K掉,就是active这台什么,那么note挂掉了吧。好,此时你要做操作是什么。去起N2对吧,啊去去也不是叫起N2,是把N2这个三状态转化,为什么active这个时候起不来。转换不过去,因为你在起动割的时候啊。它N2会尝试的跟NANA进行通信,它会跟na说,你休息会,我来吧,我上了。但是NA1已经已经怎么样了,已经挂掉了,对吧,它通信不上,它是不允许自己起来的,就是它内部,它如果2.0的。
11:05
他自己就给你屏蔽掉这个。啊,你要想把N2能起来转化成active,你必须要把NA1起来干掉了,刚才已经干掉了。一定要把这个进程给起来,起来这个这个时候之后它还是stand外,对吧,这个时候你可以把N2它写起来写起来啊对,这是我们所讲的手动的方式嘛,手动的方式,但是他一定要屏蔽他那个。脑练啊,脑力啊,有同学说假一就是像我所说的原地方炸是吧,再也起不来了,那怎么办呢?啊,我们有解决方案,有解决方案啊,我们自动的那种都可以自动的可以的,你公司当中你也不可能用这种手动的吧,你假如半夜12点挂掉了,突然一个电话打到你手机上是吧,让你去公司一趟把,把二去起下,你崩溃了是吧?不可能用手动的,但是我们得了解手动的一个实现原理,慢慢的去了解它的一个自动的,它是怎么做的啊,自动怎么做的,OK。
我来说两句