CN105956043A - 为Hbase数据库上运行的MapReduce分配Map task的方法及装置 - Google Patents
为Hbase数据库上运行的MapReduce分配Map task的方法及装置 Download PDFInfo
- Publication number
- CN105956043A CN105956043A CN201610265163.1A CN201610265163A CN105956043A CN 105956043 A CN105956043 A CN 105956043A CN 201610265163 A CN201610265163 A CN 201610265163A CN 105956043 A CN105956043 A CN 105956043A
- Authority
- CN
- China
- Prior art keywords
- interval
- rowkey
- scan object
- mapreduce
- scan
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种为Hbase数据库上运行的MapReduce分配Map的方法及装置,用以解决目前由于大量数据集中于少数几个map task中,导致任务效率低的问题,该方法包括:将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;为每个区间分配一个预先创建的扫描scan对象;在MapReduce运行时为每个scan对象分配一个Map task,该方案提高了程序运行的效率。
Description
技术领域
本发明涉及通讯领域,特别是涉及一种为Hbase数据库上运行的MapReduce分配Map task的方法及装置。
背景技术
Hadoop是目前业界使用最多,最成熟的开源大数据存储和计算平台,它包含了很多组件,其中MapReduce(简称MR)是hadoop平台上的编程模型,适用于大数据量下的分布式计算。HBase是一个开源的非关系型分布式数据库(NoSQL),它运行于HDFS(Distributed File System,Hadoop分布式文件系统)文件系统之上,为Hadoop提供类似于BigTable(大规模分散数据库)规模的服务,Hbase的jar包里提供了API(Application Programming Interface,应用程序编程接口),可以使用MapReduce来读取或者写Hbase。其中,TableInputFormatBase类提供了对表数据的大部分操作,其子类TableInputFormat则提供用于处理表数据并生成键值对的功能,TableInputFormat类将数据表按照Region分割成split,既有多少个Region就有多个split。在MR job中每个split对应一个map task,据官方网站介绍,map task的数量即mapred.map.tasks的参数值,用户不能直接设置这个参数。
在hbase上进行MR统计时,由于大量数据集中于少数几个map中,导致任务效率低、运行时间长,以及单个map task(map task的数量即mapred.map.tasks的参数值,用户不能直接设置这个参数),占用资源多,容易失败等弊端。
发明内容
本发明提供一种为Hbase数据库上运行的MapReduce分配Map task的方法及装置,用以解决目前由于大量数据集中于少数几个Map task中,导致任务效率低的问题。
根据本发明的一个方面,提供了一种为Hbase数据库上运行的MapReduce分配Map task的方法,包括:将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;为每个区间分配一个预先创建的扫描scan对象;在MapReduce运行时为每个scan对象分配一个Map task。
其中,将Hbase数据库的主键Rowkey所标识的范围划分成多个区间,包括:将Rowkey所标识的范围平均划分成多个连续的区间。
进一步的,上述方法还包括:在Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;为第一scan对象设置共用属性;在Rowkey所标识的范围划分成多个区间之后,以第一scan对象为副本创建与区间对应的第二scan对象,并将区间的开始与结束位置参数加入到第二scan对象中。
其中,将Hbase数据库的主键Rowkey所标识的范围划分成多个区间,包括:将Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间。
进一步的,上述方法还包括:在为每个区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给MapReduce;当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
根据本发明的第二个方面,提供了一种为Hbase数据库上运行的MapReduce分配Map task的装置,包括:划分模块,用于将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;第一分配模块,用于为每个区间分配一个预先创建的扫描scan对象;第二分配模块,用于在MapReduce运行时为每个scan对象分配一个Map task。
其中,上述划分模块具体用于:将Rowkey所标识的范围平均划分成多个连续的区间。
进一步的,上述装置还包括:第一创建模块,用于在将Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;设置模块,用于为第一scan对象设置共用属性;第二创建模块,用于在将Rowkey所标识的范围划分成多个区间之后,以第一scan对象为副本创建与区间对应的第二scan对象,并将区间的开始与结束位置参数加入到第二scan对象中。
其中,上述划分模块具体用于:将Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间。
进一步的,上述装置还包括:提交模块,用于在为每个区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给MapReduce;确定模块,用于当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
本发明有益效果如下:
本实施例提供的方法,对Hbase数据库的主键Rowkey所标识的范围划分为多个区间,并为每个区间创建一个scan对象,在MapReduce运行时为每个scan对象分配一个Map task,使得Map task的数量增加,从而在Map阶段可以实现多个Map task并行执行,使得Map阶段的时间被大幅度缩短,进而提高了效率。
附图说明
图1是本发明实施例1中提供的为Hbase数据库上运行的MapReduce分配Map task的方法的流程图;
图2是本发明实施例2中提供的为Hbase数据库上运行的MapReduce分配Map task的方法的流程图;
图3是本发明实施例3中提供的为Hbase数据库上运行的MapReduce分配Map task的装置的结构框图。
具体实施方式
为了解决现有技术由于大量数据集中于少数几个Map task中,导致任务效率低的问题的问题,本发明提供了一种为Hbase数据库上运行的MapReduce分配Map task的方法及装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
实施例1
本实施例提供了一种为Hbase数据库上运行的MapReduce分配Map task的方法,该方法用于为Hbase数据库上运行的mapreduce程序分配Map task的数量,图1是该方法的流程图,如图1所示,该方法包括如下步骤:
步骤101:将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;
步骤102:为每个区间分配一个预先创建的scan对象;
其中,scan是在Hbase数据中进行查询时所用的数据结构,其中指定了查询的起始和结束位置。
步骤103:在MapReduce运行时为每个scan对象分配一个Map task。
其中,Map(映射)Reduce(归纳)是hadoop平台上的编程模型,用于大规模数据集(大于1TB)的并行运算,其中,Map task是用来把一组键值对映射成一组新的键值对。
其中,将Hbase数据库的主键Rowkey所标识的范围划分成多个区间,具体可以包括:将Hbase数据库的主键Rowkey所标识的范围平均划分成多个连续的区间;或更进一步的包括:将Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间,即,划分后的区间个数可以通过预设经验值或用户输入指定的数值来确定。
其中,在上述步骤101至103的基础上,上述方法还可以进一步包括:
在将Hbase数据库的主键Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;
为该第一scan对象设置共用属性;在将Hbase数据库的主键Rowkey所标识的范围划分成多个区间之后,以第一scan对象为副本创建与划分后的各区间对应的第二scan对象,并将划分后的各区间的开始与结束位置参数加入创建的各第二scan对象中,基于此,与划分后的各区间对应的各第二scan对象在均具有第一scan对象的共用属性的基础上,还具有其对应的区间的开始与结束位置参数。
进一步的,上述方法还可以包括:
在为每个区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给MapReduce;
当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
本实施例提供的方法,对Hbase数据库的主键Rowkey所标识的范围划分为多个区间,并为每个区间创建一个scan对象,在MapReduce运行时为每个scan对象分配一个Map task,使得Map task的数量增加,从而在Map阶段可以实现多个Map task并行执行,使得Map阶段的时间被大幅度缩短,进而提高了效率。
实施例2
本实施例在上述实施例1的基础上对本发明提供的为Hbase数据库上运行的MapReduce分配Map task的方法进行进一步说明:
将一个跨度大的Rowkey范围(例如00000000~10000000),平均划分成多个连续的小rowkey区间(例如,00000000~01000000,01000000~02000000,……,09000000~10000000)。为每个小rowkey区间创建一个scan对象提交查询,作为MapReduce程序运行统计分析的数据源。在MapReduce程序运行时会为每个创建的这些scan分配1个map与之对应,一个小rowkey区间对应一个scan,一个scan对应一个map,本实施例中小row指划分之后的rowkey区间。
这样,通过控制划分的rowkey区间的个数,可以实现控制map个数的目的。
如图2所示,以伪代码片段为例对rowkey的划分以及scan的创建进行说明:
步骤一:创建scan0
Scan scan0=new Scan();
步骤二:设置一些公有属性,此处设置的公有属性与现有技术中创建scan后设置的公有属性相同,例如,可以包括表名、缓存大小等信息。
scan0.setAttribute(设置一些共有属性);
scan0.set其他的公用参数;
步骤三:将rowkey划分成连续的多个小区间;
for(int i=0;i<map个数;i++){
String startRow=第i个小Rowkey区间开始;
String stopRow=第i个小Rowkey区间结束;
步骤四:创建多个scan,将小rowkey区间加入scan中
Scan scani=new Scan(scan0);
设置scani的开始rowkey为startRow;
设置scani的结束rowkey为stopRow;
将scani添加到一个列表scanList;}
步骤五:将这些scan一起提交给MR;
TableMapReduceUtil.initTableMapperJob(scanList,其他的一些参数);
通过本方案增加了map task的个数后,大幅度缩短程序的运行时间,提高了运行效率:使得map阶段可以有多个map task并行执行,在map阶段用时缩短到原来的1/3~1/10,效率提升3~10倍;同时,通过增加了map task的个数后,提高了程序运行的稳定性:由于单个map task更简洁精悍,大大降低了map task失败的几率,使得程序运行更加稳定。
实施例3
本实施例提供了一种为Hbase数据库上运行的mapreduce分配Map task的装置,该装置用于实现上述实施例1以及实施例2提供的为Hbase数据库上运行的mapreduce分配Map task的方法,图3是本实施例提供的为Hbase数据库上运行的mapreduce分配Map task的装置的结构框图,如图3所示,该装置30包括如下组成部分:
划分模块31,用于将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;
第一分配模块32,用于为划分后的每个区间分配一个预先创建的scan对象;
第二分配模块33,用于在MapReduce运行时为每个scan对象分配一个Map task。
其中,上述划分模块31具体用于:
将Hbase数据库的主键Rowkey所标识的范围平均划分成多个连续的区间。
进一步的,上述装置30还包括:
第一创建模块,用于在将Hbase数据库的主键Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;设置模块,用于为第一scan对象设置共用属性;第二创建模块,用于在将Hbase数据库的主键Rowkey所标识的范围划分成多个区间之后,以第一scan对象为副本创建与划分后的区间对应的第二scan对象,并将各划分后的区间的开始与结束位置参数加入第二scan对象中。
其中,上述划分模块31具体可以用于:将Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间。
进一步的,上述装置30还可以包括:提交模块,用于在为每个区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给MapReduce;确定模块,用于当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
本实施例提供的方案,对Hbase数据库的主键Rowkey所标识的范围划分为多个区间,并为划分后的每个区间创建一个scan对象,在MapReduce运行时为每个scan对象分配一个Map task,使得Map task的数量增加,从而在Map阶段可以实现多个Map task并行执行,使得Map阶段的时间被大幅度缩短,进而提高了效率。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种为Hbase数据库上运行的MapReduce分配Map task的方法,其特征在于,包括:
将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;
为每个所述区间分配一个预先创建的扫描scan对象;
在MapReduce运行时为每个所述scan对象分配一个Map task。
2.根据权利要求1所述的方法,其特征在于,所述将Hbase数据库的主键Rowkey所标识的范围划分成多个区间,包括:
将所述Rowkey所标识的范围平均划分成多个连续的区间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;
为所述第一scan对象设置共用属性;
在将所述Rowkey所标识的范围划分成多个区间之后,以所述第一scan对象为副本创建与所述区间对应的第二scan对象,并将所述区间的开始与结束位置参数加入到所述第二scan对象中。
4.根据权利要求1所述的方法,其特征在于,所述将Hbase数据库的主键Rowkey所标识的范围划分成多个区间,包括:
将所述Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
在为每个所述区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给所述MapReduce;
当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
6.一种为Hbase数据库上运行的MapReduce分配Map task的装置,其特征在于,包括:
划分模块,用于将Hbase数据库的主键Rowkey所标识的范围划分成多个区间;
第一分配模块,用于为每个所述区间分配一个预先创建的扫描scan对象;
第二分配模块,用于在MapReduce运行时为每个所述scan对象分配一个Map task。
7.根据权利要求6所述的装置,其特征在于,所述划分模块具体用于:
将所述Rowkey所标识的范围平均划分成多个连续的区间。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一创建模块,用于在将所述Rowkey所标识的范围划分成多个区间之前,创建第一scan对象;
设置模块,用于为所述第一scan对象设置共用属性;
第二创建模块,用于在将所述Rowkey所标识的范围划分成多个区间之后,以所述第一scan对象为副本创建与所述区间对应的第二scan对象,并将所述区间的开始与结束位置参数加入到所述第二scan对象中。
9.根据权利要求6所述的装置,其特征在于,所述划分模块具体用于:
将所述Rowkey划分为接收到的外部输入的数目或预设的数目个连续的区间。
10.根据权利要求6至9任意一项所述的装置,其特征在于,所述装置还包括:
提交模块,用于在为每个所述区间分配一个预先创建的scan对象之后,将分配的所有scan对象提交给所述MapReduce;
确定模块,用于当在Hbase上进行MapReduce统计时,根据统计到的scan对象的数量确定同时执行的Map task的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610265163.1A CN105956043A (zh) | 2016-04-26 | 2016-04-26 | 为Hbase数据库上运行的MapReduce分配Map task的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610265163.1A CN105956043A (zh) | 2016-04-26 | 2016-04-26 | 为Hbase数据库上运行的MapReduce分配Map task的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105956043A true CN105956043A (zh) | 2016-09-21 |
Family
ID=56916792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610265163.1A Pending CN105956043A (zh) | 2016-04-26 | 2016-04-26 | 为Hbase数据库上运行的MapReduce分配Map task的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105956043A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976888A (zh) * | 2019-03-25 | 2019-07-05 | 苏州达家迎信息技术有限公司 | 一种数据扫描方法、装置、设备和存储介质 |
CN111427887A (zh) * | 2020-03-17 | 2020-07-17 | 中国邮政储蓄银行股份有限公司 | 一种快速扫描HBase分区表的方法、装置、系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725753A (zh) * | 2011-11-28 | 2012-10-10 | 华为技术有限公司 | 优化数据访问的方法及装置、优化数据存储的方法及装置 |
CN103646073A (zh) * | 2013-12-11 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于HBase表的条件查询优化方法 |
CN104361090A (zh) * | 2014-11-17 | 2015-02-18 | 浙江宇视科技有限公司 | 数据查询方法及装置 |
CN105487925A (zh) * | 2015-12-08 | 2016-04-13 | 浙江宇视科技有限公司 | 数据扫描方法和装置 |
-
2016
- 2016-04-26 CN CN201610265163.1A patent/CN105956043A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725753A (zh) * | 2011-11-28 | 2012-10-10 | 华为技术有限公司 | 优化数据访问的方法及装置、优化数据存储的方法及装置 |
CN103646073A (zh) * | 2013-12-11 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于HBase表的条件查询优化方法 |
CN104361090A (zh) * | 2014-11-17 | 2015-02-18 | 浙江宇视科技有限公司 | 数据查询方法及装置 |
CN105487925A (zh) * | 2015-12-08 | 2016-04-13 | 浙江宇视科技有限公司 | 数据扫描方法和装置 |
Non-Patent Citations (1)
Title |
---|
TNTZBZC: "《http://www.it610.com/article/4945199.htm》", 28 May 2013 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976888A (zh) * | 2019-03-25 | 2019-07-05 | 苏州达家迎信息技术有限公司 | 一种数据扫描方法、装置、设备和存储介质 |
CN109976888B (zh) * | 2019-03-25 | 2021-09-17 | 苏州达家迎信息技术有限公司 | 一种数据扫描方法、装置、设备和存储介质 |
CN111427887A (zh) * | 2020-03-17 | 2020-07-17 | 中国邮政储蓄银行股份有限公司 | 一种快速扫描HBase分区表的方法、装置、系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216302B2 (en) | Modifying task dependencies at worker nodes using precompiled libraries | |
US11238061B2 (en) | Adaptive distribution method for hash operations | |
US11514045B2 (en) | Structured cluster execution for data streams | |
US10606834B2 (en) | Methods and apparatus of shared expression evaluation across RDBMS and storage layer | |
CN107145537B (zh) | 一种表格数据导入方法及系统 | |
WO2016078592A1 (zh) | 批量数据查询方法和装置 | |
CN103646073A (zh) | 一种基于HBase表的条件查询优化方法 | |
CN106776962A (zh) | 一种通用的Excel数据导入多个数据库物理表方法 | |
CN105069149A (zh) | 一种面向结构化列式数据的分布式并行数据导入方法 | |
CN102665231B (zh) | 一种lte系统自动生成参数配置文件的方法 | |
CN103942108B (zh) | Hadoop同构集群下的资源参数优化方法 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN106919697B (zh) | 一种将数据同时导入多个Hadoop组件的方法 | |
CN105824849A (zh) | 一种数据导入方法及适配器 | |
CN105094972A (zh) | 数据库操作任务的处理方法和装置 | |
CN107977396A (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
US10700934B2 (en) | Communication control device, communication control method, and computer program product | |
WO2017088666A1 (zh) | 一种数据存储方法和协调节点 | |
CN104050297B (zh) | 一种查询事务分配方法及装置 | |
US20160019266A1 (en) | Query generating method and query generating device | |
CN105975493A (zh) | 一种文件合并方法及装置 | |
WO2017161989A1 (zh) | 分布式数据库预处理的方法及装置、计算机存储介质 | |
CN105975489A (zh) | 一种基于元数据的在线sql代码补全方法 | |
CN110795431B (zh) | 环境监测数据处理方法、装置、设备及存储介质 | |
CN104239470A (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: 20160921 |
|
RJ01 | Rejection of invention patent application after publication |