00:01
好,再往后呢,我们会有一些参数的优化啊,首先呢是一些通用的参数啊,叭方说第一个叫组K派绘画超时时间,这个呢,所有跟组开去连接实现分布式的都会有这么一个,哎,超时的一个时间叫timeout对吧,这个超时时间呢,默认是90秒啊,当某个reading s挂掉之后,90秒之后呢,Master才能察觉到,把它呢给它减掉,如果你想让它尽快察觉到的话呢,你可以把这个时间给它调低一点啊,20~30秒,可以尽快减少它的一个故障啊,这个地方你怎么调呢?就取决于你能够啊容忍这个超时的一个东西啊啊呃,上面呢是调整它的一个时间,下面呢还可以调整重试的次数啊,可重试的一个时间,等0.1毫秒重试一次,重试多少呢?重试15次啊,类似一个心跳机制啊,这个时间呢,你不能说,哎,我想让它尽快的检测,所以把这个时间调的特别短,你不能把它调到太短,你要把它调到两秒的话,还会有另外一个问题。
01:01
题,可能人家只是网络延迟一下,你以为什么呀,你以为人家死了啊,那喘口气的功夫,一口一口呼吸没上来,憋了口气,你以为人家没心跳了啊,没呼吸了,挂了,那显然也不合适对吧?我们这里呢,默认是90秒啊,90秒太长,指的是他都已经挂好长一段时间了,尸体都凉透了,你才发现它死了啊,也不合理啊,你呢,应该尽量的把它调到一个合理的范围之内啊,官方给我们的推荐是,如果你的网络比较好啊,你希望呢,它调整到20~30秒也是可以的啊,这个跟你的网络情况有关,你说你的网就经常发生故障,对吧,动不动30秒延迟,那你就把它时间调大一点。如果你的网很好,你觉得他应该尽快检测到,那你就把它给调小一点啊,看你的网以及你的多能忍啊,这是第一个叫超时时间,下一个呢叫RPC监听的一个数量啊,设置我们的region server能够处理的一个通讯数量,默认值呢是30,如果你的请求特别多的话,读写请求特别多,那你可以增加这个值,这个读写请求就是那个put和get。
02:05
因为什么呢?因为你这个地方指的是region server的一个RPC的通讯,能直接跟region server通讯啊,就是客户端已经那个,呃,重量级的连接里面已经有了原数据,它在执行put get的时候才会跟region server进行一个连接,你的请求太多了,你就把这个值呢给调大,这里调的值是单排,单排节点的一个值啊,这是我们的默认30啊,再往下手动控制大合并,大合并默认是七天啊,它的一个周期,你要是觉得让它自动去执行呢,有可能影响到你正常的一个操作,你可以把这个值改成零,改成零是不生效,但如果你把它给不生效之后,你一定要记得手动合并,这个是官方一再强调的。因为大合并是非常具有意义的,他能把所有啊冗余的数据全给它删掉,小合并要按照机制来,有些文件可能就成为漏网之鱼,就永远不删了,在那儿非常的浪费空间,可能里面都是冗余的数据,对吧?所以大合并非常有意义啊,一定要记得手动去执行啊,你你也可以选择躺平,啥也不干,让他七天执行一次,默认也可以啊,默认也可以,人家作者说他是七天肯定是有道理的,对不对?如果你是高手的话,你觉得可以控制,那你就去控制啊,如果你觉得你想用起来方便使用默认啊,那点呢,就在于如果你是高手,结果你还是装的,那就不好了啊,你把人家给关了,结果你忘了手动去执行,这就不好了,对吧,这是我们的大合并。
03:34
再下一个是优化我们文件的那个大小,这个值呢是那个max,就是那个切分大小,不知道还记不记得。Split大小最大的那个值默认是十个G啊,默认是十个G,如果超过这个值的话,会一定会触发那个锐进的一个拆分啊,一定会触发RA进的拆分,嗯,现在呢,我们已经不太会去跑MR任务了,对吧?所以这个单个文件多大呀,我们其实没有必要让它去对应128兆了,可能在之前讲的时候呢,大家就会有一个疑问啊,经过文件合并之后,那这个文件不就会变得特别大吗?如果文件特别大,跑MR的时候不就挺费劲吗?啊,你不用担心,因为我们已经不跑MR了,对吧?那作者呢,自然也是知道了啊,把这个文件都合并成一个大文件有好处,冗余的数据都会被删除掉嘛。
04:20
对吧,好。你可以把这个值呢,再继续调大对吧?啊也也也是可以的啊,官方呢,推荐你调到十到50个G啊都是可以的,取决于你总的数据量的大小啊。好,再下一个叫优化h base客户端缓存,这个客户端缓存非常的特殊啊,跟别的地方讲的那各种各样的读缓存写缓存都不是一回事,这个是网络通讯的缓存。网络通讯我们都知道有一个非常经典的操作叫批处理。啊,叫批处理,我们P处理就在这了啊,它呢是两兆啊,两兆来去呃,传输一次啊,当然它并不一定是两兆,对不对,这个很早之前咱们就呃介绍过了啊,如果你学过我们上硅谷的课程啊,各种各样的框架里面都会有,一般批处理呢,除了一个大小之外,还会有一个时间,所以你说我就写一条数据,就几个BY,它能不能写,当然也能写,对不对,它是指你的数据量写入特别大的时候,那它呢,两兆写批,两兆写一批,这样呢能够减少RPC通讯的一个次数,如果是来一条写一条,来一条写一条,那通讯的次数就太多了,两兆写一条就可以了啊,应该设置一个比较合理的大小,那作者设计两段呢,其实就已经考虑到我们大数据的实际应用场景了啊,也不推荐大家去改,知道就可以了。
05:41
再下一个scan next扫描获取的h base的一个行数,这个指的什么呢?呃,这个指的是我们每次scan扫描得到的最大的一个行数。这个值呢,可以用来调控一些误操作啊,比方说你们公司来了一个小白,这小白呢特别的捣乱,他上来就要扫描你们一个T的表格里面所有的数据,那你说这玩意儿它一扫描一定内存溢出对不对,数据量一定超标嘛,好,那这时候呢,你就可以去设置这么一个值,来指定它获取的一个行数啊,让他扫描的时候呢,最多获取多少行啊,如果你们公司呢,对这个H的使用啊,是由专业的人来控制的话呢,那不建议去修改这个值,这个值默认是int的最大值,说白了就是不限制,因为int最大值呢达到了21个亿。
06:31
它可以扫描21亿行,所以相当于是没有限制的啊,如果你觉得容易出现问题的话,可以给他限制一下啊,不要当然你不要限制的太小,毕竟我们还是在处理海量数据的啊。好,这是我们的sky NEX,再下一个就是我们涉及到啊,这个读缓存和写缓存的一个对内存比例了啊,它的比例呢,都是40%,我们在使用的读缓存占用40%,写缓存占用40%,这个写缓存指的是一个region server里面多个跟store对应,不是每一个跟store都有一个写缓存嘛,是多个小缓存加起来的大小啊,达到了40%啊,这里呢,我们也可以看到整个,呃,Master就不说了,对吧,Master只管理它占用的内存倒不多,我们主要的服务呢,就是那个region server,就是那个节点。
07:21
对吧,那这个节点里面啊,40%是斜读缓存,40%是斜缓存,也就意味着两个缓存已经占到了80%,剩下的20%用于我们别的组件,哎,什么叫组件呢?就是你创建你这个CVM里面创建的内核对象对吧?别的组件和别的一些操作,主要的内存都用在这儿了啊主要内存都在那你知道了它主要内存我们往下再进行内存调优不就非常方便了吗?有没有想到我们主要的内存都用在这里了,那对应的它有一个说法啊,多线球比较多的时候调大。这个比例啊,协微请求比较多的时候呢,调到斜缓存的一个比例,能够让它呢效率更高一点啊,那我们推不推荐改呢,这种最底层的东西啊,就肯定是不推荐改了啊,你总不可能比人家大神还懂吧,我们一般情况下读写呢,也是一个相对比较平衡的一个状态,所以呢,不推荐大家去改,如果你硬要改的话,切记一点,两个值加起来它不能超过80%。
08:23
为什么要留20%吗?这不理所当然的吗?你是不是要留20%给你的别的内核对象去使用啊,你要是设置两个人都是0.6啊,那你不是瞎设计嘛,对吧?相当于没有限制啊,如果没有限制的话,让它无序的在多缓存和小缓存里面存储数据啊,占用内存的话呢,很容易造成内存溢出对不对?哎,不建议去调啊,那最终呢,也会有一个大神叫拉斯霍夫汉斯啊,这个大神呢,他就推荐关于所有H的配置,他推荐呢,你把region设置为20G刷大小设置为128兆,其他的都使用默认是一个非常理想的一个状态。
09:00
他这个20G指的是谁呢?就指的是这个文件的最大值啊,文件的一个最大值,他默认是十个G啊,他觉得十个G呢不够大,因为你应该尽量避免region进去自动切分啊,你预分区已经拆分好了,对不对,他再去进行一个切分的话,一个是会影响你的分区的一个格局啊,另一个呢,会影响它的一个效率,它拆分还是需要一点点性能的,对不对,尽量不要让他执行这些操作,那大神呢,推荐你把这个呢稍微调大一点,20个G刷写大小是128兆,这是默认的那个值对吧?哎。还是它这个比较重要嘛,所以他强调一下,其他的都使用默认的,都是大神给你调好的,那是最理想的一个状态啊。好,这是我们h base的一个参数调优。
我来说两句