一种提高MR任务运行效率的方法与流程

文档序号:19418603发布日期:2019-12-14 01:11阅读:613来源:国知局

本发明涉及hadoop生态圈大数据处理技术领域,具体的说是一种提高mr任务运行效率的方法。



背景技术:

数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。

大数据通常用来形容一个公司创造的大量非结构化和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。

现在社会每日增量数据已经到达tb,甚至已经到达pb级别,相对与很多公司在有限的资源下,多处理几十g的数据就会带来成本上的增加。为此很多公司针对各个分析工具从组件内部进行优化,减少消耗,提高性能,能在同样的时间内处理分析更多的数据,来减少成本。

现有的mr任务将数据通过map端、shuffer阶段和reducer端分析后继承job接口写入hdfs,再通过其他工具从hdfs的数据导入到关系型数据库。

shuffle过程,也称copy阶段。reducetask从各个maptask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定的阀值,则写到磁盘上,否则直接放到内存中。

shuffle过程是贯穿于map和reduce两个过程的。

hadoop的集群环境,大部分的maptask和reducetask是执行在不同的节点上的,那么reduce就要取map的输出结果。那么集群中运行多个job时,task的正常执行会对集群内部的网络资源消耗严重。



技术实现要素:

本发明要解决的技术问题是:mr任务本身是对大数据量的数据进行离线分析处理,本身mr原理是一行一行读取文件数据进行分区排序,整合成k-v形式的数据,是基于磁盘的,所以非常消耗io。并且在此任务完成后基于业务将数据存放入关系型数据库或者非关系型数据库,也需要通过工具去全量导入或者增量导入,非常浪费时间。

注:k-v形式的数据:kv数据库的数据,key-value数据库,是一种以键值对存储数据的一种数据库,类似java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。

为了调整mr任务各阶段步骤提高运行效率,本发明提供一种提高mr任务运行效率的方法。针对提高mr任务开发效率,基于mr架构结合sql批量执行,提高mr任务开发效率。通过减少网络io消耗和简化mr任务步骤来提高mr任务分析计算效率。

本发明所采用的技术方案为:

一种提高mr任务运行效率的方法,所述方法实现过程包括内容:

项目中的每个业务的mr任务中基础维度类业务,根据业务需求封装成顶级维度类,在mr任务调用维度类时,直接调用该业务的顶级维度类,以便减轻业务处理和代码编写的复杂度,提高工作效率。

所述方法实现过程还包括:

所述mr任务在reducer端完成对数据的分析整理后,直接通过接口写入关系型数据库,舍弃写入hdfs的步骤,以简化整个任务处理过程,提高mr任务执行效率。

所述方法实现过程还包括:

mr任务分析整理的数据写入关系型数据库时,通过批量执行sql语句将数据写入关系型数据库,以减少网络io,提高mr任务效率。

所述通过批量执行sql语句的实现过程如下:

在写入关系型数据库的接口中创建一个容器,将要执行的sql语句放入容器中,达到一定数量后例如100条,批量执行。

所述方法实现过程还包括内容如下:

在mr任务map到shuffer传输过程中和shuffer到reducer传输过程中,通过选用相应的压缩格式,进行数据压缩和解压缩。

所述容器为map容器。map容器是stl的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力。

所述接口为写入关系型数据库的接口。

本发明的有益效果为:

本发明方法通过封装基础维度类,减轻业务处理和代码编写的复杂度,提高工作效率;通过抛除写入hdfs过程,简化整个任务处理过程,提高mr任务执行效率;该方法通过批量执行sql语句将分析数据写入关系型数据库,减少网络io,提高mr任务效率;该方法通过选用合适的数据压缩格式,减少网络io,提高mr任务效率。

具体实施方式

下面具体实施方式对本发明进一步说明:

一种提高mr任务运行效率的方法,所述方法实现过程包括内容:

1、项目中的每个业务的mr任务中基础维度类业务,根据业务需求封装成顶级维度类,在mr任务调用维度类时,直接调用该业务的顶级维度类,以减轻业务处理和代码编写的复杂度,提高工作效率。

2、所述mr任务在reducer端完成对数据的分析整理后,舍弃写入hdfs的步骤,直接通过接口写入关系型数据库,以简化整个任务处理过程,提高mr任务执行效率。

3、mr任务分析整理的数据写入关系型数据库时,在写入关系型数据库的接口中创建一个map容器,将要执行的sql语句放入容器中,达到一定数量后例如100条,批量执行。

4、在mr任务map到shuffer传输过程中和shuffer到reducer传输过程中,通过选用相应的压缩格式,进行数据压缩和解压缩。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。



技术特征:

1.一种提高mr任务运行效率的方法,其特征在于,所述方法实现过程包括内容:

项目中的每个业务的mr任务中基础维度类业务,根据业务需求封装成顶级维度类,在mr任务调用维度类时,直接调用该业务的顶级维度类。

2.根据权利要求1所述的一种提高mr任务运行效率的方法,其特征在于,所述方法实现过程还包括:

所述mr任务在reducer端完成对数据的分析整理后,直接通过接口写入关系型数据库。

3.根据权利要求2所述的一种提高mr任务运行效率的方法,其特征在于,所述方法实现过程还包括:

mr任务分析整理的数据写入关系型数据库时,通过批量执行sql语句将数据写入关系型数据库。

4.根据权利要求3所述的一种提高mr任务运行效率的方法,其特征在于,所述通过批量执行sql语句的实现过程如下:

在写入关系型数据库的接口中创建一个容器,将要执行的sql语句放入容器中,达到一定数量后批量执行。

5.根据权利要求1或2所述的一种提高mr任务运行效率的方法,其特征在于,所述方法实现过程还包括内容如下:

在mr任务map到shuffer传输过程中和shuffer到reducer传输过程中,通过选用相应的压缩格式,进行数据压缩和解压缩。

6.根据权利要求5所述的一种提高mr任务运行效率的方法,其特征在于,所述容器为map容器。

7.根据权利要求2所述的一种提高mr任务运行效率的方法,其特征在于,所述接口为写入关系型数据库的接口。


技术总结
本发明公开一种提高MR任务运行效率的方法,所述方法实现过程包括内容:项目中的每个业务的MR任务中基础维度类业务,根据业务需求封装成顶级维度类,在MR任务调用维度类时,直接调用该业务的顶级维度类。本发明方法通过封装基础维度类,减轻业务处理和代码编写的复杂度,提高工作效率;通过抛除写入hdfs过程,简化整个任务处理过程,提高MR任务执行效率;该方法通过批量执行sql语句将分析数据写入关系型数据库,减少网络IO,提高MR任务效率;该方法通过选用合适的数据压缩格式,减少网络IO,提高MR任务效率。

技术研发人员:刁彬朔
受保护的技术使用者:山东健康医疗大数据有限公司
技术研发日:2019.09.12
技术公布日:2019.12.13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1