00:00
啊,那同样的,我们还是把前一天所讲的内容啊,做一个简单的一个回顾,是这样的,OK,我们之前讲这个h base啊,主要的是昨天一天呢,就是介绍了一下这base安装部署,以及简单的一个使用,对吧,简单的一个使用,以及讲了一下它的一个读写原理这块的一个内容。然后这个h base啊,它是基于这个HDFS这个文件系统构建起来的一个叫big table,一个大表,它是为了管理这种结构化数据用的啊,管理这种结构化数据用的,然后它其实最终的一个目的就是为了在HDF上实现一种随机的一个读写。随机的读写,它是不断的去用一个方案,然后优化,优化最后形成了他自己一个大的一个框架,开发周期也比较长,比较长,它整个的一个,它能够实现这种随机这个读写啊,就是因为它不是如果说你增加或者说更新一个数据。或者说删除一个数据的时候,他不是立马就把那个删除的数据给删掉了,他是做了一个标记,只是在框,对于用户来说,就是你使用者来说,他是真的是删掉的是这种感觉,那其实当当时没有做这个操作,如果他在内部去做什么flash啊,之后还有合并的时候,他才把这个步骤才真正的给做了啊,真正给做了,这是这是他快的一个原因,他不是当时你执行了一个命令之后,他立马就做了这个操作啊,立马就做了这个操作,OK,那我们看一下它的主要的还是它特点啊,特点这块稍微的要记一记。
01:34
要记一下什么海量存储啊,劣势存储及扩展高并发,然后还有一个稀疏性,特别这个稀疏性这块应该是大家啊,到目前为止接触的表稀疏表的应该是第一个吧,对吧,它这种稀疏存储的啊,稀疏存储的一个方式OK。啊,这块稍微要记一下,因为防止面试当中他有可能会问一问,就随嘴问一问啊,当然笔试题当中肯定不会有这种问题啊,笔试题不会有这种问点,就是面试的时候,有时候他就随便聊起来了,就说随嘴一问啊,就是因为面试的时候两个人聊的比较轻松的,比较随意了啊,就有时候有的问题他也不是刻意安排的,就随嘴一问,他突然想到就这样了。
02:16
好之后呢,就是我们聊的整个h base的一个架构,架构这块我们再过一遍,就是我们使用过了之后,然后再加上我们讲的这个读写原理之后,对吧,再来感受一下这块。这今天如果再讲一遍的话,应该大家的感受能好一点,能好一点,比第一遍听的时候啊比较晕,因为它里面组件太多了,同样的,首先我们之前所说过h base呢,它是基于HDFS上的一个存储框架,所以说它这个底层啊是HDFS那核心,HDFS的一个存储的核心就是data node吧,就是data not OK,那它上层才是我们的一个h base h base h base呢又是强依赖于这个,我们是把它调成了我们自己的开able对吧?啊,其实它自己内置,它有内置的开able,就你不起你的开able,把那个开的那个属性啊改成true啊,这个HP也是可以起来,也是可以起来,它在你启动命令start杠。
03:17
还是死的时候,群体的时候,它会去将它自己内置的K提起来,但是这块我们就不好看它的一个什么数据吧,因为它内置的我们看不到啊,看不到,所以说呢,我们把足K呢,交给我们自己来维护啊,自己来我会用我们自己搭建搭建的一个主K的一个集群,那样的时候我们还可以看他的一个相应的进到客户端里面去看他每个节点存的是什么内容啊,好看一些啊,是这样的啊,公司当中肯定也是用自己的一个微客集群啊,不可能让他内置的,因为不好管理啊,他自己的不好管理,假如说挂掉了也不好调啊,数据也看不到等种情况,也没有日志,什么东西都看不到,这就不好弄。所以说这块首先有一个able啊,它是强依赖这个的,那接下来到我们整个的h base集群,H base集群它有两个大的一个进程,对吧。
04:07
第一个是。H master还有一个是r reading server对吧,Reading serve这款主要h master跟CK啊会有一定的交互,会将h master他自己也是维护的相应的一个原数据信息的,他会将他这个原数信息啊同步到这个ZK当中,ZK当中交给ZK来帮他维护,帮他维护,而且ZK还管理着咱们整个的一个集群的一个监控,就说谁挂掉了,由他来通知这个h h master,然后由h master来做这个啊。如果说我挂掉了,是不是要将那个region移到其他的一个region so来维护啊,真正操作的是S再做,再做这个操作的,OK,那接下来就是第二大组件reading solo,也就是说我们说的实际存数据的地方,其实我们之前有讲过说h reading sor这个东西能存实际数据啊,它跟data录一样吧。
05:01
它真的能存数据吗?它不能吧,它其实也掌握着一个关于什么的一个原数据嘛,啊,其实你像对not,它是掌握着哎,这个数据跟本地文件系统的一个原数据,但是reading so呢,它掌握的是这个数据啊,跟谁呀,跟name no的那边的一个原数据啊,对吧,一个对应关系,其实是这个东西,因为它是一个进程,进程怎么能存数据呢?但是我们表述呢,就说SH8当中,不是在h base当中,它是存数据的一个节点啊,存数据的节点,那存数据的一个体现。首先它有一个h log,还有一个reading对吧?H log呢是它的一个。编辑日啊,它防止数据丢失的啊,防止数据数据丢失的,所以说他每次来的数据啊,它都会写到hlo,注意hlo是存在磁盘的啊。那你想想,如果说hlo还在内存,它就没有意义了,你后面数据放在内存,你说你是为了防止内存挂掉了之后把它恢复,那你hlo要是放在内存的话,那么一起挂了嘛,也找回来了嘛,所以它是存在磁盘的啊,存在磁盘的,那对于h base来说,它这个磁盘位置是哪的。
06:13
它其实就是HDFS,对,它是只要你编辑来了,它实时的是更新到这个HDFS啊,存到磁盘,它要保存到磁盘的啊,不是在内存当中的这样的一个问题,而且还要注意的一个问题,就是每一个reading so里面只有一个。H只有一个,这是一一对应的关系,这是一一对应的关系,OK,那后面我们在HB当中呢,它的一个存储单元其实就是region,那region跟大家说了,就类似于一张一张的。表对吧?哎,一张一张的表,那一个region是一个表里面内容,这没有问题,这句话没有错,但是你不能够简单的说一张表对应于一个region,对吧?啊,因为region也会被切分,就是表大了之后也会被切分啊,也会被切分的。
07:00
好,那不光一个reading sor里边呢,它不只能够维护一个reading吧,它维护的是很多很多的reading,那因为你的一个集群当中啊,不可能就只有一张表,会有很多很多张表的,所以说一个reading so呢,它可以维护多张表啊,维护多张表OK。好,那reading,这个reading里边就是一张表,里边它对应的还有什么?表从表结构来说,建表的时候除了要表明还要有什么列足对不对啊,啊还有列足,那这个列足在reading里面的一个体现就是什么,就是一个一个的做对吧?啊一个一个的做,那做这个东西就对应的是一个列符里面内容啊,但是我们也不能说一个列组就对应于一个做对吧?哎,它也是一对一或者说一对多的一个关系啊,一对多的关系跟那个表一样,跟那个表一样,那这块要跟说一个点啊,就是官方他不建议每一张表啊建多个列组,当然你可以建多个列组,但是他不建议啊,我跟他说清楚这个原因看一下。
08:08
当前我们这个reading从表上看,你先不看这个省略号,我们假如说这个reading叫T1表可以吧,啊,它委过的T表,然后这个store呢,这个是F1,这个是F2啊这个T表呢,它有两个列足对吧?哎,体现单两个列组啊,这个表T表啊,当前是刚创建的比较小,它是不是随着数据的增加,它会被切翻啊。看切分一分为二对吧,它就形成了这样一个东西,什么东西呢,这个region。变成了R1。RS2。ROK,然后这个里边又有半段的,So,原本的这个store跟这个store是在一块的吧,他把它切分了,对吧?哎,他把它切分了,他为什么不建议这样做,看一下啊,我们之前所说过,他这个reading定的切分啊,是完全按照数据的一个平均,就是按照r key来的,他会找到中间的那个u key1到为二,如果说此时存储的数据,因为我们是稀疏的,对吧,这个表假如说F1列索啊,是我是从一直零到5000,这个数据每一条都有,每一条都有它一切,它到达切分之后,它按照rie来,它是不是从两千五这个地方切开啊,对吧,也就是说这个缩维护着2500张数据,那同样的这个缩是不是2500兆数据,这没有问题,对不对,OK,那咱们看F2这组,由于它是稀收存储的,那F2列阻可能什么情况?哎,在这个零到两千五啊,它只有三条数据,然后在两千五到。
09:42
5000的它只有五条数据,有这种情况吗?可以吧,那这个就导致了什么情况呢?哎,这个地方啊,就只有三条数据了,这个地方只有五条数据了,只有五条数据了,哎,那当你触发flash的时候,触发flash的时候,那这个东西三条五条产生的小文件太多太多了,假如说你这是两个列组,对吧,如果说。
10:07
你有多个列组呢?很多列组,是不是每一个列组产生一个小文件?就从这个级别上成一个小文件,那有同学说小文件不是会被合并吗?要注意啊,我昨天所说的合并,合并的文件是什么级别的呀?是store级别的吧,它写的是什么?那个属性上写的是h store fair对吧?它指的是一个store里边做合并的,它并不会把多个做的I非要做合并,要理解这个东西啊,就是说每一个属性前面它都有定义的,就表明了它的一个级别,它合并的是,哎,当时如果说你这个store它刷写了四次,它不是超过三个嘛,对吧,昨天看到属性那个地方是三,他说超过三个的时候,就是四个及四个以上它的合并了,就你刷写了四次的时候。它才合并啊,就刷写了四次它才合并,那合并你三五条合并还是小文件嘛,就是他官方不建议用多个列组的原因就在这,原因就在这,因为你多个列组里边啊,它的数据存的是不平均的,你当前你按照r key呢来看的话,哎,这个F1列组是到了一个切分的,它一切分的一触发切分,它脸上是log so so fair,然后什么h fair,就是sofa那些东西还有memory so通通的都比到了,因为你你哎这log里边可不可能存在,诶刚刚写的一个日志是。
11:30
刚才我们不是说了零到两千五一个对吧,两千五到五千一个,那这个hlo最新的日志里边可可能有一个数据是1200,有一个数据是2400。对吧,那你刚才所说的一切分零到两千五到一个reading里边,然后两千五到5000到一个reading,那你X log相应的是不是也要给它分开存储啊,分成两个reading定来维护了嘛,因为你有可能把这个reading定要放到另外一个reading so来维护啊。对吧,它是把h log也会切分,然后同样的这个memory里边,它同样的也可能有什么。
12:05
分成两部分吧,哎,分成两部分,所以说一旦触发切分,它说的是切分reading,但实际你要知道的是hlo memory store加这个store就是最终的这个store fair都会被切分的,切分有两个region来维护,有两个region来维护是这样的一个过程啊,所以说官方呢,他不建议啊,不建议使用多个列组啊,多个列组,因为一个列组里边能存几百个列呢,够你存数据了,一个列组里边写几百个列都可以。啊,就是说够你存出去了,他不建议说你非得把列组给他拆分开,但是你非要说我就想用两个列组,那人家也拦不住你是吧?啊,人家也拦不住你啊,那就是这这只是个建议,就是防止出现在SD上出现大量的一个小文件啊,因为多个列组之间那个小文件它是不会互相合并的,它合并的都是一个列组里边的文件啊这样理解的OK,然后就是这个so啊维护了有一个memory store memory store。
13:04
你看这个MSO就是内存存储,就是我们在写数据的时候,是不是写到这个地方,就认为对于客户端来说,它就写完了呀,对吧,哎,它就写完了,那就对于h base来说呢,它不是它会将这个门缩里的内容啊,定期或者说看它的一个大小会刷写成。多对吧,哎,存到这个HDL上,那这个刷写是不是有触发条件啊。三个还记得吗?第一个大的那个40%有一个属性值对吧,那个指的是。是不是reading server对吧,你去看一下那个属性,前面它已经写了h reading server点什么什么东西,就是说它前面那个属性啊,都已经指明了当前的这个级别,当前的级别啊一定是HSO,它指的是整个的so,也就是一台服务器啊,你里边的所有的这些加到一块,它的一个内存占用超过了40%的时候啊,它会干什么,做一个刷写啊刷写OK,还有第二个是指的是。
14:07
有一个值叫128兆是吧,那个128兆前面的属性写的是HV。对吧,你注意看一下叫HRA啊HRA里边就是说这个里边它不有多个什么store吗?哎,这个东西memory store加到一块超过了128兆,它也会触发刷写,也会触发刷写,OK,这是第二个第三个还有一个一个小时对吧。一个小时那个属性写的是什么?H store吧,写的是X store里边啊,H store里边,哎,这个没store,他如果说里面存的文件呢,达到了一个小时。它也会触发他的一个刷写,也会将数据保存下来,是这样的,这三个条件啊,三个条件啊,大家有可能从网上看到的,如果你们去去看一些博客,他会提到一个。
15:01
说对吧,有人看到吗。没人自己搜是吧,我说一下,嗯,去看博客呢,很多博客都会提到一个h log,他说h log呢,达到一个G的时候也会触发刷写,但是我找遍了那个。配置文件找不到,这个属性找不到,他也有详细的一个属性名,但是我找到啊,但是这段我跟大家提一下,那是人家博客说的,但是我们的配置文件里面没找到啊,没找到,那你如果真的面试的时候,他要是真的问你有没有这个东西,你也可以实事求是的说,你说你确实从网上如果搜一些博客的时候,人家有提到,但是你自己去找了配置文件找,根本找不到这个属性啊,可以去搜一下,找不到这个属性是找不到的,但是刚才我们所说的那三个处罚条件,网上也有就是。网上博客呢,会说四个,就是刚才我们所说的三个,以及关于这个slo的,但是没有这个属性,就是的那个配置文件里面找不到,根本找不到啊,就是说如果真的面试过程当中问到这个问题,其实at这块啊,问这种问题问的比较少,问的最多的就是rie的设计啊,只会问rie设计,所有公司只会问rie设计,因为他不太关心这些东西啊,这些东西因为都是一样的,而且这些东西啊都是由内部机制自己来控制的,自己来控制的,所以说在外部一个使用,他关心的是rookie的一个设计啊,Rookie的设计面试题最多的就是rookie的设计原则,在更多的题就是给你一个业务场景让你来。
16:29
现场来设计这个rie啊,这个是最多的,而且那个还不是笔试题,是面试题,就现场问,他就随嘴一说一个场景,然后让你设计啊,这个才是最难的,因为设计原则的话,我们后面会讲,大家背一下就行了,那个是笔试题当中,大家写一下就三个原则,到时候你就记住一下就行了,要背的,然后最难的其实就在现场啊,他给你抛一个情景,让让现场设计。那这块呢,呃,设计那块我们也会说,后面那个有一个离线项目那块,老师也会带着大家去,哎。
17:00
根据需求来设计UOK的啊,因为如果说抛开需求空谈R设计没有任何意义啊,他肯定是根据需求走的啊,所以说后面会练一练那个就可的设计啊这块啊,大家就是面试过程当中有要有一定的随机应变了啊,随机应变的一个能力了,因为那个不是死的知识了,就灵活运用了啊,灵活运用了OK,那这款是我们刚才所说的是刷写的条件,然后给它扩充那个对吧。他这个你稍微记一下,有一个一个G,或者说你去上网搜一搜相关内容,就是关于h base flash的一个内容,Flash一个内容,然后你自己也可以把那个属性去那个咱给大家提供的那个。Before的那个文件去找一找,找不到找不到了,OK,然后就是刷写完了之后,每一次刷写都会形成一个文件,对吧?啊,就会导致他这个文件啊。太多啊,文件太多,它又有又有一个什么过程啊。合并的过程啊,合并的过程好,那这个合并的过程跟这个切分一样,也是由h master来主导的。
18:05
由H来主导的,就是说由h master来监控,哎,你这个地方要不要切分,或者说你这个地方要不要合并啊,真正做切分或者说做合并都是V0SO自己来做的啊,这个服务自己来做的好,合并它是不是也有一个条件啊。超过三个开始合并对吧,还有一个什么七天对吧?哎,它会合并一次,七天它就是统一的,哎,将这些东西又合并一次,或者说呢,就是超过三个啊,超过三个的时候它也会合并啊,这样他就将这个,而且是注意它是所级别的一个合并,就是将同一个列足下的一个数据啊合并到一块。合并到一块了,合并到一个文件里边啊,这是整个的一个刷写加在一个合并,相对来说这块的一个内容啊,在面试过程当中问的都比较少,相对来说比较少一点,就是对比那个rockie都少很多,然后刷写下来了之后,其实它是将这些数据是刷写到哪。
19:03
HDFS吧啊,它通过调用HDFS的一个客控端的一个API来将这个数据实际的来存到这个HDFS,包括这个hlo也一样,Hlo一样啊,那最后还有一个这个客户端,那客户端这块就涉及到它这个读写对吧?啊,它这个读写那这块要记录的就是新版本是没有那个杠入杠表的客户端先去找谁。找对吧,他去找,找到之后他拿的是什么数据。是不是有一张me达表啊,哎,Me达表的位置信息对吧?哎,是拿它这个位置信息,我们之前看到的,哎在哈102上对吧。102维护了,接下来客户端去找哈102吧,去干什么。去访问一下这个me达表吧,其实就是读这个me达表里的内容是不是啊,找一下当前你要操作的这张表在哪维护着呢?啊,又有一个节点来维护着这个表,就是说这个me大表里边也带大家看了这个数据信息了,它是不是存的是哎不同的表在哪个机器维护着呢?有一个搜狗,它有一个列叫搜的啊,那个搜狗里边就是哈德102 103104等等这些内容啊,他就找到了,哎,你这个student那张表啊,假如说UIE1001,他在这个103维护着呢,那接下来他是真正的找103嘛。
20:30
哎,找103,至于你是写还是读那。面的过程是不是都一样的呀,就是说你无论是写是读得先定位数据吧,哎,得先定位数据啊这块啊,所以说前面无论是读是写,它都会先去找读K宝,然后再找到没大表所在位置,最后再定位到数据所在位置,接下来他去执行读和写,那这款读和写就不一样了,对吧?那写的过程它是干什么?发送请求先写到log hlo里边吧,写完到h log里面之后,他写到。
21:05
Memory做里边吧,哎,他写到M做里边之后呢,对于客户端来说,就认为什么写完了吧,啊,他就给客户端发个消息,回复消息就已经写进去了,已经写进了是这样的,但是读他比这个写要麻烦一点吧。对吧,他先有个什么。读这个memory so啊,为什么先读memory so也跟大家提过memory so里边数据肯定是最新的吧,对吧,他会觉得最新的数据,那他拿数据给你拿最新的,哎,获取到最新的就OK了,他就能返回,如果有的话能返回,他如果没有的话,客户端连过来了之后,他会开一个block catch block catch,这个block catch呢,他会去读一读,他会去读一读。读完了之后,如果说这里面还没有的话,他才跟这个磁盘进行交互了,才会去读实际的文件,那真正的要读到实际的文件之后,他不是立马返回给客户端。
22:04
不是立马返回给客户端,而是先存到这个开里边,然后再返回到客户端,那下一次客户端来读的时候,是不是假如说没做没有的话,它就不用跟磁盘进行交互了呀,对吧,就直接跟什么block catch catch,大家应该听过一个叫LRU算法,对吧,L算法很多的一个flow catch都用那个LRU算法来做的,就是最近最少使用,最近最少使用,知道这个算法的,知道它其实是一个什么吗?它其实是一个什么类,它继承了或者说实现了一个什么类。没有进去看是吧,他其实其实其实就是一个link的哈希,哈希卖link哈希卖。啊,就全等,然后你可以给它设置一个大小,也设置一个预值,默认的是0.75,指的是什么意思呢?假如说你分配了一个100兆的一个内存。100兆的内存来存这个,达到75兆的时候,它就会将这个数据往外扔,他扔的是什么呢?扔的是最近最少使用的。
23:10
最近最少使用的啊,它会打标记使用一次呢,它有一个相当于一个标记在这维护着呢,然后如果说你当前加载了什么数据,对吧,它一一个一个的往上加载,如果说这个数据又被用了,他就把这个往上提提上来,它扔到呢,就是最下面这个数据啊,就是最远的一最原使用的,就是最近最少使用的。因为它最近使用的呢,它就会打到一个标签往上打,打到最上面,它扔的什么呢?扔最老的那个标签是这样的一个数,一个过程,把这个过程大家稍微了解一下,那这个flow cash呢,也是这么东西,也是这么个东西啊,就是我们提到的在这。之前我们提到这个架构之后,不是说了一下角色吗?当时我们只提到了这。访问这个B的一个接口,对吧,说什么请求读写,其实后面还维护了一个对应一个catch来加速访问,其实这个catch就是我们刚才提到的那个block catch能懂啊,对于客户端来说,哎,他每次访问的时候呢,它有一个block catch啊,那加速访问为什么呢?加速就是因为每次请求到磁盘的时候,它都会将这个数据缓存下来了,下一次读的时候,它就不用跟磁盘进行打交道,直接从内存当中就读走了,从内存当中就读走了,所以说对于一个啊数据能加速它的一个访问,能加速它一个访问是这样的啊,这样给人的一个过程。
24:31
然后刚才再看一遍,是这个时候来看这个整个整个架构的时候,应该能稍微能清晰一点了吧。啊,那清晰点的,比第一次讲的时候,因为第一次讲的时候,它里面的概念太多了啊,一时记不住啊,所以说啊,偶尔大家回顾一下,回顾一下啊,特别是你们学到后面Spark的时候,后面如果这一段忘了的话,还要时不时的回来看一看,因为真的到最后那几天的时间背面试题。太多了,很难把它记完,记完下来,对吧,就是学习过程当中呢,要时不时的来回来复习复习啊,那个时候你再到最后的时候来背面试题的时候,就会轻松很多啊,轻松很多,因为到Spark之后,呃,Spark要学一段时间,对吧,然后后面的项目呢,全是Spark项目要要将近一个多月呢,你这完的话,你就不看,就有可能就忘了,就忘了,因为到后面就是全是用,全在用这些一个原理性的东西啊,就不讲了,你后面都知道用了,还讲原理性东西,没有意义了,对吧,所以说自己要时不时的如果说想想起来了,回来看一看,回来看一看,就是周四啊,周六周日的时候做往回复习的时候看一看,然后今天呢,我会将第二个阶段的一个考试题发给大家。
25:41
啊,当时你们不是哈多,我不是有考试吗?对吧,第二个阶段从ha就是UK1直到uz啊,到我的课上完,也还有一次考试啊,还有考试,整个这些框架的一个考试,那些考试题啊,是我从那个面试题里面抽取出来的。
26:00
以汉为主,重要的是练练说考练烧考啊,就要写说的是吧?以搜索为主啊,就是面试题当中关于搜索问的特别多,问的特别多就是搜索这个不包不不仅限于还考不仅限于操作have的,Have的你肯定要熟,他有可能如果说他你念的是那个书藏行面,就是说呃,以后可能做have这块的,他连my circle他也会问很多买so考啊类似的买so的一个知识呢,也要减一减,也要减减就类似于count,新COUNT1跟count。列明的有什么区别,大家知道吗?你count你计算数据对吧,多少条啊,这个里面你可以写新对吧,可以写一吧,你可以写一个内,就是说写一个列名吧,对吧?哎,这些东西有什么区别,要知道还有还有一个问题,就是问的比较多的在面试题当中,就是MYSO,针对于MYSOMYSO当中的行转列跟列表。
27:01
没有买没有没有炸裂买说没有函数。没有。对,而且买当中也没有穿过函数,这你要注意到奥里面有穿过。能转能转啊,能转到他也有相应的一个方法去转的,但是他不是那个炸裂这块东西大家都要去看一看,都要去了解了,特别就是卖当中一个行类这种问的比较多,问的比多,然后那块面试题当中都会有所体现。区别跟你你们讲的那个高级的是吧,不是为什么有的人一提高级,就那有的人说讲了,有人说没讲,那个跟索引有关系啊,如果说你列的话。你用裂的话,这个列如果说对于这个列见了索引之后,它跟那个抗造锌是没有区别的,如果说你没有见那个索引的话,它跟抗造锌就是count新的一个效率更高更高啊,自己去了解一下这块的一个内容,就是count新COUNT1COUNT内你搜一下这个东西,它就详细的一个解释,整个的。
28:14
啊,整个的一个详细的一个解释,他跟那个高级们所有高级见索引这块还有关系,就跟你这个列有没有对这个列接索引啊,还有一定的关系,但是现在不要抄,现在就是课下的时候再去了解一下是吧,买S的东西,开课的东西,这个就是笔试题当中特别多啊,笔试题当中特别多啊,就是让你现场写那个海稿啊,或者说呃,直接在面试的过程当中啊,他给你。你俩面对面聊的时候是吧,给你一张白纸来吧,写色稿现场写,然后写完了之后还渐渐的问你一句,你这个色会有没有调试空间。你想想看,你现场写的,你有调能有调试空间吗?你有调试空间,你不直接把那个优化的方案写出来了吗?对吧,他也知道,他就问你,他就喜欢问你,对吧,你想想看是不是你,你说如果说你有两套方案的话,哎。
29:03
这个是优化方案,你在现场写的时候,你是不是把优化方案给写出来了,你会渐渐的是写这个,等到他会有一优化空间,然后等到再去写这个吗?然后他来一问,他来一句,那你知道有优化空间,你为什么第一次不给我写这个了,你你你更懵了,对吧?所以说他其实知道那个是你在现场写出来最优的方案了,但是他还会问你有没有优化空间啊,这种就是临场的一个变,对,然后就是有可能他觉得你还不错的时候,他也会故意的交代你能压你工资嘛,来压工资对吧,他怎么压你工资呢?都是通过这种方式啊,通过这种方式啊。所以面试的过程当中也是一个交流技巧,然后就是让大家上来分享呢,也是锻炼大家的一个表达是吧,在这多人面前看到,因为有时候面试不光是你跟一个。一个人来面试,有可能对面坐着两三个人啊,轮流问问题对吧?啊,这块东西就是一个交流,平时一个交流也要锻炼的啊,不光不要盯着这个光,就是专门的去搞技术啊,不能搞专专门搞技术啊,当然技术也要过硬是吧?啊技术也要过硬,然后沟通了一个表,表达能力呢啊也要好一点,要好一点。
30:13
然后是后面我们讲的一些这些应用,包括一些创表啊,建数据啊,管理些数据啊,然后扫描表啊等等这些这些操作,嗯,大家主要的还是感受一下h base他怎么用的,然后他数据结构啊等等这些内容主要在这边感受一下啊在公司当中呢,不会这样去用,不会这样用,你不可能说你自己手中的一条一条数据插入,其实一条数据你封了对吧?啊不可能那样做的,然后你也不可能说扫描一下这张表也不会的,或者说你就是这个get,有的同学说这GET1条数据,你也不会这样做。你没必要说看一条数据,你看一条数据干啥呀,对你有什么意义啊,对吧,你存着数据之后是拿出来做分析的,肯定是大量的数据做一块做抗的呀,啊做类似的一个分析的,拿着这些数据做map等等这些情况做分析的,不可能说你单独的看一下数据没有任何意义啊,对吧?啊这块主要是知道啊,它有哪些操作,怎么布的呀,这些东西就对应着在API当中的方法和类啊,它都有这种方法类。
31:13
因为是操作呢,它其实底层还是掉的啊,这辈子加包里边的API吧,是一样的啊一样的好,那这块需要大家记住的一个点是因为API当中呢,它这块封装呢,它封装的比较简单,就是说它写死了,就是这个delete啊,它不会有多种情况,在API当中我们会讲一下这个地方,我们看的时候,它是不是一删就把所有版本都删了呀。对吧,当时就算你是三个版本或者多个版本的时候,他一次性把这个多个版本全部删了,就删操作当中,那这个对应的有有这个API,但是呢,在API当中呢,也可以更细致的来控制我删除这个版本,或者说删除这个版本也是可以的啊,不一性把所有版本删了,因为一次性删除所有版本感觉不太好,对吧?我本来存三个版本,我最新的版本我不想我不想要了,但是我这两个版本我还我还想留着是吧。
32:05
哎,就可以在API当中来进行更细力度的一个控制,更细力度的一个控制啊,它它有两个方法啊,到时候我们可以我们会给大家讲到啊,就是一个是删除所有版本,一个是单一的一个版本的一个删除啊,大家这块稍微要记一下,就是删除操作在命令行当中呢,它是删除所有版本的,所有版本的OK。啊,那么之后是我们聊的这个数据结构这块核心的是这个R啊行线它的一个唯一,它有一个唯一性,对吧,因为它这个唯一注意啊,它不是h base当中为一。是哪不一样,是表结构里边不一样对吧?啊,一张表里边就是说如果说你有T1表,T2表,这个两个表里边有两个都可以相同这种关系啊,这没有关系啊,就是一张表里面它是要唯一的,然后还有一个长度也则因为在倍子当中呢,它整个的一个数据量非常大,你要想做到这种唯一性的话,那你的6K只能把它变长吧,哎,变长来控制它的一个唯一性是这样的啊,所以说它整个的官官方档的写到说最大长度可以达到64K 64K那一般在公司当中用的时候就是70~100就差不多了啊,70~100就差不多了,这块的一个内容一百一四节位吗?这块就差不多了,然后之后是我们聊的这个CF。
33:23
啊,这个CF Co family对吧,不是Co号是吧?啊,这个CF是它的一个列足啊,这个列足是列了一个集合对吧?啊列了一个集合,那这块是要在创表的时候就肯定的吧。啊,就是跟这个列组,就类似于跟那个MY当中列差不多的一个内容,对吧,但是呢,在整个base当中呢,它是没有什么类型的啊,就是说你见任何数据建任何数据结构的时候,或者说插入数据的时候,不用指定什么spring啊这些类型对吧?它都是better数组啊,全部都是better数组。
34:02
啊,所以说今天我们讲API的时候,你会发现他专门提供了一个工具类来帮忙完成带的数组跟其他类型的一个转换,转过来转过去啊都可以的,他都用那个专门的一个工具类啊,写好了不用我们自己来做这个操作了啊,不用我们自己来做这个操作,OK,这是它的一个列组啊,也是它的一个整个表当中非常核心的一个内容,之后是它的一个单元格S细胞,对吧,那这个里边是由rookie。CF加CN就column name对吧,加上version版本号唯一确定的唯一确定的一个内容,那这个版本号,我们所说的它这个版本号体现在哪。时间戳这个,哎,它的版本号是由时间戳来控制的啊,是这样的一个内容,这个要注意的啊,后面讲一个命名空间啊,命名空间呢,就类似于MYSL表里边的一个数据库啊,它这个用法呢,最常用的一个用法也是跟数据库相关的,当然它还有这些用法啊,跟家说了,这边呢,公司当中基本上也不用啊,聊了很多,就是现在出去的一个学生啊,聊了很多基本上都没有用到什么权限啊,这个限额啊没有用,就是用命运空间会用,就是用到数据库来管理不同的业务线上的一个表的啊,就是做这个事情的,它能够区分不同业务线上表的啊,是这样的,OK,然后读写原理这块,我们也刚才在讲那个架构的时候讲过了,这块的东西大家还是要自己去看一看啊,了解了解。
我来说两句