00:00
好,那我们知道这个地方呢,刚才我们所讲的。你做的一个合并,那这个数据是不是合并的越来越大呀,大到一定程度的时候就要做什么,做切分啊做切分,那切分呢,也有他自己一个时机,老版本和什么新版本啊,新版本,它老版本的新版本呢,都有一个这个参数,我们来看一下。这个参数是十个G啊。这是十个G是吧,是吗。那个带四的不是那个。这能复制下来吗?然后我们除以1014,这个是自己啊,1014现在变成什么?K是吧啊K然后变成兆对吧,除以G吧啊,十个力对吧?啊十个G,这是十个G啊,这个地方来看一下它叫什么东西啊。
01:14
一个里边最大的这个大小。啊,最大的大小啊,如果说任何一个列组里边的一个内容超过这个大小,它就要干什么事。一刀一分为二对吧?啊一分为二啊是这个意思,好,那我们来看一下老版本呢,他是直接按照这个条件来弄,只要你到达这么大我才接,但是新版本咱们不一样,他做了一个操作,他在代码里面这样写的。令R的平方乘以A,这个值是不是我们见过?Flash是flash的是多少?
02:01
吧,7728是吧。是这个值吧,啊128兆,然后呢,他说取一个小的值,跟刚才我们看到这个什么。10G对吧,刚才我们算了一下十个G进行比较的啊,取了一个这个什么小的,那问题就是这个R是什么东西。而是当前这个表有多少个reading。就当前这张表拥有的瑞利数,也就是说你刚创建的表,你告诉我什么时候开始积分。刚创建的表一直一直增到什么时候开始。啊,这个公式看不懂吗?多大呀,一兆吧,一兆,因为刚创建的时候R等于几,R等一一的平方等,你告诉我这个公式不会算吗?对吧?好,那为什么这个东西放在最后讲呢?其实瑞自动切分啊。
03:15
我们很不关注的,你要知道一个点,因为它会产生输倾斜来看一下为什么,因为当你这个数对是一个约定的时候,它是不是。128兆一切啊,它是按照肉K切的,一般来说一个肉K里面存的数据量差不多,因为在生长文件当中基本上差不多,那我们就因为它是按照RK啊,不是说他按照这个数据量来的,它是按照rook key,假如说你有1万个r key啊,从一到1万啊,它是从5000这个地方切的,它是完全按照r key的这个。中间值啊,取中间值来的,那我们不管,因为在生产环境当中,我们一般仪表数据存的数据量差不多,那我们就这样,就是第一次切分,切分出来什么。六十四六十四啊,大差就是可能这边60这边什么。
04:01
68对吧,啊,大概的这样的,好,那我们就按照这个思路来走来。我们刚开始创建表的时候,一个reading到达128兆时候做切分。对吧,一分为二变成什么六十四六十四好,接下来如果说你rookie设计的不合理,是不是接着往后面追加,那应该追加到一直在这个后面吧。所以接下来分成两个,这个是64,这个也是64 64这个不断的在干什么,增加第二次切分的时候什么切分。四乘以128。对吧,512的钱,好,那接下来这个64,假如说没有新数据管理插入是不是有可能。对吧,有可能好,这个64不变,当这个到达512的时候,一切切成两个,假如说还是从数据量上分,现在的数据三个规定嘛,第一个64,第二个呢256,第三个呢256,同样的道理,这个是不是还在扩展到第四次,在第三次切分的时候,什么时候签。
05:05
应该是三的平方乘以1014。啊,应该是吧,九。这个好,我们不用再接着细细讨论这个事了,总有一个切分是不是它会超过十个G,这个数据乘出来,最后是不是到十个G的时候去切分,好,那也就是说,哎,无穷多的时候,第一个64兆后面变成十个G。数据量,同一个表里边不同的的数据量要看什么?差距比较大吧,啊,差距比较大,数据倾斜了啊,产生了数据热点问题,数据热点问题,数据热点问题指的什么意思呢?关于这张表的操作,大量的操作落到一台服务器上面,你本来说我做负载均衡,想把这个reading切分开之后交给不同的服务器维护,为什么要交给不同的服务器维护啊?负载均存吧,当你用客户端请求来的时候,是不是尽量的将这个请求发送到不同的机器上,是不是这个事,但是由于你前面一台维护64的一台维护着,那你十个G才切,是不是有可能到9.8个G的时候还没切啊,一台9.8个G,一台64兆。
06:16
你想想看,数据量的一个请求,是不是这台机器大量的请求到这个对吧,所以你知道一个点它自动切分呢,会产生什么。输新写问题,所以对于这一块内容我们不做深究,因为在后面的时候,我们要对这个建表的过程当中,在生产环境当中一定要做一个事,叫预分区。就见表的时候叫做什么?预分区,那这个是干什么事儿呢?是这样的。我们在建表的时候,自己给他规划好未来。我要建。多少个分区?啊,提前就把这个分区记好,然后呢,你规定一下这个分区是一到1万,这个分区呢,1万到2万,这个分区呢,2万到3万,这个分区呢,3万到什么4万啊,你规定好就是这个一一万是什么意思,就是rookie。
07:09
好,那接下来你放数据的时候,尽量均匀的把所有的数据发布到那儿。放在这个里边能理解这个事儿。那就提前把这个分区规划好,就不让他干什么,按照他逻辑去干什么去切分,因为按照他的逻辑切分,是不是会产生数据吸引啊,第一方面我们先把这个。分区给他规划好,就是建表的时候我可以定义出来,哎,它可以建多个分区,最后我们在设计中K的时候,假如第一条数据我给它一开头。第二条数据我给他二开头,第三条数据给他三开头,第四条数据给他四开头,是不是来的数据基本上是轮循的发生到不同的分区里边,能理解这个事吗?对吧,就不会有我们刚才所说什么。数据的一个倾斜,数据热点问题吧,啊,这个预分区后面我们会讲,在优化里边会讲预分区怎么做,还有rookie,你建立好预分区之后,这个rookie怎么来设计的问题啊,怎么设计的问题,因为它自动切分,你只要知道一个点自动切分呢,会带来数据的什么热点问题。
08:14
啊,热点问题能听懂啊,是这个意思啊,大家关注一下啊,关注一下这个点。好,那这个呢,就是它的一个切分,那切分的过程就简单啊,就是它是按照周key来切到啊,一分为二来看这个PPT我也不放了,因为它比较简单,就是这个,假如说他到到达了我们所说的那个数据量大小,它就按照这个肉一刀分成两块啊,然后这块切成一个V,这块切成一个什么V啊,形成的是两个reading啊,形成了两个reading,注意它在切的时候啊,是这样的,假如说还有一个in for什么。二。还有一个英二,它也会把这个音符二给它干什么,切开啊,切开是这样的,它这个呢是形成了一个整体,形成一个瑞点,这个整体是一个新的瑞点,能听懂啊,它不是说分成四个瑞点,不会这样的啊,啊不是分成四个,分成两个啊,分成两个是这个点。
09:07
能听懂吧。整个的切到啊,整个切到,也就是说它是这样的。好,我们现在知道这个东西是不是啊,对吧,好一切它这会多一个什么一大串数字。多一个一大串数字,在这个一大串数字里边,我们发现有一破一,一破二对吧,在另外一个一大串数字里边,同样的有一破一,一破二,能听懂这个意思吧,就是一切,他把两个列图同时切开,然后把上面部分按照rookie这一部分。给他拿到第一个位置,把下面一部分拿到第二个位置,能听懂吧,啊是这个意思,好,那就会有一个问题,官方他有一个建议,由于这个我们已经讲完了它的一个flash和什么。和最后的一个切分的一个过程啊,切分的过程,还有那个什么合并啊,这些过程,他官方有个建议,他建议呢,你在使用列图的时候,尽量的使用一个列图,不要使用多个列组,当然这是建议你生产环境当中可以使用多个,你要自己控制好就行了,它为什么是这样建议的,来举个例子,他害怕你发生这种情况。
10:16
一张表我在建立的时候,我创建了假如说三个分区可以吧,啊不是三个分区啊,三个列组,这是I1就是I2,这是I3没问题吧。接下来我铺的数据来看,我布的一个数据,我A1里面插数据,我布的一个数据A1L2,有一个铺的数据A1A1A1一直A1S3,偶尔来一个,二的偶尔来一个。就是大量的数据在A1里边,而L23里边呢,数据量比较小。啊比较小,好第一点。一切。一切是否全部给它切开?也就是说本来你这个数据就可能就五六条了,你也就五六条,一切可能两个reading里边一个两三条,你个两三条吧,对吧,好。
11:07
这个时候如果出发了。全局的flash。每一个内存都要flash。你这两三条数据,两三条数据都要单独的形成一个小文件,都要形成单独的小文件,而我这个数据量多吧,我形成的文件干什么?不是小文件,因为他切的时候还有那个什么flash的时候,是不是有全局的那种量啊,他不管你单个的,他一刷全局的刷新,是不是所有的内存都要刷新,形成了大量的什么。小文件啊,形成大量小文件,所以官方他不建议什么。不建议多个。能明白这个建议吗?对吧?啊,他建议呢,尽量的使用一个列,不使用什么多个列组,是为了防止出现太多的小文件啊,如果说你用一个列组的话,那没关系,因为你往里面放数据,只能往这一个列读方法。
12:06
你触发全局,那我这一个列组数据量也挺大的嘛,啊,所以呢,它小文件数的数据量就会小一些,但是生产环境当中啊,不是说你不用生产环境当中我们也会去用多个列组,那你控制一下,就I1I2尽量的数据量同步增长不就行了吗。刚才我们说产生小文件的问题是在于IE数据量增长的特别多,而LS3比较少了,但是我们设计出来有两个列足,我们最终放数据的时候,I1L3你在设计支出。这条数据A2三都均匀分布的不就完了吗?对吧?啊这个地方就OK了,就是他有一个官方建议啊,这个呢,是之前有学生被问到的,被问到的说官方有个建议,说不建议使用多个列足,问到为什么,那你要知道对吧,防止说什么。产生小文件,因为它有一个flash的参数,是全局的flash。
13:01
因为全球的flash,它不管你单个内存多少了,哪怕你就一条数据我也刷新是是吗?小文件就像我刚才手动触发的时候,他需要管理这个文件大小吗?不管吧,是不是一条数据也照样刷数据啊,啊也照样刷去,是这个意思,所以呢,防止出现小文件,官方有个建议,不要使用多个列图对吧?在生产环境当中呢,照样我们可以使用多个列组,因为你自己控制I1LI3,假如说你使用三个列组,只要控制这三个列组数据同步增长就OK了吧,啊保证数据量差不多,就不会出现这种说我们所说的这种小文件的问题啊,所以呢,这个只是官方建议,没有说强制,如果说强制他就直接把你多个列组的这种方式给关掉不就完了吗?就不给你开放接口去使用不就完了嘛,对吧?啊所以呢,只是建议啊,最后呢,建议大家要关注一下,因为这点学生面试的时候被问到啊,被问到。
我来说两句