00:00
好,介绍完预分区之后呢,接下来是系统的一个分区规则啊,系统的拆分是你不管是否使用预分区,它都会生效的这么一个规则啊,那reading的一个拆分呢,是由h reading summer完成的,就是由下面的小弟自己去主动操作的,只是他在操作的时候需要去汇报给master,怎么汇报,把信息写到主K班里面,他汇报给master之后呢,Master会对他进行一个记录,就还是那句话,干活是小弟干的,但这个事儿你一定得先告诉你的领导,领导记录下来,你要干这个事了,你再去干,干完之后再给你的老板汇报,那框架也是一样的啊,框架也是一样的,你通过它是通过ZK,对吧,你可能是通过钉钉,通过企业微信,一个道理,你通过这里面写上你的信息,然后master呢,监控你的钉钉或者监控这个组K,他就能看到对应的一个消息,修改ma表,Master才能修改ma表对吧?前面已经介绍非常清楚了,Master修改ma表在你对应的这个region。
01:01
进那个信息里面去添加两列in for split a和in for splite b,为什么叫spli a SP spte b呢?这个指的就是你切分之后两个region的信息啊,是切分之后两个region的信息之后呢,需要操作HDF上面对应的一个文件,这个文件啊按道理来讲,如果进行拆分的话。他需要把那个stop fair完美的切成两份啊,怎么切,按照rock k的那个范围来切啊,Rock k字典序的那个范围来切,完美的切成两份对不对?但如果真的实际操作起来啊,会比较麻烦啊,会比较麻烦,所以他不会当场就去挪动那个数据,完成那个拆分,它只是创建一个文件的一个引用啊,一个文件的引用方法相当于做一个什么快捷方式啊,做一个快捷方式不会真的去挪动数据,刚完成拆分的时候,两个region呢,还都是由原先的region server进行管理,他还没有实现负载均衡的,他把这个信息汇报给master就完成了,他要再汇报一次,汇报给master之后呢,Master再将这个信息呢,写入到MAT表中,就是新的一个锐进信息,新的锐均信息旦写入之后,另外一条线程会去写那个负载均衡road balancer,对吧?负载均衡,一旦触发负载均衡,他发现这个region切分了,切分之后呢,这个region server就管理了两个region,看一下是否均衡,它并不意味着一切分就不均衡了,对不对?
02:23
你原本是4441个人切分了,变成445了,你说它就不均衡了吗?还是均衡的啊,还是多一个没办法对吧,那就放在这儿啊,除非你有这个非常极端的一个情况,它不均衡了,他才会去修改对应的一个服务者,那如果是数据的话,我们说前面只是做一个快捷方式,对吧?数据什么时候呢,要等到下一次压缩的时候,这个压缩呢,指的就是文件的合并,就是前面那个文件合并。一般是大合并的时候啊,大合并的时候,你总的呢,你反正也要对数据进行了一个操作了,对不对,它会对这个数据呢,实际的进行移动拆分到不同的region,就是不同的文件夹里面啊,不同的文件夹里面好,那你不管是否使用预分区呢,系统都会执行这么一套拆分的一个规则,这个拆分的规则啊,还有一定的一个版本变化啊,有一定的版本变化,它使用的副类都是同一个,就叫切分规则啊,Region切分规则只是在不同的版本里面会有相对应的一个变化啊,在0.94版本之前啊,很早之前,很早之前呢,它这个拆分的时候呢,考虑的问题呢,不够全面,只考虑到一个点,就是不要让这个文件太大。
03:35
不要让到菲尔,就是到里面那个文件太大,它不能超过多少呢?不能超过你设置的这个最大文件大小,也就是默认十个G,不能超过十个G,超过十个G的话,Region和进拆分拆分成两个啊,拆分成两个region啊,一边五个G,大概是一边五个G,它不一定均衡的啊,它是按照UK的那个字典序来拆嘛,好,这是最早的版本啊,然后0.94版本之前,2.0啊之后2.0版本之前又称成了一个新的结分规则,这个新的结分规则呢,非常的麻烦啊,非常的麻烦,他考虑的点就是这个0.94版本更新之后啊,考虑这个点是什么呢?
04:13
十个G太大了,如果刚开始创建了一个表,这个表呢,只有一个region,那就意味着这个表是不能实现分布式的,它只能由一个节点来干活。啊,一个节点来干活,那一个节点干活,一直要干到什么时候,干到十个G,太累了,你你你让一个人一直负责一件事,一直到这件事儿呢,已经非常非常大了,他一个人都干不过来了,还在让他干呢,一直干到他都快累死了,十个G了,才进行拆分,给他安排一个人变成俩人了,那作者呢,只要这样不合理啊,所以作者呢,写了一个公式。啊,写了一个公式,这个公式呢,是由初始化大小乘以readingin个数的三次方,然后呢和十个G,这不是那个十个G嘛,比较值谁小按照谁来进行切分啊,这样的话会进行切分,我们不需要去记这个公式了,因为现在呢,这个东西也已经过时了啊,我们只需要大致看一下怎么切分就行了。
05:08
那如果你这个region啊。你这个table表那个region的个数是这个table表嘛,如果你这个表里面只有一个region的话,那第一次切分呢,就是达到256兆,就切分成两个region啊,切分成两个region,如果你这个表有两个region的话,那某一个region注意啊,它它是只能切分一个啊,一次只能切分一个region,如果里面有两个region,有一个锐进,大小呢,达到了两个G,那就给它切分一下,变成三个锐减啊是这么来的啊,依次类推嘛,一直切分到第四次的时候呢,这个值会大于十个G,那就按照十个G再往后进行切分。就可以了啊,咱们再来说一下这个方式啊,最开始只有一个锐,一个锐进呢,按照256兆咔切一刀变成俩对吧,变成俩啊,这是256兆变成两,256兆之后呢,两个region里面它的大小不一定是均匀的,不同的region进肯定不均匀嘛,那第二次切分呢,是一个里面达到两个G了,然后对两个G进行一个切分变成仨。
06:08
哎,就这么来的,这个上面这个保持不变,下面的达到六个六个G多的时候,那就是这三个当中有一个人达到六个G多了,比方说他六个G了。啊,那就把它呢,再进行一次切分,变成四个,那往后呢,就他们他们四个里面谁达到十个G,谁进行切分就可以了,啊是这么一个规则啊,然后在2.0版本之后呢,又发生了变化,发生变化的原因是没有力,嗯嗯,前面这个切分规则太细了,没有什么意义啊,我们最终呢,只需要一个规则就行。如果它只有一个region的话,好一个region按照。256兆切分啊,这不是刷写大小嘛,刷写大小是128兆对吧,就刷写两次就切分一下啊,它的道理很简单。始终保持一个节点呢,它没有办法实现分布式效率比较低啊,那几个节点就够了呢,其实两个节点就够了,没有必要做这么细,因为你不断的切分也耗性能啊,两个节点就够了,所以第一次250度,这赶快就是这个表刚写一小会的时候,赶快咔切分成两个,切分成两个之后呢,往后都按照十个G来进行切分就可以了啊,这种呢就叫大道至简对吧?上面这个规则呢,你说它细不细好不好用,那够细够好用了,但是太麻烦了啊,太麻烦反倒没有什么意义,我们只需要简单的追加一个规则就可以了啊,大道至简,学海抽丝对吧?你学了非常多的一个规则,最后你发现最简单的才是最好用的啊,这是我们新的一个规则啊,这套规则呢,也给大家写的有对应的一个负类啊,你直接到。
07:43
第二,里面CTRL加NCTRLV搜索这个父类你能找得到。回射啊,所有这个分类找到之后呢,这里面就会有对应的一个介绍文档里面写的非常详细,对吧?这里面有叫b before 0.94 0.94版本之前是他啊,这个呢,是0.94版本之后,2.0版本之前啊,2.0版本之后呢,就是它啊,你看这个名字你也知道啊,肯定是最新的,是最好用的对吧,最简单的反倒是最实用的啊,感兴趣的话呢,可以自己去看一看啊,咱们呢就不做过多介绍了,因为设计呢还是比较简单的啊。
我来说两句