00:00
好,接下来呢,我们来看一下HTFS读数据的一个流程。那这是一道经典的面试题,问的概率呢非常高,所以说大家呢要认真听,那首先我们来看一下哈。这里面首先登场的一个决策就是HDFS集群,那这里面有内note,有对应的date note,好,内部no呢,负责存储对应的原数据,对吧?这里面有谁?然后呢,块信息在哪?好datat note里面存储的是对应的实实在在的数据块。那我这里面存储的胜负点avi它呢,分成两块对吧,那两块1112对吧,二二。那左侧呢是客户端,他要向这个内诺进行请求,我要读取数据,那大家思考一下,我为什么不直接请求data note。哎,这个name note是这个ADFS的话事人对吧,他是老大,你得问他,哎问他我能不能读,那好,那你要想问他的话,你是不是得创建一个对象啊,啊类似一个谈判代表,是不是得跟他进行一个交涉呀,好,那这个呢,就是分布式文件系统对象由他来进行访问,说哥们儿,我想下载送送点avi。
01:12
那name note会怎么办呢?那么多的书得判断一下,哎,哥们你是谁呀,你有没有这个权限来下载这个送送点VI呀。对吧,这是第一个判断的,好,那再下来他判断一下我这个集群上它有没有送负点变呀。他一查,哦,确实有,那行,而且还有权限,那怎么办?他就把他对应的原数据信息反馈给他。对吧?哎,他把这里面块信息有哪些给过来,那给过来之后,那客户端是不是就得来读数据啊。哎,那读数据由谁来读啊,它是不是得创建一个流啊?哎,那这里面就创建一个FS data input stream这个流来对应的读数据。好,那这里面它获取到的是整个集群的是不是原数据啊,比如说这个路径上的原数据,它会告诉我这有几个块,这有几个块,这有几块,那我他给了这都是BLOCK1,我从哪一个BLOCK1读呢。
02:04
对不对,这三个副本都一样啊,从哪个读哎,记住选择节点距离最近的。他离我最近,那我就从这儿读呗,那我读的效率是不是就更高啊?那大家再思考问题,那如果说大家都从这个DATA1去读,对吧,我这几点这客户端就跟这个DATA1访问比较频繁,都从这读的话,那是不是导致它的这个负载特别大。那是不是也不太合适啊?哎,那它还有一个原则,就是除了这个节点距离最近之外,还会考虑你当前这个节点的负载能力。比如说已经有一个开启了,然后又开启一个,那准备你再读的时候,再开启一个线程的时候,他觉得你这个已经负载达到量级之后怎么办?他把你这个任务就达到另一块了,比如说你这里面除了他有BLOCK1之外,是不是这还有一个BLOCK1,你BLOCK2的时候,我就可以从这开启。那从这开始都可以。两个因素,一个节点距离最近,一个是负载均衡的一个思考啊,那下面呢,第二块,第二块的时候,你看假如说我这个电磁诺一已经负载能力已经达到极限了,那我就从第二块这开始读呗,从这读呗。
03:09
一样的,因为这个副本不都一样吗。好行,那都读过来之后,第一块数据是不是就放在这了,第二块数据从这拿过来,是不是就放在这了。那大家思考一下,我这是并发毒呢,还是串行毒?比如说我咱俩同时工作,他他读他的,他读他的,然后到这一拼接,还是说我这个第一块读完,然后读第二块。哪种形式呢?记住哎,它是串行读哈,它先读第一块放在这儿,然后接下来读第二块,然后进行一个追加,是这样一个形式啊,所以说它并不是说大家想象的咔咔咔咔啊,开多个这个啊客户端并分去读,提高它相应的效率啊,不是这样的串行。OK,这就是ADS的一个读数据,那我们稍微回顾一下啊,怎么来的,首先呢,右侧呢,这是对应的ADS对吧?哎,这个name node和d node对应的主件,那左侧呢,是对应的客户端,客户端要想跟他访问,那它就得创建一个客户端对象啊,那就是distri fair system分布式文件系统,他呢要跟这个老大进行访问,说我有,我想下载送送点VI,那他怎么办呢?哎,先判断一下有没有权限,同时判断一下我这个机器上是否有对应的这个文件。
04:23
然后回复给它对应的原数据,他拿到原数据之后,他首先要想读数据,就得创建一个流对象,由他来进行读,那他选择的节点的原则就是首先节点均值最近,但是他要判断对应的你这个数据,这个这个节点数据量是否很大啊,达到了这个呃,一定的量级。嗯,这个访问的太多,那怎么办?他就可以访问其他节点。哎,分配给其他节点,然后读,那读的时候呢,也是先读第一块放在这,然后接下来再读第二块。这样一个顺序,这就是as读数的流程啊,最后呢,把这个资源关闭掉就OK了。
我来说两句