温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
本节课我们来讨论一下HDFS数据下载的过程。HDFS是hadoop的分布式文件系统,全称是hadoop distributed file system, 这里可以把HDFS看成是一个网盘,通过数据的上传和数据的下载,我们可以把海量的数据以文件形式存储在HDFS中。下面具体讨论一下HDFS数据下载的过程。HDFS是客户端服务器端架构name node是HDFS的主节点,负责接收客户端的请求,数据最终会以数据块的形式存储在data node上。这里为了方便说明,一共有三个data node客户端执行命令下载一个文件,如A点MP4,假设文件大小为200兆,由于该文件会被切分成数据块的形式,最终保存在data notde上,并且数据块的大小默认是128兆,因此该文件将对应2个数据块。在HDFS内部会由file system对象负责执。
01:00
听该命令,第一步,File system对象会创建d FS client对象。第二步,由DFS client对象与name node建立RPC连接,并请求name node检索文件的原信息。这里的RPC全称是remotede procedure Co, 中文是远程过程调用。第三步,Name notde负责检索文件的原信息。原信息中包含如下内容,如文件名大小、数据块个数以及数据块的存储位置。由于文件A点MP4有两个数据块,因此原信息中将包含这两个数据块的位置信息。第四步,Name node将生成的源信息返回给file system对象。第五步,由file system对象创建输入流input stream对象。第6步,Input stream对象根据第4步得到的原信息,从data node1上下载第一个数据块。如果在下载的过程中data node1出现问题,如宕机,Input stream对象将从第一个数据块的冗余节点上下。
02:00
数据,这里的冗余节点是data node2,此时便有了第7步操作,Input对象会循环执行第6步和第7步,直到把所有的数据块下载完成。从这个过程中可以看出,当name node返回文件的原信息后,整个下载的过程是客户端与data node直接进行操作,这个操作过程是不需要通过name node的。理解了这个过程后,对进一步查看HDFS源码是非常有帮助的,因为这个过程中涉及的对象都是源码中的类。现在你已经知道HDFS数据下载的过程了,那你知道HDFS数据上传的过程吗?欢迎评论区留言讨论好了,记得点加号关注赵玉强老师。
我来说两句