00:00
好,接下来我们看一下这个写流程啊,之前再说它这个写啊比读快啊呢,我们看一下它到底快在哪了啊,读流程确实能感觉到它比较慢嘛,请求很多次,然后还是什么读读内存,读磁盘等等一系列的操作很慢,那写呢,它快快在哪呢?看一下。这块啊,要很细节的一个内容要展示出来了啊,从这集群跟我们的集群在这,然后还是同样的一个客户端,客户端来了,客户端来了他如果写呢,同样的他还是去请求什么。ZK,然后找什么me表所在位置,因为你要写,假如说我还是写student,往student这张表里边写一个1002这个数据可以可以吧。那你首先你要知道这个student表在哪啊,对吧,那你要知道student表在哪,你是不是要去CK当中找到Meta表在哪啊,对吧?哎,去找me达表在哪,然后接下来去找到me达表在哪,是不是去访问这个me达表啊。
01:02
对吧,访问麦大表是为了干什么?是获取使用的那张表在到底在哪了,对吧?哎,它同样的这个过程都跟刚才那个读一样啊不一样,那最终它会找到这个。使的这张表在假如说在微报号维护着呢,可以吧,反正总有一个微证码,然后他就开始发送那个数据里面写请求了,写请求了,那他请求来了,V搜来响应这个请求的,对吧。他先将这个数据写到哪了。不是这个lo这么大,大家都看不见吗?对吧?先写到slo,先写这个编辑日志是吧?没有,不要着急往内存写,那么内存写丢了呢?数据丢了是吧?先写到slo,先写的是slo,那保存一下这个编辑日志,假如说例子当中丢失了,哎,还能恢复,那接下来往哪写?
02:07
往慢慢里边写,往慢慢到里边写,那后面还有什么刷写过程对吧,但是注意对于客户端来说,写到内存当中,这个数据的写流程就结束了。就结束了,至于你什么时候刷起,还有后面的合并过程,跟我什么客户端没有一点关系。因为那是你的框架所的事,所以说你看他到这儿,他就能直接给客户端反馈写成功了。因为他认为啊,第一你h log里边有编辑日,第二我已经写到内存了,这个数据就不会丢了,因为这个h log是保存在HDFS是吧,HDFS之前提过HDF本身还有备份,他就认为写到这个内存啊就够了,客户端就认为够了,这个数据就写进去了啊,他这个写流程总体上是这样的啊,所以是这样的,所以能感觉到他这一个辈总体来说写比读要快的多吧。
03:04
写到一个编辑日志,然后接下来写到慢慢设置过了,慢设置过了,而且这地方还要注意一个问题,就是。它是写到memory store的哪一条数据都往memory写,对吧,也就是说。也就说明了我们什么?读数据的时候,先读的是M多法,是因为你写的数据啊,往M分多写,所以说M索的数据呢,永远肯定是最新的数据。所以说读的时候呢,它一定是先读的memory,如果memory so里边有数据了,那直接返回就行了,因为它是最新的数。啊,没有的话,你再去那个什么blockcache,然后还有什么磁盘啊,去读去读整个的过程。啊,这是整个的一个写流程,相对来说除了这块,因为读流程大家都大家看的那个表的内容对吧?啊大家自己看一看,这个两步是一样的,真正的写呢,先写到这个X log,再写到这个M,他就写完成了。数据。
04:02
要更新啊,那就是master的事了,对吧,Master的事了,原数据表要更新了,肯定要更新啊。而且是啥时候更新是吧,是这样的,Reading切分的时候它才会更新嘛。你不切分,刚才我们看到的它两个start k跟K都是空的吗?那你再往里面插入再多的数据,我这个原数据需要更新吗?需要更新吗?想一想,你说这更是拆分之后。来看一下,就是当前我如果说。插入一条数据对吧,你看这没达表里边儿信息存的是什么呢。是某一张表,某一个R区间在哪存的吧?你说的是这个要不要分析对吧?那你想想看,你随便插一条数据,如果没有触发ready切分的话,它需要分析吗?来。
05:00
那你之前存的都是什么,从来看一下。从负无穷到正无穷的。对吧,那你就在这个104存在的,那我更新啥呢?我有什么东西需要更新吗?没有任何数据了。想明白这个问题啊,对吧,它就是负无穷到正无穷啊,负无穷到正无穷,因为它它这个地方只有一个约定码这张表。它只有一个瑞的话,它是不是维护了所有的肉啊。那你再来了一个数据,还不是他维护吗?没有任何原数据的更新,是不是没有原数据更新,除非他要触发什么。七分错,末了分成两个锐电脑。那它有可能会有这个原数据的更新更新对吧。因为之前假如说,哎,你这个是负无穷到正无穷,你现在分成了什么,负无穷到1000,然后1001到正无穷,那你的一个数据不要分析嘛,这个在RS1,这个RS2。
06:03
这个时候才会触发K线啊,也就是说当前这个写操作,我们把h master干掉,它照样也能写进去。来看一下。就是只要不涉及到微信的切分的话。这马是三九是吧。票杠九。七。OK,在这妈没了,然后我们在这一张数据对吧,先干一下什么这张表。刚才我刚才有吗。又换了那个那个不对的,那个错了吧,那个显示错,你看票的时候没有吧,其实我们干掉了,然后我们看一下当年表示这些数据吧,然后做了一张数据拿下。
07:02
看C他拿过来为了做区分,我直接改成零可以吧,啊,肯定是没有重复的对吧。零四。因为此时没有涉及到什么原数据更新吧,他肯定能写进去啊,对吧。而且你的访问也能访问到的,它还是在那个reading维护着呢,因为它维护的所有都是KR。所以说h master挂掉之后呢,它能够正常的进行读写,但是呢,你工作长时间以后,集群就很危险了。因为什么呢?我们之前所讲的合并切分都是由master主导的,对不对啊,就是说这个过程,这个指令是由master发的,那你master挂了,那你的数据就是你的这个表啊,一直增大一直增大,假如说到了要切分的时候了,它还不会积分,因为没有master呀,不会主导这个,他切分的时候没人更新原数据啊,所以说它不会进行切分。
08:00
不会进行切分,那就导致整个的数据倾斜了。啊,整个的数据新写了,那你要再回过头来去看那个master的一个工作,哎,它的一个功能啊,它的一个功能你就知道了,他为什么整个的没有什么数据的一个读写,但是他会关注什么region的分给谁管理,然后做负载做。合并等等这些操作,哎,他是做这些事的啊,做这些事的啊,这你要注意的一个点OK。
我来说两句