00:00
好,然后呢,我们通过命令行呢,啊也操作了一下,然后也讲了一下它的一个整个的一个数据结构,大致它里面存在的内容是什么样子的,接下来我们就聊一聊它这个整个一个原理,这个原理呢,主要包括它这一个读写,因为它这个存储框架对吧?啊存储框架它这个原理呢,重点就是在那一个读跟写啊这两块,OK,那整个的h base啊,它是一个可以接到在线业务,而且是实时的在线业务的。就是说它那个访问速度很快很快,但是整个的来说,就是他自己跟自己对比啊,他的读比写要慢。就很奇怪对吧,就一个一个框架,竟然写比读快,他的写操作啊。那还快。好,那我们看一下啊,整个的流程,首先我们看一下这个读操作,读操作OK还是这样看一下这个PPT啊。是这样的,首先你要读操作的话,那你的集群是要有的吧,哎,集群要有的,然后K都是正常启动的,那下面那个什么data note我就没话了,你要知道真正的是数据啊,你要读的数据其实是存在data note上的,对吧?啊OK,那首先这个里边有这些个内容。
01:15
然后客户端,客户端要发送请求,之前讲过客户端是不是先要请求ZK集群来拿什么原数据信息啊,对吧?OK,他拿的是什么呢。他拿的是一张表,所在位置。注意他拿的是一张表所在位置,那这张表它存在内容是什么呢?就是咱们整个的什么h base集群当中维护的表信息,维护的表信息,然后鲁K当中呢,存的是。它它会有一张Meta表,就原数据的一张表,它所有的原数据啊,存在这张表里边,存在一张表里边,而这个表那如KO当中存的是这张表所在的位置。
02:01
来感受一下啊,它访问的是找的是一个位置,在如K当中找的是Meta表情的一个位置,这个Meta表它也是H当中的一张表,所以它最终实际是存在某一个reading so上的。某一个so上的,假如说这个地方存在什么R1,那这个在ZK里面存在这个信息啊,就是RS1,这能理解。就说这张表里面保存了相应的原数据,保存了相应的原数据,但是这张表存在哪,是在这里边记录的。在这里面记录了OK,那客户端先访问ZK集群,找到这张Meta表所在的位置,所在位置,假如说哎,返回的是RC是哈多102这个节点。然后接下来这个客户端啊,就去请求什么。Meta表所在的节点就是跟哈多102就是R1这个节点进行通信,那此时它要访问的是。
03:05
这张表里面的数据内容了,刚才是这张表的位置信息了,此时我找我知道了这张表在102上存在的啊,就R1在这上面存在的好,那接下来他就去请求这个R1干什么呢?就读这张表的内容了啊,请求这张表的内容了。啊,是这样的一个过程,OK,那请教这张表的内容他要读什么呢?首先客户端我们去,假如说这边是一个get操作get student这张表干什么呢?我要看1001这条数据可以吧。啊,他就拿着这个东西去先获取了一下雷达表的一个位置,然后告诉他在RS1,然后他去请求R1读取RS1里边的一个原数据信息,那这个原数据信息,也就是这张没表,它里面到底存在什么呢?就是存了各个表所在的位置,就是斯汀的那张表,哎,从零到什么1000这个肉啊,存在RS2呢,然后说什么student那张表从1000~2000,存在RS4呢?
04:07
啊等等,它里边存的假如还有什么大啊,这张表它就是从假如说它它没有切分啊,它就从零到从负无穷到正无穷啊RK的一个大小,从负无穷到正无穷,存在什么RS3呢等等,这张me表里边存的是这些信息。就是你不同的表啊,V在哪个节点上,这能理解。真正的原数据啊,真正的原数据是这,那他请求到这之后,他要获取的是什么?哎,Still的那张表1001,这个keep吧,他找的是不是这条数据。找的是RS4吧,它接下来真正的读取数据啊,它会根据它返回的这个I rie所在的是R4,他再去跟R发起请求。发起请求来真正的获取数据,来真正的获取数据,那它这个RS4会将它的一个数据返回过去,那返回过去呢,要注意它是先。
05:05
内存后磁盘那什么意思呢。当时我们讲的这有一个memory多吧。还有磁盘这个store fair是不是memory做里面数据刷写下去的呀,对吧?那如果说还没有来得及刷写的数据,是不是在这里面直接获取啊,就像我刚做的一条数据,你再去获取的时候,他没有执行刷写,是不是这条数据应该在内存当中存着呢?对吧,哎,在内存当中,所以说他先去找的是内存。如果说内存没有。其实这个地方还有一个block catch啊,就是他自己做的一个缓存。这个缓存就是为了做多次访问的时候啊,就加速它的一个访问速度的,加速它的一个访问速度,就是说他先从这个marryto获取,如果获取不到,他来到这个block catch里边获取。如果block cash还没获取到的话,那大家想一下应该去哪获取啊?
06:03
真正的磁盘了吧,因为他刷写下来了吗?磁盘,那磁盘获取到了,注意他不是立即返回给客户端,他写到这个block。写到catch啊,先写到缓存里边是这样的,那下一次如果说你还要怎么访问STUDENT1001这张这条数据的时候。假如说这个内存当中没有了,对吧,你第一次是从磁盘拿到,所以说这个内存当中肯定没有了,那他访问MSO的时候没有啊,然后去访问不开,哎,访问到了直接从不开始拿了,就没有跟什么磁盘打交道了啊跟磁盘打交道OK这这个问题,然后还要理解的一个问题是,他为什么先访问这个memory。能不能想明白这个事情?对,没有落盘的数据是不是最新的数据啊,是你刚操作的数据了,对吧,如果说这里面能获取到,那肯定是最新的数据,而且你get返回的是不是要最新的数据啊。
07:13
啊,他就是这个意思,先走在慢慢so,因为他在这个地方就是你写流程啊,他肯定是先写到内存再写到磁盘嘛。如果内存当中有的话,那肯定是比磁盘的数据要更新一点的,要更新的啊,所以说他先访问的是memory store啊这块的一个内容,OK,这是从大的方向,我们三次请求吧,先请求ZK找到什么。Me达表所在的位置,Me达表所在位置,OK,然后去他知道位置之后,是不是直接跟这个R1进行打交道,读这个表里的内容。读这个表里的内容,他读这个表里的内容,是不是要找他访问数据所在的节点啊。对吧?哎,找到之后他直接跟数据所在的一个节点打交道,然后从memory拿,然后还有一个blockca,还有一个fair次盘拿出来数据啊,这是总体,我们从宏观的角度来看一下,来看了一下,OK,是分为三个部分,那老版本当中还有一个,这个是me达表啊,老版本当中呢,还有一个。
08:18
这个表杠杠这张表。那所有的步骤呢,往后推一步。能不能理解就是ZK当中呢,它访问的是。入高入的杠这张表存储位置,然后他去知道这个杠中的杠表也是S的表,然后去找到杠的杠表所在的节点去访问什么。去访问杠如的杠表里面内容嘛,哎,这个杠如的杠表里面内容是什么呢?是Meta表所在位置。是没达表所在位置,就是说这些如果说老版本的话,因为现在公司当中还有用老版本,那你知道公司当中用问到的时候,面试官中问到的时候,它的步骤更多一步。
09:04
就还中间还有一个杠珠的杠表,是这样的一个内容。啊,当前咱们新版本的话,就是这个老版本,新的版本是0.98为接的,零八为接的,新版本当中呢,是直接就没有那个杠U的杠表,直接就是没达表啊,这是从宏观的角度我们来分析的,接下来我们再来看一下这个CK里边存放的内容,还有这个。Me达表里边存放的内容吗?哎,需要大家大家看一下的,OK,首先在这我们先看一下这什么情况呢?现这里有一个me达表吗?点进来看他在哪个上面维护着呢。因为麦达表也是h base这张表它也在某一个上维护着,这能理解吗?它是在102上维护的,对吧?好,我们就看一下ZK当中,它是不是这个信息来。Cdd model,然后入C。
10:01
然后启动一个客户端,并。ZKC对吧,点SH走。LS它是不是有一个什么H啊,对吧,进来看一下里边维护了这么多什么副本RS。切分日志等等,那我们现在要看的是不是这个内容。对吧?哎,这个就是放了什么Meta reading so,就是me达表所在的reading solo吧,知道这个意思,那直接get h下面没。是什么?不,不用管他什么,那那么乱吗?是不是看到他。对吧,看到HELLO102,这是我们客户端要访问数据第一步所找的位置。接下来他是不是去102找数据啊,哎,找这个me达表,那这个麦达表里边存的什么内容呢?哎,我们可以访问一下SKY。
11:09
这个命名空间下的对吧,没他表。看一下这个是不是我们自己建的表啊,对吧,然后你看一下。我们核心的看这款一个内容啊,这。Student,然后这个in for,它也是in for列读啊,然后它的列是什么?So,就是big big data student这张表在哪个机器维护着这一列是这个数据,来看一下在哪。在102对吧,哎,在102,那我们看一下这个数据。Use是不是student?刷新一下就两我们刚才看的是这个。走。
12:01
102上对吧,是Meta表里边记录的呢,在Meta表里边,OK,你再来看一个什么内容呢?除了这个student,还有我们自己还创建了一个什么。刚才那个是比下的那个吧,这还有一个student的,他在哪呢。这个reading是放在104吧,放在104,那我们看一下。哎,退回去,此时我们看到应该是beforet这个命名空间下的这个C就段这张表对不对啊,点进来。就这张表在104上维护着呢。他放在104的。那接下来如果说我访问的是student,就是默默认的命名空间下student那张表里面数据,因为当前他没有数据,没有足够大,对吧,他就在一个规定里面啊,就是用一个来维护着一个维护着,OK,你看它那个start keep跟stop and k没有值吧,就是说它包括所有的。就是UK啊,所有的都在这一个维护了呢,啊指的是这个意思,OK,那他先找到的是zoo k里面获取到什么信息啊,没大表所在的在102吧,他接下来是不是去102读一下这个这些数据啊,对吧,他读这些数据他是不是要找C的这个表啊。
13:18
他一找是不是在104。对吧,他最后是不是去104读数据啊。正是它整个的一个毒瘤场。相当复杂的一个过程,对吧,而且你发现整个的过程当中有X8的参与吗?没有。没有马斯参与,对的,挂掉,看啊来。克隆一个GPS。Q,杠989949对吧,走。GS是不是挂掉了?我来查询数据,SKY。能查到吧?读流程跟master有关系吗?没有任何关系。
14:01
没有任何关系,因为它的一个,首先它要去如K当中访问这个面大表所在位置。接下来他去找到这个没达表啊,啊,真正的去获取数据,最后他找到这个相应的reading,那你这个master挂了,跟我这个流程有关系吗。没有任何关系对吧,所以说master化了不影响它读。完全不影响。我直接跳到了读抓捕。对吧,扫描这张表,这张扫描OK,那这里面内容呢,大家回去要自己看一下,然后我给大家展出来了这些东西看一下啊。而这资料里边有一个这个读流程的一个微观流程。就是客户端啊,我们要查询一个K1,假如说rie为11050的可以吧,我去GET1张一个一条数据嘛,他是不是先去从K当中去获取原数据所在信息啊,哎,这张表所在的位置,假如说102,他接下来是不是去102上把这个表的内容给读到,那这个表里边内容核心的是不是这些内容。
15:07
我们最关心的是这个so啊,它当然还有什么reading for等等这些内容啊,对于我们来说不太关心,我们更关心的是是不是这个so啊,对吧,就是说当前这张表table不一样。如果你表划分的,就是说你的表的一个很大,它切分了之后,你会看见一张表,它会有多条数据。能懂这个意思,因为它是按K放在,有可能放在不同的region so上吧,啊就是因为我们刚才看到那个什么,呃,两个string的表它都不够不够大啊,直接一个region so就维护了啊,就在一个region里边了,那真正的如果表足够大的公司当中呢,它肯定是有多条这个元数据信息的。哦,多条元素信息的,它会分别记录,哎,如可从哪到哪记录在哪个微搜那一一判断什么。你这个110501看11050在这个R2上吧。他最终去RS2去获取,那获取的值,你不是要11050吗?是把这条数据哎给拿走了。
16:06
给拿走了,当然拿到过程呢,还是有那个内存磁盘这个过程吗?那你看它这个读流程是是不是来回访问,然后最后还什么先。内存后磁盘还挺复杂的吧,所以说它这个读流程啊,整个的是这个逻辑啊,相对来说要比写慢啊,要比写慢,当然我们现在没说写对吧?啊还没说写没关系,这块大家记住一下,就是首先是。整个的流程啊,要知道,要清楚的知道,而且自己真的晚上的时候要去看一看什么K里面到底存在什么东西,然后还有什么,哎,这个me达表自己扫描一下啊,看一看这里边是不是你存的表那些原数据信息啊等等的,这个一定要自己看到。一定要自己看到整个的流程,然后我要说一个点,就是老版本的问题,老版本有一个杠入的杠表,现在已经没了,你看一下这边有一个老版本的一个文档。
17:04
CTRLF。Root杠,走,你看他有张表。然后让你还扫描一下这张表吧,你看你现在来扫描呢,或者说你不用扫描,你直接从哪个地方看,如果他真的有这张表的话,那你这个系统表里边是不是有那个刚入的杠,他不可能在这没显示吧,哎,新版本就这张表就干掉了。那你要知道的就是老版本,如果说你有这个东西,它是不是应该在这一步里边再添加一个,就是去除KL拿的是什么杠小猪的杠表所在的位置信息,那杠珠的杠表里边存的内容是Meta表所在的位置信息。所在位置信息啊,这样他把一级一级的划分开啊,一级一级的划分开,那不至于如果说他把整个的一个所有的元素及信息都存在,从K宝是不是显得特别大呀,这个东西。
18:00
想一下啊,就是说如果说直接把什么呢,把这个东西啊。存在足keep当中你的表是有很多的吧,那你足keep当中是不是存的存的内容太多了吧,所以它在足keep当中呢,存的是位置信息,就这张表啊,还是由你H自己维护啊,自己维护,但是呢,我要在K当中呢,放一个它的位置。啊,是这样的一个过程啊,OK,这是整个的一个独流程,从大的方向。啊,大的体重方方面,以及它里面具体的什么什么数据啊,都大家看了啊,这块大家自己要去看一看的啊,自己要看一看的,要是真的忘了的话,就看这张图对应的去找一找,然后你要记住流程是先开,然后这个对吧,按这个顺序来的,这个顺序来的。嗯。
我来说两句