CN104408147A - 一种多线程数据上传方法 - Google Patents
一种多线程数据上传方法 Download PDFInfo
- Publication number
- CN104408147A CN104408147A CN201410722793.8A CN201410722793A CN104408147A CN 104408147 A CN104408147 A CN 104408147A CN 201410722793 A CN201410722793 A CN 201410722793A CN 104408147 A CN104408147 A CN 104408147A
- Authority
- CN
- China
- Prior art keywords
- data
- play amount
- file
- upload
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提出一种多线程数据上传方法,所述方法配置需要上传的文件所在源路径信息、文件需要上传到HDFS***的目的路径信息以及可以使用的线程数目信息;根据所述需要上传的文件的数据量和配置的所述线程数目信息确定每个线程需要处理的数据范围;基于配置的所述信息和确定的所述数据范围执行多线程并行数据上传。所述方法将一个大的文本文件分为多个文件并行上传到HDFS***中,从而提高写入速度,大大降低了文件上传的时间。
Description
技术领域
本发明涉及信息存储技术领域,具体涉及一种多线程数据上传方法。
背景技术
随着人类社会全面进入信息时代,数据成为与水、石油同等重要的战略资源。通过挖掘海量数据,能够使政府和企业的运行决策建立在更加科学的依据基础上,提高决策效率、危机应对能力和公共服务水平。大数据(bigdata),或称巨量资料,指的是所涉及的资料量规模巨大到无法通过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策的资讯。
Hadoop Distributed File System(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件***。HDFS是一个高度容错性的***,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。运行在HDFS之上的程序有很大量的数据集。典型的HDFS文件大小是TB级别,所以,HDFS被调整成支持大文件,应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。
HDFS上的文件来源有很多途径,文件服务器(比如NFS)中的已有文件是一种非常重要的来源。例如,银行业务***中从数据库中卸载的数据表,每天会生成一个增量文件到文件服务器,要对这些文件进行挖掘分析,首先要把其上传到HDFS中。有些分析可能需要的文件很大。传统的方法使用单机上传文件,一方面文件服务器的带宽没有充分利用,另一方面HDFS各数据节点没有被充分利用,所以这种方法用于上传海量数据往往耗时过久而无法现实应用。因此,需要提出一种新的方案,充分利用文件服务器的带宽,提高文件上传效率。
发明内容
本技发明提供了一种多线程数据上传方法,充分考虑HDFS的特性,充分利用资源(带宽、磁盘IO等),极大提高了海量数据上传的效率并保证文件行原子性。所述方法包括:
S1:配置需要上传的文件所在源路径信息、文件需要上传到HDFS***的目的路径信息以及可以使用的线程数目信息;
S2:根据所述需要上传的文件的数据量和配置的所述线程数目信息确定每个线程需要处理的数据范围;
S3:基于步骤S1配置的所述信息和步骤S2确定的所述数据范围执行多线程并行数据上传。
特别地:
所述步骤S2中所述的数据范围包括每个线程需要上传的文件数据的开始位置偏移量和结束位置偏移量。
特别地:
所述多线程并行数据上传具体包括如下步骤:
S31:所述线程首先判断数据上传开始位置偏移量是否为0,如果是,则执行步骤S32,否则执行步骤S33;
S32:所述线程将所述开始位置偏移量处到所述结束位置偏移量处的数据上传到HDFS***,并执行步骤S34;
S33:所述线程从所述开始位置偏移量处向后依次读取每一字节数据,直至读取到的数据为换行符,将所述换行符后到所述结束位置偏移量处的数据上传到HDFS***;
S34:从所述结束位置偏移量处向后依次读取每一字节数据并上传,直至所读取到的数据为换行符,流程结束。
本发明的有益效果是:将一个大的文本文件分为多个文件并行上传到HDFS***中,从而提高写入速度,大大降低了文件上传的时间。
附图说明
附图1为本发明提出的多线程数据上传方法流程图。
附图2为本发明提出的基于多线程的保障HDFS文件行原子性的数据上传方法的流程图。
具体实施方式
下面将结合附图详细描述本发明提出的多线程数据上传方法,所述方法能够保障HDFS文件行原子性。
本发明主要考虑可以在保障数据行原子性的基础上并行的上传数据,充分利用网络I/O和***资源。每个线程上传的数据量默认为:文件大小/线程总数。每个线程上传文件开始前,先判断读取的开始偏移量第一个字符是否是换行符,如果是不是换行符,则按字节向后读取,直至读取到换行符,然后从换行符后开始上传文件内容,如果开始偏移量为0,则不需要判断是否是换行符,读取数据并开始上传。当线程上传文件的内容达到分配的内容时,需要继续判断结束偏移量后的下一个字符是否是换行符,如不是换行符,则需要继续上传,直至最后一个字符是换行符。这就实现了每个线程在上传文件内容的时候,开始时向后移动,结束时也向后移动,从而保证了文件行原子性。
参见附图1,本发明提出的多线程数据上传方法,所述方法包括:
S1:配置需要上传的文件所在源路径信息、文件需要上传到HDFS***的目的路径信息以及可以使用的线程数目信息;
S2:根据所述需要上传的文件的数据量和配置的所述线程数目信息确定每个线程需要处理的数据范围;
S3:基于步骤S1配置的信息和步骤S2确定的所述数据范围执行多线程并行数据上传。
其中所述的数据范围包括每个线程需要上传数据的开始位置偏移量和结束位置偏移量。
参见附图2,其示出了为了保障上传文件的行原子性,每个线程所执行的数据上传步骤流程,其中包括:
S31:线程首先判断其数据上传开始位置偏移量是否为0,如果是,则执行步骤S32,否则执行步骤S33;
本步骤中,如果数据上传开始位置偏移量为0,则表明该线程上传数据的开始位置为整个文件的开始处。
S32:所述线程将上传开始位置偏移量处到上传结束位置偏移量处的数据上传到HDFS***,并执行步骤S34;
S33:所述线程从开始位置偏移量处向后依次读取每一字节数据,直至读取到的数据为换行符,将所述换行符后到结束位置偏移量处的数据上传到HDFS***;
此步骤中,线程从开始位置偏移量处向后依次读取一个字节的数据,每读取一次就判断该字节数据是否为换行符,如果不是则顺序读取下一个字节的数据再执行判断,直至读取到的一个字节的数据为换行符为止。
S34:从结束位置偏移量处向后依次读取每一字节数据并上传,直至所读取到的数据为换行符,流程结束。
此步骤中,线程从结束位置偏移量处向后依次读取一个字节的数据,每读取一次就判断该字节数据是否为换行符,如果不是则上传该数据,并顺序读取下一个字节的数据再执行判断和上传步骤,直至读取到的一个字节的数据为换行符为止。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (3)
1.一种多线程数据上传方法,其特征在于,包括:
S1:配置需要上传的文件所在源路径信息、文件需要上传到HDFS***的目的路径信息以及可以使用的线程数目信息;
S2:根据所述需要上传的文件的数据量和配置的所述线程数目信息确定每个线程需要处理的数据范围;
S3:基于步骤S1配置的所述信息和步骤S2确定的所述数据范围执行多线程并行数据上传。
2.如权利要求1所述的方法,其特征在于:
所述步骤S2中所述的数据范围包括每个线程需要上传的文件数据的开始位置偏移量和结束位置偏移量。
3.如权利要求2所述的方法,其特征在于:
所述多线程并行数据上传具体包括如下步骤:
S31:所述线程首先判断数据上传开始位置偏移量是否为0,如果是,则执行步骤S32,否则执行步骤S33;
S32:所述线程将所述开始位置偏移量处到所述结束位置偏移量处的数据上传到HDFS***,并执行步骤S34;
S33:所述线程从所述开始位置偏移量处向后依次读取每一字节数据,直至读取到的数据为换行符,将所述换行符后到所述结束位置偏移量处的数据上传到HDFS***;
S34:从所述结束位置偏移量处向后依次读取每一字节数据并上传,直至所读取到的数据为换行符,流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410722793.8A CN104408147A (zh) | 2014-12-02 | 2014-12-02 | 一种多线程数据上传方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410722793.8A CN104408147A (zh) | 2014-12-02 | 2014-12-02 | 一种多线程数据上传方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104408147A true CN104408147A (zh) | 2015-03-11 |
Family
ID=52645778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410722793.8A Pending CN104408147A (zh) | 2014-12-02 | 2014-12-02 | 一种多线程数据上传方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408147A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049524A (zh) * | 2015-08-13 | 2015-11-11 | 浙江鹏信信息科技股份有限公司 | 一种基于hdfs的大规模数据集装载的方法 |
CN109325002A (zh) * | 2018-09-03 | 2019-02-12 | 北京京东金融科技控股有限公司 | 文本文件处理方法、装置、***、电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831211A (zh) * | 2012-08-14 | 2012-12-19 | 中山大学 | 一种基于表关联分析的数据表迁移的方法 |
CN103106068A (zh) * | 2013-02-28 | 2013-05-15 | 江苏物联网研究发展中心 | 物联网大数据快速校验方法 |
-
2014
- 2014-12-02 CN CN201410722793.8A patent/CN104408147A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831211A (zh) * | 2012-08-14 | 2012-12-19 | 中山大学 | 一种基于表关联分析的数据表迁移的方法 |
CN103106068A (zh) * | 2013-02-28 | 2013-05-15 | 江苏物联网研究发展中心 | 物联网大数据快速校验方法 |
Non-Patent Citations (1)
Title |
---|
马登邑: ""基于Hadoop存储的文件管理***的研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049524A (zh) * | 2015-08-13 | 2015-11-11 | 浙江鹏信信息科技股份有限公司 | 一种基于hdfs的大规模数据集装载的方法 |
CN105049524B (zh) * | 2015-08-13 | 2019-02-05 | 浙江鹏信信息科技股份有限公司 | 一种基于hdfs的大规模数据集装载的方法 |
CN109325002A (zh) * | 2018-09-03 | 2019-02-12 | 北京京东金融科技控股有限公司 | 文本文件处理方法、装置、***、电子设备、存储介质 |
CN109325002B (zh) * | 2018-09-03 | 2021-03-05 | 北京京东金融科技控股有限公司 | 文本文件处理方法、装置、***、电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136243B (zh) | 基于云存储的文件***去重方法及装置 | |
CN105205154B (zh) | 数据迁移方法以及装置 | |
CN106611035A (zh) | 一种云存储中重复数据删除的检索算法 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN104361065A (zh) | 基于Zookeeper的分布式***的有序序列号生成方法 | |
CN105446893A (zh) | 数据存储方法及设备 | |
CN105260464B (zh) | 数据存储结构的转换方法及装置 | |
KR20190075962A (ko) | 데이터 처리 방법과 데이터 처리 장치 | |
CN104462389A (zh) | 基于分级存储的分布式文件***实现方法 | |
CN106844682A (zh) | 数据交换方法、装置及*** | |
CN104699723A (zh) | 数据交换适配器、异构***之间数据同步***和方法 | |
CN102456076A (zh) | 海量片段数据汇聚的***和方法 | |
CN104123237A (zh) | 海量小文件分级存储方法及*** | |
CN104572679A (zh) | 舆情数据存储方法和装置 | |
CN104965835B (zh) | 一种分布式文件***的文件读写方法及装置 | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的***及方法 | |
CN104408047A (zh) | 一种基于nfs文件服务器的文本文件多机并行上传到hdfs方法 | |
CN105049524B (zh) | 一种基于hdfs的大规模数据集装载的方法 | |
CN103473258A (zh) | 云存储文件*** | |
CN104391961A (zh) | 千万级小文件数据的一种读写解决策略 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN103793468A (zh) | 数据存储方法和装置以及数据读取方法和装置 | |
US9952771B1 (en) | Method and system for choosing an optimal compression algorithm | |
CN104408147A (zh) | 一种多线程数据上传方法 | |
CN105045891B (zh) | 提高顺序表性能方法、***、架构、优化方法及存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150311 |
|
RJ01 | Rejection of invention patent application after publication |