一种HDFS多线程并行下载方法技术

技术编号:11182974 阅读:133 留言:0更新日期:2015-03-25 12:08
本发明专利技术提供一种HDFS多线程并行下载方法,属于大数据领域,存放到HDFS上文件,采用分块方式存放到整个集群中;当从HDFS上下载文件时,首先获取该文件所有block分块下载地址,针对每个block,启动一个线程来下载,这样可同时启动N个线程同时下载N个数据块,直到所有数据块下载完毕;为了保证下载的文件的一致性,将block[i]数据块写入到客户端文件的67108864*(i-1)~67108864*i(i>1)位置。最大限度的发挥集群的性能,提高下载效率。

【技术实现步骤摘要】

本专利技术涉及大数据下载技术,尤其涉及一种HDFS多线程并行下载方法,用于提高整个集群的吞吐量,进而提高下载效率。 
技术介绍
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。HDFS文件系统上的文件,是以固定大小(默认64M)的数据块顺序的存放到HDFS中,从HDFS中下载文件,会从HDFS文件系统中顺序下载所有的文件块,直到整个文件下载完毕,这样极大影响下载效率,不能充分发挥整个集群的效能。 
技术实现思路
为解决HDFS文件快速下载问题,本文提出了一种HDFS多线程下载方法。一种HDFS多线程并行下载方法,从HDFS下载文件到本地时,针对文件在HDFS上每个block分块,启动一个线程,并行下载,写到本地同一个文件中,一种HDFS多线程并行下载方法设计结构包括:(1)获取文件在HDFS上所有分块下载地址;(2)启动N(可设置)个线程,并行下载N个数据块,写到客户端同一个文件中;当一个线程执行完毕后,再启动一个线程下载下一个数据块,保证客户端同时运行的线程数为N。获取要下载的文件所有数据块下载地址;针对所有的数据块,同时启动N(客户端并行下载性能达到最高时的线程数,可设置)个线程并行下载,写到客户端同一个文件中;在HDFS文件系统中,每一个block的大小默认为67108864(64M)个字节,所以,将block[i]数据块写入到文件的位置67108864*(i-1)~67108864*i(i>1)(通过java的随机访问对象可以将数据流写入到文件的任意指定位置),保证了文件的一致性;一个线程执行完毕,再启动下一个线程下载下一个block块,直到所有block下载完毕。本专利技术的结构设计主要考虑是,存放到HDFS上文件,采用分块方式存放到整个集群中;当从HDFS上下载文件时,首先获取该文件所有block分块下载地址,针对每个block,启动一个线程来下载,这样可同时启动N个线程同时下载N个数据块,直到所有数据块下载完毕;为了保证下载的文件的一致性,将block[i]数据块写入到客户端文件的67108864*(i-1)~67108864*i(i>1)位置。从HDFS下载文件到客户端时,同时启动多个线程并行下载文件的block块,写到客户端同一个文件中,从而提高整个集群的吞吐量,进而提高下载效率。本专利技术的有益效果是:将一个HDFS文件多线程并行下载到客户端,最大限度的发挥集群的性能,提高下载效率。附图说明图1为HDFS多线程并行下载框架图。具体实施方式下面对本专利技术的内容进行更加详细的阐述:一种HDFS多线程并行下载方法,从HDFS下载文件到本地时,针对文件在HDFS上每个block分块,启动一个线程,并行下载,写到本地同一个文件中,一种HDFS多线程并行下载方法设计结构包括:(1)获取文件在HDFS上所有分块下载地址;(2)启动N(可设置)个线程,并行下载N个数据块,写到客户端同一个文件中;当一个线程执行完毕后,再启动一个线程下载下一个数据块,保证客户端同时运行的线程数为N;获取要下载的文件所有数据块下载地址;针对所有的数据块,同时启动N(客户端并行下载性能达到最高时的线程数,可设置)个线程并行下载,写到客户端同一个文件中;在HDFS文件系统中,每一个block的大小默认为67108864(64M)个字节,所以,将block[i]数据块写入到文件的位置67108864*(i-1)~67108864*i(i>1)(通过java的随机访问对象可以将数据流写入到文件的任意指定位置),保证了文件的一致性;一个线程执行完毕,再启动下一个线程下载下一个block块,直到所有block下载完毕。下面根据附图,通过实施例进行阐述:如图1所示,整个流程为:(1)客户端通过namenode节点获取要下载文件所有block分块下载地址;(2)针对每一个block,启动一个线程来读取数据,同时启动N个线程同时下载N个数据块,直到所有数据块下载完毕;为了保证下载的文件的一致性,将block[i]数据块写入到客户端文件的67108864*(i-1)~67108864*i(i>1)位置。本文档来自技高网...

【技术保护点】
一种HDFS多线程并行下载方法,其特征在于,从HDFS下载文件到本地时,针对文件在HDFS上每个block分块,启动一个线程,并行下载,写到本地同一个文件中。

【技术特征摘要】
1.一种HDFS多线程并行下载方法,其特征在于,从HDFS下载文件到本地时,针对文件在HDFS上每个block分块,启动一个线程,并行下载,写到本地同一个文件中。
2.根据权利要求1所述的方法,其特征在于,该方法包括:(1)获取文件在HDFS上所有分块下载地址;(2)启动N个线程,并行下载N个数据块,写到客户端同一个文件中;当一个线程执行完毕后,再启动一个线程下载下一个数据块,保证客户端同时运行的线程数为N。
3.根据权利要求2所述的方...

【专利技术属性】
技术研发人员:房体盈辛国茂
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1