00:00
好,接下来呢,我们讲一下第五章name node呢和secondary name node那首先呢,给大家画张图看一下。那把这个拿过来三台服务器,那我们的内部note放在哪里面呢?是不是放在102上对吧?哎,放在这里面。好,换个颜色啊。换一个绿色。OK,那大家思考一个问题哈,我这个name node里面的原数据是存储在内存当中还是存储在磁盘当中,是内存还是磁盘?思考一下。如果说我数据存储在内存当中会有什么好处,那肯定计算速度快对吧?好处计算快好,那坏处呢?大家有没有想过啊,它什么坏处啊,那如果说内存,我这台服务器一旦挂掉,那是不是所有数据全丢了,所以说可靠性要差。
01:06
那好,那有同学说,那我们就不存在这个内存里面了,我把数据啊存储在磁盘上,那存储在磁盘上好处什么呢。好处呢,是可靠性高对吧,坏处坏处是那计算速度慢呢,计算慢对吧,计算慢,那同学你想啊,他俩正好是相反的啊,性能相反。那我能不能我既用内存又用磁盘呢?说那这样我就用他俩的优点,内存一份,磁盘一份,两份数据,用来存储内部动里面数据,这不就解决了它相应的这个可靠性和计算速度的问题吗?那你再思考问题,如果是这样设计的话,你需要在内存里面计算完,然后再持久化到磁盘,对吧?哎,这两份你都要计算,那是不是效率还是低,有没有思考啊,效率仍然是低的,因为你这个磁盘拖慢了速度,计算速度。
02:11
对吧,虽然说可靠性有一定保证,但是速度呢还是比较低。那怎么办呢?哎,那我们可以采用这样哈,这样一种方式,我们存储在磁盘里啊,哎,我们一般呢,是用什么来存储数据呢,叫fslate啊FS。用它来存储数据,那现在呢,如果你往磁盘上写的话。往这里面写,随机去读写,那效率肯定低,如果是随机读写效率的,啥叫随机读写呀?比如说FS Emma里面我有一个数据,A等于十。对吧,然后呢,我对这个十进行操作,哎,客户端的访问说我需要啊A加十啊A加十,那是不是就A等于20了啊推出来A等于20,那我要更新这个FS1MA的话,那是不是就更新原来他历史的数据了,比如说对历史数据进行一个修改。
03:20
那还记得as的特性吗?它对历史数据的一个修改,效率非常低。但是它有一样是可以支持的,什么支持可以追加进行读写。就追加写追加追加,哎,我在它文件末尾一直不断的追加。我不改你历史的数据,我就A判end止记录啊,那这里面有一个文件呢,叫I啊I。啊,I这个文件它不进行计算,它只用来追加内容,比如说哎,我说A对吧,啊,最原始你是十,你是A等于十对吧,我只记住A加十,我不修改你A的值。
04:12
我就把你这个过程记录下来,比如说你,哎有你后面又又操作了,说我又这个A又进行了减30,我只记录过程。他这样记。啊,后面挺大啊。我缩小一下。好,那它是这样,哎,我只记住你A减30,然后再来,我说A呀,乘以一个。20。只记录你这个过程,我不给你计算结果,那这样效率不就高了吗?啊,那现在呢,结果就是内存当中一份数据,然后镜像文件里面存储的是结果的值。是吧,那就值,然后ID plus里面记录了当前这里面变化的步骤啊,那捋一下这个逻辑啊,比如说首先呢,我们是内存当中有一份数据。
05:06
OK,然后呢,我们镜像文件里面也存储的数据,存储着什么数据啊。是整合之后的。比如说假如说这里面没有数据也行,嗯,然后这件。这么两份。看好了啊,这两份数据它正常是这样的一个操作啊,你镜像文件里面有的数据,我加上I plus,也就说你相关的操作等于谁呢?等于你内存当中的数据。那什么时候将镜像文件和ID plus的数据加载到内存呢?就是服务器一启动的时候,我就会将它和它加载到这儿。哎,服务器一关机的时候,我就会将ID plus跟这个镜像文件进行一个合并。他就按照这个记账本对吧,你记下文件里面原来A等于十,好,那我先读这一行,说A加十。
06:05
啊,那十那之后变成了20,然后他又执行说A减30,那A减30的话就是变成了负十。对吧,然后又执行乘以这个20,那乘以20就是负200。啊,也就是说关机的时候将它两个进行一个合并,那大家在思考问题,那如果说我在这个内存启动之后,我进行了非常多的这个步骤。那每次你一关机的时候,你是不是要合并很长时间才能把这事情。结束啊。啊,合并很长时间,那这个效率啊就比较低。那我能不能说,哎,你这边。做了一些操作之后,那我就合并一些,你做了一些,我合并一些。那这时候谁能帮助他进行将这两个内容进行一个合并呢?那就是ton n就闪亮登场了,哎,他帮这两个文件定期的进行一个合并,那好,那这两个文件有没有呢?大家看一下这个集群啊。
07:05
集群呢,在这个102上pd hi open,这里面是不是有一个date呀,CD date d FS,好进来,进来之后呢,进入到这个name,然后current。进你看在这个name no的这个目录下,就有对应的ID文件,还有对应的镜像文件啊,那这里面还有什么这个edit in progress啊,那一会儿呢,给大家介绍详细介绍这里面都存储的什么信息。OK,那这是name no的路径,PWD,那还有小me呢是吧?Ton ton里面也有一个OPT model啊,Hiop date进来,DFS进,哎,Name secondary进来,进来之后current是吧?你看这里面也有这些信息,我给你截个图。
08:11
看一下这两个的区别。哎,是不是这个是到五五,这也是到五五,哎这呢是535353555,唯一差的一个就是in progress。对吧,哎,就差一个这个内容。啊,那行,那下面呢,啊,有了这个初步的印象之后,给大家再说一下对应的这个name node和ton的一个工作原理。双击。好,那首先呢是name node,然后呢一个是edit plus,还有一个是镜像文件,那这两个内容呢,都会一上电的时候加载到内存当中。好。那这个加载到内存之后啊,客户端呢,就对你这个内进行一个访问,诶比如说我这里面要进行一个增删相关的一个操作。
09:07
对它进行修改,那修改的话。他会怎么做呢?首先他会在这个edit plus里面先记录你的流程,比如说你要干什么事,我先记账,然后再更改内存,那就说要不然我我能不能先更改内存再记账呢?那假如说你先更改了内存,突然间就巧了,它断电了。那断电了,这个数据就丢了,那这个edit plus里面有记录这条数据吗?没有,那整个这条数据就丢了啊,所以说非常严谨的办法呢,就是先记账。然后再加入内存,那就说你那有同学说了,说你记完账之后他挂了。有影响吗?没影响,因为这个数据已经记录到这里面,同时它未来是不是跟它进行合并,就是当前最新的内存当中数据啊。啊,所以说这条数据呢,就不会丢OK。那这还少,那下面才更新内存当中的一个操作。
10:05
对吧,哎,这是name no的一个正常工作,那这个小蜜对不对,他是怎么工作的呢?哎,他没事呢,就问这个name no的对吧,小秘嘛,说老板需不需要服务。哎,是否需要checkpoint,就是是否需要服务,那他多少多长时间会问一次这个老大呢。哎,它有两种条件啊,两种条件第一个呢是定时时间到。那定时默认的时间呢,就是一个小时,哎,一个小时问一次,老板说需不需要服务啊,这个还是很耗身体的是吧,哎,定时一小时问,那么还有一条呢,就是edit plus里面数据满了,比如说这里面满了特别多,那一般呢,到了100万条的时候,那就赶紧把它进行合并,否则的话你再合并啊,就慢了,比如说你这里面都。嗯,这个几十个亿对吧,几十一条数据再合并的时候,那合并的效率就低了。那假如说哎正常说请求执行踹拍的,哎这个老板答应了说哎可以服务了。
11:03
那可以服务的时候,它就会将当前这个editid plus记录,这个账本叫滚动啊,滚动怎么滚的呢?它是这样滚的啊,首先它会生成一个新的I progress啊002,你原来是001,那我002。这个期间,那如果你生成它之后,这个期间外部来正好来访问了,那它的操作会往哪里进呢?往这个002里面进。啊,这是这个事,好,它生成这个002之后,然后将原来这个001修改名称为I001。比如说当前这一时刻,他所有的账本变成了他。那再来的后续进入到这里面去。啊,这样一个流程,那行那再走,那这个时候呢,小蜜就会将镜像文件和edit plus都拉取过来。拷贝,拷贝到这边之后,它会把镜像文件和ID plus加载到内存。
12:04
哎,加到这加载到内存之后,它会按照对应的这个账本进行一个一个执行操作,最终会形成一个新的FS image。对吧,哎,然后这个后缀名叫蔡。然后把这个内容再拷贝回对应的name note,诶,拷回来。给你。给完它之后,再把原来的这个历史的FS SE ma修改名称啊覆盖啊,把它修改名称之后覆盖历史的FSSE啊已覆盖,那如果它覆盖完之后,它这里面保存的内容和它加在一起,是不是就是当前最新的原数据?对吧,那我下次再启动的时候,我就可以将它和它在加载到内存当中啊,维持当前一个正常稳定运行。对吧,那这里面能看出来这个ton和name node唯一的区别就在这。
13:01
比如说name not里面,这里面记录了最新的一个操作啊,它这里面呢是没有的啊,都是历史的一些数据啊,啊这是name note和呃托恩的一个爱恨情仇故事啊,非常简单啊。那下面呢,这里面有文字的一个介绍啊,我就不做过多说明了哈,那下节课呢,我们给大家介绍一下这个FS image和嗯,里面具体记录了哪些内容哈。
我来说两句