头图

  在Hadoop的HDFS中客户端的操作请求,无论是上传数据或者下载数据都是由NameNode负责接收和处理。最终将数据按照数据块的形式保存到数据节点DataNode上。下图说明了HDFS数据上传的过程。

在这里插入图片描述
  视频讲解如下:
https://www.bilibili.com/video/BV11r421c7M2/?aid=1405541294&c...

  假设需要上传200M大小的一个文件。按照数据块128M的大小为单位进行切块,该文件就会被切分成两个数据块。客户端发出上传命令后,由DistributedFileSystem对象创建一个DFSClient对象,该对象负责与NameNode建立RPC通信,并请求NameNode生成文件的元信息。当NameNode接收到请求后,会生成对应的元信息,如图中的第4步所示。元信息包含了以下的内容:数据块的个数、存储的位置,以及冗余的位置。例如:数据块1将保存到了DataNode1上,同时,对应的两份冗余存储在DataNode2和DataNode3上。NameNode会将生成的元信息返回给DistributedFileSystem对象,并由其创建输出流对象FSDataOutputStream。然后根据生成的元信息上传数据块。例如图中的第7步所示,客户端会将数据块1上传到了DataNode1上,并通过水平复制将其复制到其他的冗余节点上,最终保证数据块冗余度的要求。通过这样的方式,直到所有的数据块上传成功。

  了解到了HDFS数据上传的过程,下图说明了HDFS数据下载的过程。
在这里插入图片描述
  视频讲解如下:
https://www.bilibili.com/video/BV1tx4y1J7Mr/?aid=1005515639&c...


赵渝强老师
30 声望10 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...