CN110209645A - 任务处理方法、装置、电子设备及存储介质 - Google Patents
任务处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110209645A CN110209645A CN201711487077.6A CN201711487077A CN110209645A CN 110209645 A CN110209645 A CN 110209645A CN 201711487077 A CN201711487077 A CN 201711487077A CN 110209645 A CN110209645 A CN 110209645A
- Authority
- CN
- China
- Prior art keywords
- hive
- task
- job
- mentioned
- reducer
- 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
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种任务处理方法、装置、电子设备及存储介质。其中,上述任务处理方法可以包括:接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息;根据上述目标作业表数据量信息计算映射器mapper任务数量m和化简器reducer任务数量r;依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。本发明的技术方案能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
Description
技术领域
本发明涉及数据库领域,特别是涉及任务处理方法、装置、电子设备及存储介质。
背景技术
Hive是基于分布式系统基础架构的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。Hive使用的数据一般是分布式存储在HDFS(Hadoop DistributedFile System,分布式文件系统)中的,其作业高度依赖于系统集群中的MapReduce(映射化简)组件,Hive作业也是通过编译器解析查询语句,最终生成执行计划调用MapReduce执行,数据量庞大,执行延时通常较高。
在进行数据存储时,Hive定义了简单的类SQL(Structured Query Language,结构化查询语言)的查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者开发自定义的mapper(映射器)和reducer(化简器)来处理内建的mapper和reducer无法完成的复杂的分析工作。
当Hive在处理作业任务时,调用Mapreduce进程来进行作业,而Mapreduce作业的主要过程是mapper及reducer阶段,两个阶段所使用的mapper数及reducer数将极大的影响整个作业的执行效率。Hive通常会有默认的参数配置文件来决定一个任务默认配置所需的mapper及reducer数量。但当Hive集群中存在多重作业调度,且作业使用数据量及计算量偏差很大时,默认配置的mapper及reducer数量将无法满足提升运行性能的要求。
发明内容
本发明实施例的目的在于提供一种任务处理方法、装置、电子设备及存储介质,能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
为达上述目的,第一方面,本发明实施例提供了一种任务处理方法,可以包括:
接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息;
根据上述目标作业表数据量信息计算映射器mapper任务数量m和化简器reducer任务数量r;
依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
第一方面提供的任务处理方法,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
在第一方面的一种可能的实现方式中,上述目标作业表数据量信息包括:表记录数和表数据量大小。
在第一方面的一种可能的实现方式中,上述接收Hive作业请求,根据Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询所述Hive作业请求所请求作业的目标作业表数据量信息的步骤,可以包括:
接收Hive作业请求,间隔预定时长根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。
在第一方面的一种可能的实现方式中,上述mapper任务数量m可以通过公式(1)计算得到:
其中,上述n为上述Hive作业请求所请求作业的表记录数,上述ceil()为向上取整函数,上述Qn为上述Hive作业请求所请求作业的表数据量大小,上述mapred.max.split.size为预设数据块block大小,上述k为预设阈值。
在第一方面的一种可能的实现方式中,上述reducer任务数量r可以通过上述reducer任务所处理的数据量R获得,上述reducer任务所处理的数据量R可以通过公式(2)计算得到:
R=ceil(j×nodes×m)……………………………(2)
其中,上述ceil()为向上取整函数,上述j为预设阈值,上述nodes为Hive集群节点数。
在第一方面的一种可能的实现方式中,上述reducer任务数量r可以通过以下方式获得:
比较ceil(r/64M)和S/2,其中,上述S为Hive集群总槽slot数量;
当判定ceil(r/64M)大于S/2时,确定上述reducer任务数量r为R/128M;
当判定ceil(r/64M)小于S/2时,确定上述reducer任务数量r为R/64M。
在第一方面的一种可能的实现方式中,上述任务处理方法还可以包括:判断上述Hive作业请求是否包括聚类函数,当判定上述Hive作业请求中包括聚类函数,设置上述reducer任务所处理的数据量R为0。
在第一方面的一种可能的实现方式中,上述目标作业表数据量信息还可以包括:最近查询时间。
在第一方面的一种可能的实现方式中,上述预定时长可以为1小时。
在第一方面的一种可能的实现方式中,上述k取值可以为1.1,上述j取值可以为0.75。
第二方面,本发明实施例提供了一种任务处理装置,可以包括:查询单元、计算单元和参数调整单元。
该查询单元可以用于接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息;
该计算单元可以用于根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r;
该参数调整单元可以用于依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
第二方面提供的任务处理装置,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
在第二方面的一种可能的实现方式中,上述目标作业表数据量信息包括:表记录数和表数据量大小。
在第二方面的一种可能的实现方式中,上述查询单元,可以用于:
接收Hive作业请求,间隔预定时长根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。
在第二方面的一种可能的实现方式中,上述mapper任务数量m可以通过公式(1)计算得到:
其中,上述n为上述Hive作业请求所请求作业的表记录数,上述ceil()为向上取整函数,上述Qn为上述Hive作业请求所请求作业的表数据量大小,上述mapred.max.split.size为预设数据块block大小,上述k为预设阈值。
在第二方面的一种可能的实现方式中,上述reducer任务数量r可以通过上述reducer任务所处理的数据量R获得,上述reducer任务所处理的数据量R可以通过公式(2)计算得到:
R=ceil(j×nodes×m)……………………………(2)
其中,上述ceil()为向上取整函数,上述j为预设阈值,上述nodes为Hive集群节点数。
在第二方面的一种可能的实现方式中,上述reducer任务数量r可以通过以下方式获得:
比较ceil(r/64M)和S/2,其中,上述S为Hive集群总槽slot数量;
当判定ceil(r/64M)大于S/2时,确定上述reducer任务数量r为R/128M;
当判定ceil(r/64M)小于S/2时,确定上述reducer任务数量r为R/64M。
在第二方面的一种可能的实现方式中,上述任务处理方法还可以包括:判断上述Hive作业请求是否包括聚类函数,当判定上述Hive作业请求中包括聚类函数,设置上述reducer任务所处理的数据量R为0。
在第二方面的一种可能的实现方式中,上述目标作业表数据量信息还可以包括:最近查询时间。
在第二方面的一种可能的实现方式中,上述预定时长可以为1小时。
在第二方面的一种可能的实现方式中,上述k取值可以为1.1,上述j取值可以为0.75。
第三方面,本发明实施例提供了电子设备,可以包括处理器和存储器;
该存储器可以用于储存有可执行程序代码;
该处理器可以用于读取所述存储器中存储的可执行程序代码以执行上述第一方面提供的任务处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,可以包括指令,当指令在计算机上运行时,使得计算机执行上述第一方面提供的任务处理方法。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的任务处理方法。
第六方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面提供的任务处理方法。
与现有技术相比,本发明实施例提供的任务处理方法、装置、电子设备及存储介质的方案中,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种实施例提供的任务处理方法的示意性流程图;
图2为本发明一种实施例提供的Hive集群元数据表的表项扩充前后的示意图;
图3为本发明另一种实施例提供的任务处理方法的示意性流程图;
图4为本发明又一种实施例提供的任务处理方法的示意性流程图;
图5为本发明一种实施例提供的任务处理装置的示意性结构框图;
图6为本发明一种实施例提供的电子设备的示意性结构框图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面首先对本发明中涉及到的技术术语进行简单介绍。
Hive作业的默认参数配置,用于设置Hive作业过程的两个阶段所使用的mapper数量和reducer数量。
默认参数配置通常会有如下配置:
默认配置1:dfs.block.size=134217728
在默认配置1中,定义了进行mapper的数据块大小为128M,如若一个任务的文件大小是600M*4个,则按每个数据块128M,共需(600/128)*4=20个mapper进行作业。
默认配置2:Hive.exec.reducers.bytes.per.reducer=67108864
在默认配置2中,定义了每个reduce处理任务数据量64M。
默认配置3:Hive.exec.reducers.max=1099
在默认配置3中,定义了每个任务最大的reduce数量是1099个。
默认配置4:mapred.reduce.tasks=-1
在默认配置4中,定义了每个reduce任务所使用的reducer数量不限制。
一般的Hive默认的元数据表只会统计作业表的具体位置信息、字段信息、block块信息等,没有更加具体能获得的作业表数据量的作业表数据量信息,而这些作业表数据量信息却是可以作为作业中调用mapper及reducer的数量作为一个很重要的参考,依据这些能够体现作业表数据量的元数据信息可以更好的为作业设置最优化的配置,提升作业执行效率,使作业更加高效的执行。
为了解决上述问题,达到更好的为作业设置最优化的配置,提升作业执行效率,使作业更加高效的执行的目的。本发明实施例提供了一种任务处理方法,可以包括:S110~S130。
在S110中,接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。
在一些示例中,上述目标作业表数据量信息可以包括:表记录数和表数据量大小。如图2所示,Fieid代表字段名称,Type代表字段类型,Null代表SQL中查询字段为null或者不为null。例如,可以在Hive集群创建元数据时,在原有的元数据表tbls中进行扩充开辟多个列作为新的表项,用以存放Hive中所有表数据的总条数也就是表记录数以及数据大小信息也就是表数据量大小。
例如,元数据中原有表tbls中字段主要有TBL_ID(表ID号)、CREATE_TIME(创建时间)、DB_ID(所属数据库ID)、LAST_ACCESS_TIME(最近访问时间)、OWNER(表属主)、TBL_NAME(表名)和TBL_TYPE(表类型)等。
扩充的新字段为TBL_COUNTS(表记录数)和TBL_SIZEM(表数据量大小,单位M)。
在一些示例中,每当检查到一个接收到调用mapper及reducer的Hive作业请求后,可以先从元数据tbls表中查找作业使用的数据库DB_ID及使用的具体表名TBL_NAME,进而获取对应的表的扩充的新字段:TBL_COUNTS(表记录数)和TBL_SIZEM(表数据量大小,单位M),就能得到上述目标作业表数据量信息。
在一些示例中,在S110中,接收Hive作业请求,可以间隔预定时长根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。
在一些示例中,可以在本发明实施例的任务处理方法的实施主体设备中,开启守护进程,对元数据中原有表tbls所有数据进行动态统计,统计周期可以为1小时每次,也可以为相对于1小时的较长或较短的时间。不过,过于短的预设时间,使得频繁地根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息将损耗Hive本身的性能。所以,统计及查询的频率可以依据业务需求随时调整,以降低进程过于频繁运行对元数据中原有表tbls进行查询导致对Hive作业执行效率的影响。
通过本发明在上述实施例中,在接收Hive作业请求之后进行数据动态查询及统计,对Hive作业请求中的表名进行识别并从元数据中原有表tbls中查询。上述守护进程对数据每隔一小时进行一次统计,并设置周期可调整配置,依据具体业务需求进行调整,避免过于频繁对Hive集群本身作业造成资源抢占。
在一些示例中,由于在接收Hive作业请求之后进行数据动态查询及统计,还可以在表tbls中扩充LAST_COUNT_TIME(最近统计时间)的新字段。
在S120中,根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。
另外,由于一般的Hive作业只能读取上述Hive作业的默认参数配置,而无法针对具体的作业任务进行mapper及reducer的动态调整,当系统在运行的任务数量级相差巨大,并且任务多变的情况下,使用默认配置将无法发挥Hive集群的最大性能。可能出现Hive集群空闲资源依旧很多,但是作业执行效率十分低下的情况,造成集群的资源浪费,Hive执行作业的效率也无法最大化。
为解决上述问题,在一些示例中,上述mapper任务数量m可以通过公式(1)计算得到:
其中,上述n为上述Hive作业请求所请求作业的表记录数,上述ceil()为向上取整函数,上述Qn为上述Hive作业请求所请求作业的表数据量大小,上述mapred.max.split.size为预设数据块block大小,上述k为预设阈值,例如可以设置为k=1.1。
上述m的确定方法,相比于现有的Hive中预先设定m值的方案,具有如下优点:通过元数据表中的目标作业表数据量信息,能分配合理的mapper数。当目标作业表数据量信息过大时,通过拆分块的大小和HDFS设置的数据块大小参数block的大小接近,避免因为过大造成跨节点访问,网络和IO的不必要消耗。当目标作业表数据量信息过小且条目也就是表记录数过多时,通过设置文件合并及每个mapper要处理数据的表记录数,避免启动过多map容器造成资源浪费,为每个mapper分配合理的数据处理量,解决数据倾斜问题。避免上述可能出现的Hive集群空闲资源依旧很多,但是作业执行效率十分低下,造成集群的资源浪费,Hive执行作业的效率也无法最大化的情况。
在一些示例中,上述reducer任务数量r可以通过上述reducer任务所处理的数据量R获得,上述reducer任务所处理的数据量R可以通过公式(2)计算得到:
R=ceil(j×nodes×m)……………………………(2)
其中,上述ceil()为向上取整函数,上述j为预设阈值,例如,j可以为0.75,上述nodes为Hive集群节点数。
在一些实例中,公式(2)还可以表示为:
在一些示例中,上述任务处理方法还可以包括:判断上述Hive作业请求是否包括聚类函数,当判定上述Hive作业请求中包括聚类函数,设置上述reducer任务所处理的数据量R为0。例如,如果SQL语句没有使用到聚合函数,如limit,count和max等操作,可设置上述reducer任务所处理的数据量R为0。
图3为本发明另一种实施例提供的任务处理方法的示意性流程图。如图3所示,在一些示例中,上述reducer任务数量r可以通过以下方式获得:
S210:比较ceil(r/64M)和S/2,其中,上述S为Hive集群总槽slot数量;
S220:当判定ceil(r/64M)大于S/2时,确定上述reducer任务数量r为R/128M;
S230:当判定ceil(r/64M)小于S/2时,确定上述reducer任务数量r为R/64M。
在上述实施例中,假定集群mapper及reducer总slot数量为S,以单个作业任务使用slot总数不过半为限,决定单个reducer处理的数据大小,以此决定总的reducer数量。在一些示例中,最后可以进行setmapred.reduce.tasks=r设置处理的reducer数量进行作业。
在一些示例中,上述步骤对于单个reducer处理的数据块大小,因默认HDFS数据块为128M,可以选择与HDFS数据块相同大小或一半大小来切分单个reducer处理数据量,最大限度的保证了数据的原有完整性,也能提升数据处理效率。
图3所示的reducer任务数量r的处理方式,适用集群多作业的情况,故设置单个作业不使用全部集群slot处理单元的情况,避免后续新作业因slot严重不足发生资源争夺或长时间等待,影响作业效率。同样起到了避免Hive执行作业的效率也无法最大化的作业情况。
通过上述方法,可通过根据目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。
在S130中,依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
图4为本发明又一种实施例提供的任务处理方法的示意性流程图。基于上述在接收Hive作业请求之后进行数据动态查询及统计的步骤,如图4所示,上述任务处理方法还可以包括:S310~S330。
在S310中,接收Hive作业请求,间隔预定时长根据Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询Hive作业请求所请求作业的目标作业表数据量信息。上述间隔预定时长可以是一小时,那么可以对数据每隔一小时进行一次统计,该间隔预定时长是可以调整的,依据具体业务需求进行调整,避免过于频繁对Hive集群本身作业造成资源抢占。
在S320中,根据目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。
在S330中,依据mapper任务数量m和reducer任务数量r进行调整Hive作业的参数配置并执行mapper任务和reducer任务。达到提升作业执行效率的目的,缩短作业执行时间。
本提案提供的上述方案可以应用于多个场景中提升作业执行效率,减少任务执行时间的效果:
例如,在对话费订单数据的统计类查询场景中:
接收话费订单数据Hive查询作业请求,根据上述话费订单数据Hive查询作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述话费订单数据Hive查询作业请求所请求作业的话费订单数据作业表数据量信息;上述话费订单数据作业表数据量信息可以包括扩充的新字段:TBL_COUNTS(表记录数)和TBL_SIZEM(表数据量大小,单位M)。
根据上述话费订单数据作业表数据量信息计算mapper任务数量m和reducer任务数量r;
依据上述mapper任务数量m和reducer任务数量r进行调整上述话费订单数据Hive查询作业的参数配置并执行mapper任务和reducer任务。
这样,通过提前预知话费订单数据Hive查询作业对整个Hive集群的计算资源的需求,并配给合适的计算资源,达到充分利用Hive集群资源的效果。
再例如:在应用于实时流量的统计类场景中:
当实时流量的统计作业表数据量信息过小且条目也就是表记录数过多时,通过设置文件合并及每个mapper要处理数据的表记录数,避免启动过多map容器造成资源浪费,为每个mapper分配合理的数据处理量,解决数据倾斜问题。避免上述可能出现的Hive集群空闲资源依旧很多,但是作业执行效率十分低下,造成集群的资源浪费,Hive执行作业的效率也无法最大化的情况。达到提升作业执行效率,减少任务执行时间的效果。
与现有技术相比,本发明实施例提供的一种任务处理方法的区别在于接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
本发明实施例提供的一种任务处理方法,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
上文中结合图1和图4,详细描述了根据本发明实施例的任务处理方法,下面将结合图5至图6,详细描述根据本发明实施例的任务处理装置和电子设备。
图5为本发明一种实施例提供的任务处理装置的示意性结构框图。如图5所示,一种任务处理装置400,可以包括:查询单元410、计算单元420和参数调整单元430。
该查询单元410可以用于接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息;
该计算单元420可以用于根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r;
该参数调整单元430可以用于依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
在一些示例中,上述目标作业表数据量信息包括:表记录数和表数据量大小。
在一些示例中,上述查询单元410,可以用于:
接收Hive作业请求,间隔预定时长根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。
在一些示例中,可以在本发明实施例的任务处理装置的实施主体设备中,开启守护进程,对元数据中原有表tbls所有数据进行动态统计,统计周期可以为1小时每次,也可以为相对于1小时的较长或较短的时间。不过,过于短的预设时间,使得频繁地根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息将损耗Hive本身的性能。所以,统计及查询的频率可以依据业务需求随时调整,以降低进程过于频繁运行对元数据中原有表tbls进行查询导致对Hive作业执行效率的影响。
通过本发明在上述实施例中,在接收Hive作业请求之后进行数据动态查询及统计,对Hive作业请求中的表名进行识别并从元数据中原有表tbls中查询。上述守护进程对数据每隔一小时进行一次统计,并设置周期可调整配置,依据具体业务需求进行调整,避免过于频繁对Hive集群本身作业造成资源抢占。
在一些示例中,由于在接收Hive作业请求之后进行数据动态查询及统计,还可以在表tbls中扩充LAST_COUNT_TIME(最近统计时间)的新字段。
在一些示例中,上述mapper任务数量m可以通过公式(1)计算得到:
其中,上述n为上述Hive作业请求所请求作业的表记录数,上述ceil()为向上取整函数,上述Qn为上述Hive作业请求所请求作业的表数据量大小,上述mapred.max.split.size为预设数据块block大小,上述k为预设阈值,例如可以设置为k=1.1。
上述m的确定方法,相比于现有的Hive中预先设定m值的方案,具有如下优点:通过元数据表中的目标作业表数据量信息,能分配合理的mapper数。当目标作业表数据量信息过大时,通过拆分块的大小和HDFS设置的数据块大小参数block的大小接近,避免因为过大造成跨节点访问,网络和IO的不必要消耗。当目标作业表数据量信息过小且条目也就是表记录数过多时,通过设置文件合并及每个mapper要处理数据的表记录数,避免启动过多map容器造成资源浪费,为每个mapper分配合理的数据处理量,解决数据倾斜问题。避免上述可能出现的Hive集群空闲资源依旧很多,但是作业执行效率十分低下,造成集群的资源浪费,Hive执行作业的效率也无法最大化的情况。
在一些示例中,上述reducer任务数量r可以通过上述reducer任务所处理的数据量R获得,上述reducer任务所处理的数据量R可以通过公式
(2)计算得到:
R=ceil(j×nodes×m)……………………………(2)
其中,上述ceil()为向上取整函数,上述j为预设阈值,上述nodes为Hive集群节点数。
在一些实例中,公式(2)还可以表示为:
在一些示例中,上述任务处理方法还可以包括:判断上述Hive作业请求是否包括聚类函数,当判定上述Hive作业请求中包括聚类函数,设置上述reducer任务所处理的数据量R为0。例如,如果SQL语句没有使用到聚合函数,如limit,count和max等操作,可设置上述reducer任务所处理的数据量R为0。
在一些示例中,上述reducer任务数量r可以通过以下方式获得:
比较ceil(r/64M)和S/2,其中,上述S为Hive集群总槽slot数量;
当判定ceil(r/64M)大于S/2时,确定上述reducer任务数量r为R/128M;
当判定ceil(r/64M)小于S/2时,确定上述reducer任务数量r为R/64M。
在上述实施例中,假定集群mapper及reducer总slot数量为S,以单个作业任务使用slot总数不过半为限,决定单个reducer处理的数据大小,以此决定总的reducer数量。在一些示例中,最后可以进行setmapred.reduce.tasks=r设置处理的reducer数量进行作业。
在一些示例中,上述步骤对于单个reducer处理的数据块大小,因默认HDFS数据块为128M,可以选择与HDFS数据块相同大小或一半大小来切分单个reducer处理数据量,最大限度的保证了数据的原有完整性,也能提升数据处理效率。
与现有技术相比,本发明实施例提供的一种任务处理装置的区别在于接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
本发明实施例提供的一种任务处理装置,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
图6为本发明一种实施例提供的电子设备的示意性结构框图。如图6所示,上述的任务处理方法和任务处理整装置的至少一部分可以由电子机设备500实现。该设备500可以包括处理器503和存储器504。
存储器504可以用于储存有可执行程序代码。
处理器503可以用于读取存储器504中存储的可执行程序代码以执行上述的任务处理方法。
因此,与现有技术相比,本发明实施例提供的一种电子设备的区别在于接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。
本发明实施例提供的一种电子设备,通过在Hive集群元数据表中扩充能够体现数据量的数据量信息部分,能够使任务处理系统在接收到Hive作业请求后,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中新扩充的能够体现数据量的数据量信息部分查询上述Hive作业请求所请求作业的目标作业表数据量信息,并根据获取到的目标作业表数据量信息能够对默认配置所需的mapper及reducer数量动态的进行调整,使得任务处理系统能够在运行的作业数量级相差巨大,并且作业任务多变的情况下灵活且高效地实现Hive作业。
在一些说明性示例中,电子设备500还可以包括输入设备501、输入端口502、输出端口505、以及输出设备506。其中,输入端口502、处理器503、存储器504、以及输出端口505通过总线510相互连接,输入设备501和输出设备506分别通过输入端口502和输出端口505与总线510连接,进而与设备500的其他组件连接。
在一些示例中,这里的输出接口和输入接口也可以用I/O接口表示。具体地,输入设备501接收来自外部的输入信息,并通过输入端口502将输入信息传送到处理器503。例如,输入信息为MR测量报告数据。
在一些示例中,处理器503基于存储器504中存储的计算机可执行程序代码或指令对输入信息进行处理以生成输出信息,例如,处理器504执行以下步骤:接收Hive作业请求,根据上述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询上述Hive作业请求所请求作业的目标作业表数据量信息。根据上述目标作业表数据量信息计算mapper任务数量m和reducer任务数量r。依据上述mapper任务数量m和reducer任务数量r进行调整上述Hive作业的参数配置并执行mapper任务和reducer任务。将输出信息临时或者永久地存储在存储器504中,随后在需要时经由输出端口505将输出信息传送到输出设备506。输出设备506将输出信息输出到设备500的外部。
本发明实施例提供了一种计算机可读存储介质,可以包括指令,当指令在计算机上运行时,使得计算机执行上述任务处理方法。
本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任务处理方法。
本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任务处理方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种任务处理方法,其特征在于,所述方法包括:
接收Hive作业请求,根据所述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询所述Hive作业请求所请求作业的目标作业表数据量信息;
根据所述目标作业表数据量信息计算映射器mapper任务数量m和化简器reducer任务数量r;
依据所述mapper任务数量m和reducer任务数量r进行调整所述Hive作业的参数配置并执行mapper任务和reducer任务。
2.根据权利要求1所述的任务处理方法,其特征在于,所述目标作业表数据量信息包括:表记录数和表数据量大小。
3.根据权利要求1所述的任务处理方法,其特征在于,所述接收Hive作业请求,根据Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询所述Hive作业请求所请求作业的目标作业表数据量信息,包括:
接收Hive作业请求,间隔预定时长根据所述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询所述Hive作业请求所请求作业的目标作业表数据量信息。
4.根据权利要求1所述的任务处理方法,其特征在于,所述mapper任务数量m通过下述公式计算得到:
其中,所述n为所述Hive作业请求所请求作业的表记录数,所述ceil()为向上取整函数,所述Qn为所述Hive作业请求所请求作业的表数据量大小,所述mapred.max.split.size为预设数据块block大小,所述k为预设阈值。
5.根据权利要求4所述的任务处理方法,其特征在于,所述reducer任务数量r通过所述reducer任务所处理的数据量R获得,所述reducer任务所处理的数据量R通过下述公式计算得到:
R=ceil(j×nodes×m)
其中,所述ceil()为向上取整函数,所述j为预设阈值,所述nodes为Hive集群节点数。
6.根据权利要求5所述的任务处理方法,其特征在于,所述reducer任务数量r通过以下方式获得:
比较ceil(r/64M)和S/2,其中,所述S为Hive集群总槽slot数量;
当判定ceil(r/64M)大于S/2时,确定所述reducer任务数量r为R/128M;
当判定ceil(r/64M)小于S/2时,确定所述reducer任务数量r为R/64M。
7.根据权利要求5所述的任务处理方法,其特征在于,所述方法还包括:判断所述Hive作业请求是否包括聚类函数,当判定所述Hive作业请求中包括聚类函数,设置所述reducer任务所处理的数据量R为0。
8.根据权利要求3所述的任务处理方法,其特征在于,所述目标作业表数据量信息还包括:最近查询时间。
9.根据权利要求3所述的任务处理方法,其特征在于,所述预定时长为1小时。
10.根据权利要求5所述的任务处理方法,其特征在于,所述k取值为1.1,所述j取值为0.75。
11.一种任务处理装置,其特征在于,所述装置包括:
查询单元,用于接收Hive作业请求,根据所述Hive作业请求中的数据库标识和数据表标识在Hive集群元数据表中查询所述Hive作业请求所请求作业的目标作业表数据量信息;
计算单元,用于根据所述目标作业表数据量信息计算映射器mapper任务数量m和化简器reducer任务数量r;
参数调整单元,用于依据所述mapper任务数量m和reducer任务数量r进行调整所述Hive作业的参数配置并执行mapper任务和reducer任务。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器用于储存有可执行程序代码,所述处理器用于读取所述存储器中存储的可执行程序代码以执行权利要求1至10中任一项所述的任务处理方法。
13.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至10中任一项所述的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487077.6A CN110209645A (zh) | 2017-12-30 | 2017-12-30 | 任务处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487077.6A CN110209645A (zh) | 2017-12-30 | 2017-12-30 | 任务处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110209645A true CN110209645A (zh) | 2019-09-06 |
Family
ID=67778588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711487077.6A Pending CN110209645A (zh) | 2017-12-30 | 2017-12-30 | 任务处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209645A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078665A (zh) * | 2019-12-09 | 2020-04-28 | 苏宁金融科技(南京)有限公司 | 确定hive任务的优化信息的方法、装置、计算机设备和介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101799808A (zh) * | 2009-02-10 | 2010-08-11 | 中国移动通信集团公司 | 一种数据处理方法及其系统 |
CN103218263A (zh) * | 2013-03-12 | 2013-07-24 | 北京航空航天大学 | MapReduce参数的动态确定方法及装置 |
CN103593323A (zh) * | 2013-11-07 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种MapReduce任务资源配置参数的机器学习方法 |
CN104239529A (zh) * | 2014-09-19 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 防止Hive数据倾斜的方法和装置 |
CN104735095A (zh) * | 2013-12-18 | 2015-06-24 | 中国移动通信集团四川有限公司 | 一种云计算平台作业调度方法及装置 |
CN105808354A (zh) * | 2016-03-10 | 2016-07-27 | 西北大学 | 利用WLAN网络组建临时Hadoop环境的方法 |
CN106681823A (zh) * | 2015-11-05 | 2017-05-17 | 田文洪 | 一种处理MapReduce数据倾斜的负载均衡方法 |
US20170169336A1 (en) * | 2015-12-15 | 2017-06-15 | Tata Consultancy Services Limited | Systems and methods for generating performance prediction model and estimating execution time for applications |
-
2017
- 2017-12-30 CN CN201711487077.6A patent/CN110209645A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101799808A (zh) * | 2009-02-10 | 2010-08-11 | 中国移动通信集团公司 | 一种数据处理方法及其系统 |
CN103218263A (zh) * | 2013-03-12 | 2013-07-24 | 北京航空航天大学 | MapReduce参数的动态确定方法及装置 |
CN103593323A (zh) * | 2013-11-07 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种MapReduce任务资源配置参数的机器学习方法 |
CN104735095A (zh) * | 2013-12-18 | 2015-06-24 | 中国移动通信集团四川有限公司 | 一种云计算平台作业调度方法及装置 |
CN104239529A (zh) * | 2014-09-19 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 防止Hive数据倾斜的方法和装置 |
CN106681823A (zh) * | 2015-11-05 | 2017-05-17 | 田文洪 | 一种处理MapReduce数据倾斜的负载均衡方法 |
US20170169336A1 (en) * | 2015-12-15 | 2017-06-15 | Tata Consultancy Services Limited | Systems and methods for generating performance prediction model and estimating execution time for applications |
CN105808354A (zh) * | 2016-03-10 | 2016-07-27 | 西北大学 | 利用WLAN网络组建临时Hadoop环境的方法 |
Non-Patent Citations (1)
Title |
---|
张钊宁: "数据密集型计算中任务调度模型的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078665A (zh) * | 2019-12-09 | 2020-04-28 | 苏宁金融科技(南京)有限公司 | 确定hive任务的优化信息的方法、装置、计算机设备和介质 |
CN111078665B (zh) * | 2019-12-09 | 2023-04-11 | 苏宁金融科技(南京)有限公司 | 确定hive任务的优化信息的方法、装置、计算机设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
US20180285417A1 (en) | Intelligent query parameterization of database workloads | |
US10061858B2 (en) | Method and apparatus for processing exploding data stream | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN110738389A (zh) | 工作流处理方法、装置、计算机设备和存储介质 | |
CN109766349B (zh) | 任务防重方法、装置、计算机设备及存储介质 | |
CN110019267A (zh) | 一种元数据更新方法、装置、系统、电子设备及存储介质 | |
US20140059000A1 (en) | Computer system and parallel distributed processing method | |
CN106503008B (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN105468619B (zh) | 用于数据库连接池的资源分配方法和装置 | |
CN109189572B (zh) | 一种资源预估方法及系统、电子设备和存储介质 | |
US10102098B2 (en) | Method and system for recommending application parameter setting and system specification setting in distributed computation | |
CN110807145A (zh) | 查询引擎获取方法、设备和计算机可读存储介质 | |
CN111355816A (zh) | 服务器选取方法、装置、设备及分布式服务系统 | |
CN109842621A (zh) | 一种减少token存储数量的方法及终端 | |
CN110784336A (zh) | 基于物联网的多设备智能定时延时场景设置方法及系统 | |
Mencagli et al. | Parallel continuous preference queries over out-of-order and bursty data streams | |
CN104765792A (zh) | 一种维度数据存储的方法、装置及系统 | |
CN106940710B (zh) | 信息推送方法及装置 | |
CN110209645A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN111988429A (zh) | 算法调度方法以及系统 | |
CN113297245A (zh) | 获取执行信息的方法及装置 | |
CN115248815A (zh) | 预测查询处理 | |
CN114281549A (zh) | 数据的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190906 |