00:00
呃,然后接下来我们看一下其他的一些优化啊,这些优化点呢,就是一些配置参数,大家稍微做一个了解,第一个就是内存方面优化,内存方面优化呢,就是告诉你在启动那个维的时候,这个内存啊不建议。分配特别大啊,不建议分配特别大,那这个是什么意思啊,是这样的。因为我们知道有一个那个V0级别的flash对吧?啊,那如果说你全局的给的特别大,你40%也会。特别大对吧,40%也会特别大,那有同学说你到了40%才会阻塞血,但是大家要知道还有个0.95,它是不是到了40%之后,它一直阻塞到什么时候啊。也就是说乘起来八吧,那你如果说这个基数特别大,这两个差值就会特别大,对吧?啊看着好00.38,差1.02,但是基数特别大的时候,它是不是差别特别大呀?啊特别大,那第一个阻塞的时间很长吧。
01:02
第二个你全局的一旦触发刷写之后,他要把所有东西全部刷下去,刷下去虽然这个内存将来是要用的,但是在刚开始的时候,它是不是要经过GC之后啊。垃圾回收之后吧,内存的一个空间对吧?啊,内存空间要用的垃圾回收之后才可以用,所以它整个这个内存可用的时间等待时长也比较长一点,所以他不建议特别大啊,这是我们所说的内存方面的一个优化,那之后呢,是它这个优化呢,跟其他的还不一样,其他的是不是尽量说加内存啊对吧,这块说内存不要太高,就是因为它flash过长啊,不希望它特别大,是这意思啊好,那之后呢,是一些基础的优化啊,基础优化来看一下第一个。允许在HDFS文件当中追加内容。啊,这个默认呢,就是注啊追加内容,因为更多的像那个我们所说的h log呀等等这些东西是不是就是要往里边去追加的呀,对吧,因为他只要往里面写就行了啊允许追加内容,这个一定要打开,如果说不允许追加就麻烦了啊,就麻烦这个事好第二个data not允许最大的文件打开数。
02:10
那这个有什么好处啊?把它调大一点。因为h base在刷写的时候是不是有一个reading级别的。VSO,整个VSO所有的M都要去撰写了,那这个时候你想想看,它要操作的文件数是不是特别多,对吧?啊,那你可以调大这个值啊,调到这个值,如果说你同时要写的有100个,但是你打开数只有十个,那其他的90个是不是同时在等待,那刷写的时长就被。长嘛啊,你要等待是做这个事的啊好,那接下来是这个。呃,说优化延迟高的数据的一个等待时间,那这个是什么意思呢?就是这个其实有很多东西都是这个内容。啊,就是说有的任务它本身就比较慢,但是我们发现有很多框架里边都定义了个什么超时时间,对吧,但是你一旦超时了,你这个任务没完成,他就认为你是一个坏掉的任务,就主动的给你干什么,给他清掉,给他杀掉啊是这意思,那如果说你这个任务操作时间本身就很长,就类似于你这个内存调的特别高,然后flash过程就会很慢嘛,对吧,你就类似的把整个的一个等待时间啊,可以去调长一点啊,去调长一点那意色,但是这个其实还好,这个优化点还好啊,然后接下来这个。
03:32
这个什么。压缩吧,啊开启压缩,同时开启压缩用什么样的一个压缩方式,那既然h base里边是一个存储框架。是一个存储框架,那是不是也同样的也可以用到用到这个压缩啊,它也可以用这个压缩啊,提高它这个存储效率,这意思好,那接下来是这个内容啊。
04:04
RVC的一个签定数量,这个就是因为我们看到了客户端跟服务端的一个通信中间是不是用到了一个RBC啊,对吧?啊,有多少客户端可以连到这个维搜是这意思啊,就是默认的是30个啊,默认的30个,如果说超过30个,是不是有的客户端要等待对吧?那如果说你机器性能方面比较OK的话,那我们可以稍微的调大的一个值,调到什么50个啊,60个啊等等,这种是不是减少客户端的一个等待时间,对吧?因为如果如果说你客户端的一个操作这边呃,比较密集的话,整个的一个QBS比较高的话,那咱们就可以把它调大也。QBS。Query per second。每秒多少次查询?能理解吧,啊就是嗯,这个QBS啊不不光是做查询,任何发送请求。发送请求就类似于呃,滴滴在高峰期的时候,他能到到到5万到7万的一个KPS啊,我们也叫这个,就是他这个打车,打车高峰期的时候那个打车的一个请求。
05:10
每秒钟五到7万,这个也叫KBS啊,一般的就是高并发,我们就会用这个KS,诶你这个高并发能并发到多少对吧,用用这个指标啊,每秒能到这个QBS多少东西呢?崩溃啊会崩溃就这意思啊啊那接下来优化X做的一个大小默认的,我们假如说A分区了之后,假如说分了100个区,对吧,它是不是下一次切分到十个G去切分啊。也就最大的它会在十个G吧,对吧?啊一个内容在十个GOK,那有时候呢,我们要稍微的调小一点这个值。因为还有一个点,每一个reading啊,它是一个什么,一个map啊,每一个reading它是一个map,那这个问题就严重了。如果说你是十个G的话。那你想想看,你九个G的时候,它是不是还不会写九个G走到一个ma,那这个ma的当然ma不会崩,因为它是批量一个一个读进来就处理,处理完了之后写出去,对吧?啊,写到那个环境网中去,满了之后写到磁盘就不会崩,但是你这个map运行的时间也太长了吧,对吧?啊,也太长了,那如果说我把它变成五个G,最大大小五个G,然后呢,之前分的是十个区,我现在分30个区,之前是十个麦宝,现在是30个麦宝。
06:25
对吧,必行度是不是提上来了啊,并行度提上来是这个意思啊,讲的这个事儿啊,那这个呢,是我们说客户端的一个优化这个点呢,就客户端的一个什么。写缓存。客户端写缓存,因为假如说你要发送那个很多的一个数据,当然我们是不是可以用list去发送啊。但是大家要注意一个点,就是你list里边放100万条数据,或者1000万条数据,它真的是100万条跟1000万条同时就写什么。不是的啊,不是的,这要注意它是怎么弄的,它对于h base客户端里边呢,有一个写缓存,他把100万条数据给它拆开了啊,默认值正好你那天有个同学问到了这个事情啊,问到是说写100万条特别慢,就是因为这个写缓存,它那个调用RPC时间比较长啊,默认值呢应该是两兆。
07:18
两兆给它调到200兆之后呢,是从。是从多少时间20秒降到了三秒热吧?啊,有的同学测过20秒降到了三秒,因为你整个的这个兆数上去了是不是。通信的时间变少了呀,RPC远程通信,其实这个是比较消耗时间的。啊,比较消耗时间的,当然如果说你这样做的话,你写缓存调大是不是应该写缓存,就是你客户端这个缓存得够啊,内存得够吧,你不能总共利用一个G,你说给2G这个不合适吧,对吧?啊就减少它的一个调用次数,是这个意思啊,客户端的它的一个缓存方面的一个优化啊,缓存方面优化好,还有一个是这个是写缓存,还有一个是读缓存,读也有一个缓存啊,读也个缓存,这个读缓存呢,不是我们所说的那个blockche做一个区分,这个都是你客户端这边的一个什么。
08:11
缓存的内容,我们之前所说的一个点。是什么点呢?就是说之前我们是不是用到了scan,还记得吗。记得吗?对吧,我说了那个东西呢,不是说。是一个数组啊,一个集合,因为它根本放不下它一批一批的去拉取的,我们看到好像是一个普通的迭代器息迭代对吧,它是你迭代一次,他发现没有值,它就拉取一次,迭代完了又去拉取一次,那一去拉取,拉取多少呢?由这个值来决定的。啊,由这个值来决定的啊,由这个值,如果说那你看他每一次去拉取,拉取一次,假如说你总共这个数据表里面是100万条,你一次拉50条跟一次拉。
09:02
10万条拉取的次数是不是不一样啊,对吧?啊拉取的次数不一样,但是有个前提条件,你客户端的缓存还是要干什么要大一些,因为他一次拉取过来数据是要放到哪,放到内存里边的,对吧?啊是这意思,这个呢是我们所说的读跟写两个有关的。好,接下来最后一个。Flash com,它是不是都有额外的相应的一个参数啊。对吧,Flash过程comp合并和spli这里的优化有一个核心的点,Comp是不是我们做了一个优化,要干什么事?关闭七天的自动合并,那个还记得吗?那个那个上面那句话呀。算了,那咋不算啊?这算优化,你改了配置参数咋算优化,你之前容易出问题,现在不容出问题了,咋不算优化呀,对吧,这算优化啊,还有切分里边我们是不是做了预分区啊。预分区是不是对于切分的这种优化呀,是的吧,Flash里边我们将那个。
10:05
最大的内存把它调小一点是不是优化呀,对吧?啊所以之前我们所讲的点呢,这最后对于这核心的几个机制,对吧,读写以及什么flash都有相应的优化吧,啊在这块呢,做一个总结,你要注意一下,其实前面我们已经穿插到前面去讲了,对吧,里面一点,那因为参数我们都已经看过了,就128兆0.40.38啊,那我们可以如果说内存太大的话,是不是我可以把这个值调小一点。我把这个值调成0.3。对吧,然后0.3~0.9,我把第二个值调成0.9行不行,对吧?啊是类似于这样的一个操作,你可以说把全局的内存给它调小啊,或者说内存不调它已经很高了,我是不是可以把这个阈值给它调小一点,是不是达到一样的效果。之前我们这个内存优化掉,说把内存调小是为了干什么事的。
11:00
防止0.4乘以这个内存太大吧,发写时间太长对不对,那你除了调小,因为是两个参数相乘嘛,你除了调小B参数,你A参数调小是不是总的大小也小呀,对吧?啊是这个意思,所以呢,最后把读写我们之前所想的前面所讲的那个。整个的进阶当中的这几个流程当中有一些优化啊,在最后呢,做一个总结,你要知道啊,这里面任何一个点都有优化的啊,都有优化的是这个意思啊,但是这个优化的整个过程当中呢,最重要的还是我们所说的预分区和U可设计。啊,这两个东西,因为你把这个内存啊,什么东西这些东西调好了,你给了很大的一个内存,最后你预分区跟UK设计,没有做预分区UK设计呢,假如说你没有做预分区UK怎么设计也无所谓的,对吧,假如说你没有做预分区U可设计呢,也设计的不好,你说你内存调的大,这些东西有意义吗?意义不大啊,意义不大,相对来说意义不大,因为我们更重要的你前面服务这块的没做好,后面说客户端调这些缓存有用吗。
12:03
用处不大了,你客户端所有的请求都请在一台服务器了,这一台服务器都挂掉了。对吧,他都挂掉了,那你还说优化客后单,这没有意义了啊,没有意义了,所以呢,最重要的还是我们说的这两。一个预分区,一个rookie的一个设计,这两个东西一定要把我之前所讲的那个案例去吸收一下,如果说有不懂的可以随时找我,因为那个东西,呃,大家做到举一反三的时候呢,要想一想,你结合着公司当中人家面试官给你的那个业务场景去想一下这个问题。
我来说两句