00:01
好,咱们介绍完master架构之后呢,紧接着来介绍reading server的架构啊,我们一起来看一下对应的PPT。好,那首先呢region server啊,它也是我们h base服务端的一个主要进程,具体的实现类呢为h region server啊,这个具体的实现类呢,可以通过刚才介绍的方法,在同样的idea的加班依赖里面去找到对应的这么一个类啊,你可以去看一下它源码呢,具体是怎么样去对应的啊,我们这里呢,就不再做重复的事情了啊好,那这个h region server呢,通常会部署在data note上面啊,跟那个HDS完美对应上,因为啊H主要操作的也正是数据啊,它要频繁的进行数据的读写啊,那数据呢就存在data上面,相互对应效率会更高一点啊好,我们一起来看一下啊,这是我们region server的一个服务端啊,Region server呢,会启动多台组成一个集群啊,那对应的会有master来管理他们啊,分配对应的一个region,这个图里面呢,我们没有画这个backup master啊,因为在实际使用的时候啊,只有这个master会生效那backup master。
01:10
只有在master挂掉的时候才会上位,才会生效,对吧?好,那对应到我们这边HDFS文件系统会存储我们对应的一个table表啊,这个table表的存储结构呢,先由region进来进行横向的表格切分,切分完之后呢,再由列足切分为一个一个的到,对吧?好,那我们再分配由哪个region serve来管理region的时候呢,最小的单位就是这个切分出来的这个region了啊,不会按照store来分,不会说STORE1给你套二给你啊,不会这么分的,我们只会整个region都给他来进行管理,整个region给他来进行管理啊。好。这是我们对应的一个关系啊,那我们这个微三二的服务端呢,我们已经说了,它的主要功能呢,是跟啊数据的读写表格里面数据的读写相关啊,那数据读写呢,哎,一定要有这个客户端来对它进行一个直接操作啊,那么客户端呢,会对它执行一些post或者get的一些命令读写啊,啊那rar在接收到这些命令的时候呢,就会有对应的一个操作,具体的读写流程咱们等一下再详细介绍,这里先介绍它的一些组件,那region server里面有一个非常重要的一个组件呢,就叫预写日志啊,就叫预写志,他这个预写日志呢,是因为它走过来这个读写操作之后啊,它这region server并不会说你写一条数据,Region server呢,马上把这一条数据呢,写到这个文件里面,它不会啊,不会马上把这个数据写到文件里面,具体原因是什么呢?哎,是因为啊,他要保证有序。
02:39
啊,保证有序,你想一下,如果来PUT1条数据,你写出一条,来一条,你PUT1条,那你怎么样保证你po出来的,最终这个文件它是有序的呢?哎,显然就是乱序的了,对不对?我们这个有序指的是ROK100110021003,它是有序的啊,如果你直接往里面写,它就乱序了啊,你肯定不是按照OK顺序来的,所以呢,我们不会直接把这个文,呃数据呢写到这个文件里面先干嘛,先把这条破命令写到预写日志里面啊,来记录下来,如果到时候呢,这个因为没有写出,因为数据没有写出,会存在内存里面,如果到时候呢,如金server挂掉了,内存里面数据会消失,那对应的分配到管理另外一个,你看他如果他挂了,这个region就会交给别的活着的region server来进行管理,那管理的时候一样,他会先来检查前面这个人挂掉的时候有没有什么操作,还没有来得及写出啊,会去读这个预写日志啊,那这是预写日志的一个功能啊,好,再往下呢,他会有两块非常重要的内容,一个叫。
03:40
Block catch,这个叫读缓存,一个叫memory store,这个叫写缓存啊,听名字呢,我们就知道它主要是用来干嘛的,那读缓存呢,主要是跟这个get命令有关啊,什么叫读缓存?这一次我读数据,那读数据呢,无外乎这数据是存在文件里面的啊,那这一次呢,我从这个文件里面读到了相关的一个数据,那下一次呢,我不希望再到文件里面再去搜索一次了,读文件速度呢,一般都是比较慢的,对不对?读内存速度是比较快的,那我希望呢,我下一次再读的时候,直接从。
04:14
内存里面去读,哎,那我需要怎么做,这一次读就把这一次读的结果给缓存到内存里面,下一次再来读的时候直接从内存拿,不要再去读文件了啊,这就是这个读缓存的一个意义啊,读缓存优化读的一个效率啊,这就读缓存好,再下一个呢,叫写缓存,那缓存的顾名思义是写的时候使用的,哎,这就是我们说的当。Put命令执行的时候,Re server呢,不会把这个数据直接写出到文件里面,它会放到哪呢?放到写缓存里面啊,放到写缓存里面目的很明确,因为要排序啊,因为要按照ROK进行排序,你一直追加写它肯定无序,对不对,你要在内存里面去排序,那在哪个内存呢?就是这个写缓存在这里面排序啊,他一直把这个数据攒着,攒够一批了才会写出,那攒的这个过程当中就会不断对这个数据进行排序,排完序之后写出啊,这是写缓存的一个意义啊,写缓存的一个意义,好,对应这个图呢,我们把这个数量关系啊也给你画出来了。
05:17
每一个region server里面只会有一个读缓存啊,因为读缓存这个东西,它会把每一个多个文件可以共用一个读缓存啊,我会把这些数据呢,读到的都给它缓存到一个地方去,反正你读的时候呢,我在内存里面找它速度呢,总归是效率很高的,我只要不读文件就行,对吧,但是写不行啊,写不行,写的时候呢,每一个道。啊,每一个store都要有单独的一个写缓存啊,听清楚了,是每一个store啊,都要有单独的一个写缓存,它们的名字也能对得上,这写缓存呢,就叫memory store啊,名字也能对上,为什么这样呢?还是这个问题排序。你排序完之后是要保存到文件里面的,那对应的一个memory到保存的文件。
06:02
写出去一次,我们叫一写出去对吧,一写出去一次就生成一个文件。对吧,就生成一个文件,那自然而然的,它的文件都不在一个文件夹里面,不同store文件是不在一个文件夹里面的,对不对,那你自然不能够把它们存到同一块内存里面,你这样的话没有办法一起了啊,并且不同store里面的这个数据啊,也不需要你去排序。没有意义,因为它存在不同的文件里面嘛,对吧,我们只需要保证它在文件里面有序就可以了啊,你是不同的数据,那你彼此排序呢,也没有什么意义啊,所以我们每一个store都会有一个写缓存啊,都会有一个写缓存,我们同事呢,只画了这个region server管理这一个region,如果这一个管理两个region,两个region里面都有两个store的话,那对应它应该是四个memory store啊,依此类推啊,依此类推,它是一个store就有一个memory store企业缓存啊,依此类推,数量呢,可以一直往上加啊,一直往上加这个倒是无所谓的啊啊,当然呢,咱们后面会讲一些调用啊,你还是不能够无限加的,对不对,毕竟数据在内存里面啊,你要是搞到内存溢出了,那很危险啊,好,那这里呢,就介绍了我们region server的主主要的几个组件啊,那除了这些主要的组件之外呢,还会有一些线程来监控一些必要的服务,这里面呢,会涉及到region的拆分,Region的合并。
07:28
Store的刷写和预写日志的滚动啊,这几个服务呢,咱们在后面都会一一详细的介绍啊,先来给大家呢简单说明一下什么叫region的拆分。你这个数据啊,不断的往同一个region里面写,如果它呢,会判断这个region呢,是否数量过大啊,是否数量过大,如果过大的话,Region summer呢,会对它执行拆分,拆分成两个region啊,那同时呢,你执行一些命令,这region呢也也可能因为数据量不多,对吧?啊经过这个呃,垃圾数据清理之后呢,你需要把它给合并在一起啊,这也是可以的啊,人件也可以合并啊好,对应下面还有什么memory store刷写,这就是我们说的你在内存里面排序,你不能排一辈子吧啊,你排够一定量了,你是不是应该一写出去啊,写成一个文件对不对,那呢,就是memory的一个刷写,它有对应的时机啊,我们后面会详细介绍,先来介绍大致的功能,最后一个叫W预写日志的滚动啊,涉及到它了,你这个预写日志啊,不断的往这个HDX上追加写,那这个追加写你不能只写一个文件吧,啊,也需要进行一个滚动啊,这里预写日志的滚动呢,跟上面master预写日志的滚动啊,那基本上就是一样的啊,基本上一样的啊没什么。
08:40
太大的一个区别啊,预写日志里面数据终归是比较少的啊,那这个整个下来呢,就是我们region server的架构了啊,它里面的内容呢,也就是这么些了啊。
我来说两句