基于Hadoop的云盘系统客户端技术难点之一 上传和下载效率优化
作者:张子良 声明:版权所有,转载请注明出处 一、概述 基于任何平台实现的云盘系统,面临的首要的技术问题就是客户端上传和下载效率优化问题。基于Hadoop实现的云盘系统,受到Hadoop文件读写机制的影响,采用Hadoop提供的API进行HDFS文件系统访问,文件读取时默认是顺序、逐block读取;写入时是顺序写入。 二、读写机制 首先来看文件读取机制:尽管DataNode实现了文件存储空间的水平扩展和多副本机制,但是针对单个具体文件的读取,Hadoop默认的API接口并没有提供多DataNode的并行读取机制。基于Hadoop提供的API接口实现的云盘客户端也自然面临同样的问题。Hadoop的文件读取流程如下图所示: 使用HDFS提供的客户端开发库,向远程的Namenode发起RPC请求; Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的datanode地址; 客户端开发库会选取离客户端最接近的datanode来读取block; 读取完当前block的数据后,关闭与当前的datanode连接,并为读取下一个...