CN103617033A - 基于MapReduce的数据处理方法、客户端和*** - Google Patents
基于MapReduce的数据处理方法、客户端和*** Download PDFInfo
- Publication number
- CN103617033A CN103617033A CN201310598175.2A CN201310598175A CN103617033A CN 103617033 A CN103617033 A CN 103617033A CN 201310598175 A CN201310598175 A CN 201310598175A CN 103617033 A CN103617033 A CN 103617033A
- Authority
- CN
- China
- Prior art keywords
- file
- mapreduce
- files
- data
- map
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于MapReduce的数据处理方法,包括:客户端查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,所述多个文件夹中存储着需要处理的数据文件;遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序中,直至读取完所有的数据文件,由Map程序依次对所述数据文件进行map计算。此外,还公开了客户端和***。不需要和现有技术那样必须要先将数据预处理到同一个文件夹下,由此,计算效率较高。
Description
技术领域
本发明属于一种基于MapReduce的数据处理方法、客户端和***。
背景技术
目前主流的大数据处理框架基本都是基于Apache的开源项目Hadoop进行开发,但是由于Hadoop本身所使用的MapReduce框架是基于HDFS定义的文件***,所以在读取文件的时候对于输入路径有着一定的要求。并且由于MapReduce的处理流程属于顺序处理的流程,无法持续进行迭代的性质也给大数据的处理造成了一定的麻烦。
目前MapReduce架构在读取输入文件夹的时候不支持多个文件夹内容读取,意味着所有的输入文件都必须要在同一个文件夹下。这样对于大部分应用来讲,若需要通过MapReduce来操作数据必须要先将数据预处理到同一个文件夹下,当遇到输入数据量级非常大的时候,预处理的时间则会超过数据正常处理计算的时间,进而导致程序处理效率低。
比如,Mapper类从input split中读取一个个的record,然后依次调用Mapper的map函数,将结果输出。map的输出并不是直接写入硬盘,而是将其写入缓存memory buffer。当buffer中数据的到达一定的大小,一个背景线程将数据开始写入硬盘。在写入硬盘之前,内存中的数据通过partitioner分成多个partition。在同一个partition中,背景线程会将数据按照key在内存中排序。每次从内存向硬盘flush数据,都生成一个新的spill文件。当此task结束之前,所有的spill文件被合并为一个整的被partition的而且排好序的文件。reducer可以通过http协议请求map的输出文件,tracker.http.threads可以设置http服务线程数。
当map task结束后,其通知TaskTracker,TaskTracker通知JobTracker。
对于一个job,JobTracker知道TaskTracer和map输出的对应关系。reducer中一个线程周期性的向JobTracker请求map输出的位置,直到其取得了所有的map输出。reduce task需要其对应的partition的所有的map输出.reduce task中的copy过程即当每个map task结束的时候就开始拷贝输出,因为不同的map task完成时间不同。reduce task中有多个copy线程,可以并行拷贝map输出。当很多map输出拷贝到reduce task后,一个背景线程将其合并为一个大的排好序的文件。当所有的map输出都拷贝到reduce task后,进入sort过程,将所有的map输出合并为大的排好序的文件。最后进入reduce过程,调用reducer的reduce函数,处理排好序的输出的每个key,最后的结果写入HDFS。
由此可见,整个MapReduce的过程是非迭代性质的,属于直线型one-in-one-out的模式,这在处理某些应用场景下,则明显不适用。
发明内容
本发明所要解决的技术问题是提供一种基于MapReduce的数据处理方法,用以在不对多个文件夹进行预处理的情况下直接进行MapReduce计算,从而降低由于预处理给程序处理上带来的压力。
本发明解决上述技术问题所采取的技术方案如下:
一种基于MapReduce的数据处理方法,包括:
客户端查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,所述多个文件夹中存储着需要处理的数据文件;
遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序中,直至读取完所有的数据文件,并由Map程序依次对所述数据文件进行map计算。
进一步还包括:
获取所述多个文件夹的路径信息,根据所述多个路径信息遍历所述多个文件夹。
所述多个文件夹按照预设的命名规则进行命名,所述Map程序依次遍历所述多个文件夹,包括:
获取文件夹的最小命名和文件夹的最大命名,通过循环调用的依次遍历所述多个文件夹。
还包括:Map程序依次对所述数据文件进行map计算后,输出的结果送入Reduce程序进行reduce计算。
一种基于MapReduce的数据处理客户端,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件。
进一步包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;
所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
所述多个文件夹按照预设的命名规则进行命名;
其中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
一种基于MapReduce的数据处理***,包括:
客户端,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件;
MapReduce装置,包括:
Map单元,用于依次对所述数据文件进行map计算;Reduce单元,用于对map后的结果进行reduce计算,并输出结果。
所述客户端进一步包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;
所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
所述多个文件夹按照预设的命名规则进行命名;
其中,所述客户端中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
本发明采取了上述方案以后,由于客户端在生成任务的时候,能够多次遍历文件夹从而读取数据,不需要和现有技术那样必须要先将数据预处理到同一个文件夹下,由此,计算效率较高。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1是本发明基于MapReduce的数据处理方法的流程示意图;
图2是本发明基于MapReduce的数据处理客户端的结构示意图;
图3是本发明基于MapReduce的数据处理***的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
一般来说,Map-Reduce的处理过程主要涉及以下四个部分/模块:
客户端Client:用于提交Map-reduce任务job;
JobTracker:协调整个job的运行,其为一个Java进程,其main class为JobTracker;TaskTracker:运行此job的task,处理input split,其为一个Java进程,其main class为TaskTracker;HDFS:hadoop分布式文件***,用于在各个进程间共享Job相关的文件。
本发明主要针对客户端Client进行改进,而对其他部分不进行改造,具体来说,如图1所示,所述基于MapReduce的数据处理方法,包括:
步骤1:客户端查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,所述多个文件夹中存储着需要处理的数据文件;
步骤2:遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序中,直至读取完所有的数据文件。
其中,由Map程序依次对所述数据文件进行map计算,map计算后的结果再输入到reduce程序中,直接最终输入最后结果。
在实施例中,客户端获取所述多个文件夹的路径信息,由此,在步骤2中,可以根据所述多个路径信息遍历所述多个文件夹。
一般地,多个文件夹按照预设的命名规则进行命名,通常多采取按照日期的方式,由此,所述Map程序依次遍历所述多个文件夹,包括:
获取文件夹的最小命名和文件夹的最大命名,通过循环调用的依次遍历所述多个文件夹。
本发明采取了上述方案以后,由于客户端在生成任务的时候,能够多次遍历文件夹从而读取数据,不需要和现有技术那样必须要先将数据预处理到同一个文件夹下,由此,该方法计算效率较高。
具体来说,在实施例中,主要是在任务的开始端加入一个循环处理层,将输入的路径作为循环处理层的输入参数,由此,循环处理层会通过多次迭代生成不同的任务进入Map段,最终的结果通过一个Reduce阶段进行输出。
例如,在任务初始阶段调用FileInputFormat.addInputPath(job,new Path())方法时,将单独调用的模式通过循环迭代层生成多个文件夹并且逐级调用该方法,然后完成调用后启动一个Job进行执行,且该job结束后会将结果写入缓存,并开始执行下一个输入文件夹,达到循环执行的目的。通过此方案可讲MapReduce的one-in-one-out的模式调整为Multiple-in-one-out的模式,提高了执行效率。
例如:当输入的文件夹有一定的规律性,如下,并且每个文件夹下面的数据量都很大时,采用将所有文件转移的处理方式会对网络和硬盘造成一定的压力,在处理效率上也有一定的消耗。
~/dir1/dir2/dt=2013-01-01/log.2013-01-01-00 |
~/dir1/dir2/dt=2013-01-01/log.2013-01-01-01 |
~/dir1/dir2/dt=2013-01-01/log.2013-01-01-02 |
上面例子可见,输入的文件夹路径只有在日期部分有变化,所以如果通过循环生成变量的方式生成文件夹路径,可以解决合并数据文件的问题。
代码可以采用循环拼接的形式:
如图2所示,是本发明基于MapReduce的数据处理客户端的结构示意图,该客户端,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件。
此外,优选的实施例中,还包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;
所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
并且,在优选实施例中,所述多个文件夹按照预设的命名规则进行命名;
其中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
如图3所示,一种基于MapReduce的数据处理***,其特征在于,包括:
客户端,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件;
MapReduce装置,包括:
Map单元,用于依次对所述数据文件进行map计算;Reduce单元,用于对map后的结果进行reduce计算,并输出结果。
所述客户端进一步包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;
所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
所述多个文件夹按照预设的命名规则进行命名;
其中,所述客户端中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
本发明***采取了上述方案以后,具有和上述方法相同的效果,即不需要和现有技术那样必须要先将数据预处理到同一个文件夹下,由此,计算效率较高。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于MapReduce的数据处理方法,其特征在于,包括:
客户端查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,所述多个文件夹中存储着需要处理的数据文件;
遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序中,直至读取完所有的数据文件,由Map程序依次对所述数据文件进行map计算。
2.根据权利要求1所述的基于MapReduce的数据处理方法,其特征在于,进一步还包括:
获取所述多个文件夹的路径信息,根据所述多个路径信息遍历所述多个文件夹。
3.根据权利要求1或2所述的基于MapReduce的数据处理方法,其特征在于,所述多个文件夹按照预设的命名规则进行命名,所述Map程序依次遍历所述多个文件夹,包括:
获取文件夹的最小命名和文件夹的最大命名,通过循环调用的依次遍历所述多个文件夹。
4.根据权利要求1所述的基于MapReduce的数据处理方法,其特征在于,Map程序依次对所述数据文件进行map计算后,输出的结果送入Reduce程序进行reduce计算。
5.一种基于MapReduce的数据处理客户端,其特征在于,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件。
6.根据权利要求5所述的基于MapReduce的数据处理客户端,其特征在于,进一步包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
7.根据权利要求5或6所述的基于MapReduce的数据处理客户端,其特征在于,所述多个文件夹按照预设的命名规则进行命名;
其中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
8.一种基于MapReduce的数据处理***,其特征在于,包括:
客户端,包括:
查询单元,用于查询并获取本次MapReduce计算需要处理的多个文件夹信息,其中,且每一个文件夹中都存储着需要处理的数据文件;
任务生成单元,用于遍历所述多个文件夹,根据所述多个文件夹的数据文件生成不同的任务,并依此送入MapReduce中的Map程序,直至读取完所有的数据文件;
MapReduce装置,包括:
Map单元,用于依次对所述数据文件进行map计算;Reduce单元,用于对map后的结果进行reduce计算,并输出结果。
9.根据权利要求8所述的基于MapReduce的数据处理***,其特征在于,所述客户端进一步包括:
文件夹操作单元,用于获取所述多个文件夹的路径信息;
所述任务生成单元,进一步用于根据所述路径信息依次遍历所述多个文件夹。
10.根据权利要求8或9所述的基于MapReduce的数据处理***,其特征在于,所述多个文件夹按照预设的命名规则进行命名;
其中,所述客户端中,所述任务生成单元,进一步获取文件夹的最小命名和文件夹的最大命名,通过循环调用依次遍历所述多个文件夹。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310598175.2A CN103617033A (zh) | 2013-11-22 | 2013-11-22 | 基于MapReduce的数据处理方法、客户端和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310598175.2A CN103617033A (zh) | 2013-11-22 | 2013-11-22 | 基于MapReduce的数据处理方法、客户端和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103617033A true CN103617033A (zh) | 2014-03-05 |
Family
ID=50167736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310598175.2A Pending CN103617033A (zh) | 2013-11-22 | 2013-11-22 | 基于MapReduce的数据处理方法、客户端和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617033A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020034194A1 (zh) * | 2018-08-17 | 2020-02-20 | 西门子股份公司 | 分布式数据处理方法、装置及***和机器可读介质 |
CN111444148A (zh) * | 2020-04-09 | 2020-07-24 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN113836431A (zh) * | 2021-10-19 | 2021-12-24 | 中国平安人寿保险股份有限公司 | 基于用户时长的用户推荐方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183368A (zh) * | 2007-12-06 | 2008-05-21 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和*** |
CN101764835A (zh) * | 2008-12-25 | 2010-06-30 | 华为技术有限公司 | 基于MapReduce编程架构的任务分配方法及装置 |
CN101770402A (zh) * | 2008-12-29 | 2010-07-07 | ***通信集团公司 | MapReduce***中的Map任务调度方法、设备及*** |
CN101957863A (zh) * | 2010-10-14 | 2011-01-26 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及*** |
US20120182891A1 (en) * | 2011-01-19 | 2012-07-19 | Youngseok Lee | Packet analysis system and method using hadoop based parallel computation |
-
2013
- 2013-11-22 CN CN201310598175.2A patent/CN103617033A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183368A (zh) * | 2007-12-06 | 2008-05-21 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和*** |
CN101764835A (zh) * | 2008-12-25 | 2010-06-30 | 华为技术有限公司 | 基于MapReduce编程架构的任务分配方法及装置 |
CN101770402A (zh) * | 2008-12-29 | 2010-07-07 | ***通信集团公司 | MapReduce***中的Map任务调度方法、设备及*** |
CN101957863A (zh) * | 2010-10-14 | 2011-01-26 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及*** |
US20120182891A1 (en) * | 2011-01-19 | 2012-07-19 | Youngseok Lee | Packet analysis system and method using hadoop based parallel computation |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020034194A1 (zh) * | 2018-08-17 | 2020-02-20 | 西门子股份公司 | 分布式数据处理方法、装置及***和机器可读介质 |
CN111444148A (zh) * | 2020-04-09 | 2020-07-24 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN111444148B (zh) * | 2020-04-09 | 2023-09-05 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN113836431A (zh) * | 2021-10-19 | 2021-12-24 | 中国平安人寿保险股份有限公司 | 基于用户时长的用户推荐方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558615B2 (en) | Atomic incremental load for map-reduce systems on append-only file systems | |
Jha et al. | A tale of two data-intensive paradigms: Applications, abstractions, and architectures | |
Polato et al. | A comprehensive view of Hadoop research—A systematic literature review | |
Afrati et al. | Map-reduce extensions and recursive queries | |
US20130326534A1 (en) | System and method for shared execution of mixed data flows | |
Raj et al. | A Spark-based Apriori algorithm with reduced shuffle overhead | |
Zhang et al. | Parallel rough set based knowledge acquisition using MapReduce from big data | |
Abbasi et al. | Extending i/o through high performance data services | |
Verma et al. | Big Data representation for grade analysis through Hadoop framework | |
Liu et al. | Meta-mapreduce for scalable data mining | |
Jiang et al. | Parallel K-Medoids clustering algorithm based on Hadoop | |
US10268461B2 (en) | Global data flow optimization for machine learning programs | |
WO2022061878A1 (en) | Blockchain transaction processing systems and methods | |
US20150172369A1 (en) | Method and system for iterative pipeline | |
Singh et al. | RDD-Eclat: approaches to parallelize Eclat algorithm on spark RDD framework | |
Tiwari et al. | MapReuse: Reusing computation in an in-memory MapReduce system | |
CN103617033A (zh) | 基于MapReduce的数据处理方法、客户端和*** | |
Slagter et al. | SmartJoin: a network-aware multiway join for MapReduce | |
Choi et al. | Improved performance optimization for massive small files in cloud computing environment | |
Vijayalakshmi et al. | The survey on MapReduce | |
Chan et al. | A distributed stream library for Java 8 | |
Gupta et al. | Map-based graph analysis on MapReduce | |
US11061736B2 (en) | Multiple parallel reducer types in a single map-reduce job | |
Prasad et al. | Improving the performance of processing for small files in Hadoop: A case study of weather data analytics | |
Tiwary et al. | Efficient implementation of apriori algorithm on HDFS using GPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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: 20140305 |
|
RJ01 | Rejection of invention patent application after publication |