CN116627609A - 基于Hive批处理的调度方法及装置 - Google Patents

基于Hive批处理的调度方法及装置 Download PDF

Info

Publication number
CN116627609A
CN116627609A CN202310596440.7A CN202310596440A CN116627609A CN 116627609 A CN116627609 A CN 116627609A CN 202310596440 A CN202310596440 A CN 202310596440A CN 116627609 A CN116627609 A CN 116627609A
Authority
CN
China
Prior art keywords
task
data
batch processing
scheduling
datax
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
Application number
CN202310596440.7A
Other languages
English (en)
Inventor
于海峰
张欣
李卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202310596440.7A priority Critical patent/CN116627609A/zh
Publication of CN116627609A publication Critical patent/CN116627609A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于Hive批处理的调度方法及装置,涉及大数据领域,其中该方法包括:通过预设任务调度组件调度ODS任务、DWD和DWT任务、及ADS任务实现批处理任务流调度:ODS任务:在通过DataX对贴源层进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据该标识生成DataX所需要的Json文件;DWD和DWT任务:用Shell脚本设置多个子进程并发执行多个HQL文件;ADS任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据该标识生成DataX所需要的Json文件。本发明可以高效准确地进行基于Hive的批处理调度。

Description

基于Hive批处理的调度方法及装置
技术领域
本发明涉及大数据技术领域,尤其涉及一种基于Hive批处理的调度方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
传统的大数据批处理流程,前端埋点产生的日志数据可能通过Flume-Kafka-Flume的框架形式,将日志文件导入HDFS当中,而后端的业务数据(以Mysql举例),可能通过Sqoop/Datax的方式,导入到HDFS当中,然后在Hive中进行数仓建模分层,最终将执行指标结果推送到Mysql、即系查询组件等。
以Mysql to HDFS举例,通过Datax进行数据抽取固然效率高,但缺点是每个任务都需要单独写一个Json文件进行执行,如果任务多,开发人员难免在生成Json文件的过程中消耗大量时间,并且手动生成的方式也存在出错的可能性。
再以Hive中分层批处理举例,如果将同一层的多个批处理文件(即多个HQL文件)串行执行,那么如果多个批处理之间没有逻辑依赖关系,这种串行的批处理方式显然速度很慢不可取。
发明内容
本发明实施例提供一种基于Hive批处理的调度方法,用以高效准确地进行基于Hive的批处理调度,该方法包括:
通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:
ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
DWD和DWT批处理任务:在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
所述基于Hive批处理的调度方法还包括:在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
在一个实施例中,上述基于Hive批处理的调度方法还可以包括:通过数据抽取Shell脚本,用DataX对贴源层ODS进行数据抽取;所述Shell脚本中设置有并发的多个数据抽取子Shell进程。
在一个实施例中,所述数据抽取子Shell进程的并发数目根据服务器资源量进行设置。
在一个实施例中,上述基于Hive批处理的调度方法还可以包括:根据Hadoop集群的资源情况,动态调整所述多个子进程的并发数目。
在一个实施例中,所述Shell脚本内还增加了失败重试的机制,以避免因为特殊情况导致任务执行失败的情况。
在一个实施例中,上述基于Hive批处理的调度方法还可以包括:利用执行状态的监控脚本监控任务的执行状态,将任务的执行状态插入到运维数据库当中,使得运维人员直观地排查问题;所述执行状态的监控脚本被嵌入至批处理任务流中。
在一个实施例中,所述预设任务调度组件为DolphinScheduler调度组件。
本发明实施例还提供一种基于Hive批处理的调度装置,用以高效准确地进行基于Hive的批处理调度,该装置包括:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:
ODS批处理任务,用于在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
DWD和DWT批处理任务,用于在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
ADS批处理任务,用于在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
所述基于Hive批处理的调度装置还包括捕获单元,用于在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;检测单元,用于在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
在一个实施例中,ODS批处理任务还用于:通过数据抽取Shell脚本,用DataX对贴源层ODS进行数据抽取;所述Shell脚本中设置有并发的多个数据抽取子Shell进程。
在一个实施例中,所述数据抽取子Shell进程的并发数目根据服务器资源量进行设置。
在一个实施例中,所述DWD和DWT批处理任务还用于根据Hadoop集群的资源情况,动态调整所述多个子进程的并发数目。
在一个实施例中,所述Shell脚本内还增加了失败重试的机制,以避免因为特殊情况导致任务执行失败的情况。
在一个实施例中,上述基于Hive批处理的调度装置还可以包括:监控单元,用于利用执行状态的监控脚本监控任务的执行状态,将任务的执行状态插入到运维数据库当中,使得运维人员直观地排查问题;所述执行状态的监控脚本被嵌入至批处理任务流中。
在一个实施例中,所述预设任务调度组件为DolphinScheduler调度组件。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于Hive批处理的调度方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于Hive批处理的调度方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于Hive批处理的调度方法。
本发明实施例中提供的基于Hive批处理的调度方案,工作时:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:ODS批处理任务。
本发明实施例提供的基于Hive批处理的调度方案的有益技术效果是:
首先,ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件,实现了基于通过半自动化的方式生成DataX所需要的Json文件,方便开发人员高效准确地进行ODS数据贴源。
其次,在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中,实现通过在Shell脚本中增加并发的方式,使得基于Spark引擎的Hive批处理任务更加高效。
再次,在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态。
最后,在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
综上,本发明实施例提供的基于Hive批处理的调度方案可以高效准确地进行基于Hive的批处理调度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中基于Hive批处理的调度方法的流程示意图;
图2为本发明实施例中基于Hive批处理的调度装置的结构示意图;
图3为本发明一实施例的计算机设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
在介绍本发明实施例之前,首先对本发明涉及的名词进行介绍。
1、Hive on Spark:Hive是基于Hadoop的一个数仓工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质上是将HQL转化为MapReduce程序。但是默认的MR引擎计算效率很低,可以将MR引擎替换为Spark引擎,提高计算速度。
2、批处理:指对某对象进行批量的处理,比如连续对多条结构化数据进行ETL清洗工作。
3、DataX:是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据、HDFS、Hive、HBase等各种异构数据源之间稳定高效的数据同步功能。
4、DolphinScheduler:是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
5、任务及任务状态:任务指为达成某种目的而进行的某项操作。比如为了抽取数据而进行的一个datax的抽数job,即一个任务。而任务状态指在整个任务生命周期中,指定任意时点时任务的执行状态,通常包含:任务未执行、任务开始执行、任务执行中、任务执行结束。其中任务执行结束又可分为“执行成功”和“执行失败”两种状态。
6、任务流:指一系列任务组成的任务组,通过任务调度的方式来执行。
7、ODS:数仓的常见分层之一,OperationDataStore,即原始数据层,存放原始数据,直接加载原始日志、数据,对数据原貌不做处理。
8、DWD:数仓的常见分层之一,DataWarehouseDetail,即明细数据层,对ODS层数据进行清洗(去空值、去脏数据等)、维度退化、脱敏等操作。
9、DWT:数仓的常见分层之一,DataWarehouseTopic,即数据主题层,以DWD为基础,按主题进行汇总,通常汇总结果为以某个主题为中心的宽表,用于后续处理。
10、ADS:数仓的常见分层之一,ApplicationDataStore,即数据应用层,为各种统计报表提供数据,为最终计算的指标值。
图1为本发明实施例中基于Hive批处理的调度方法的流程示意图,通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度,如图1所示,该方法包括如下步骤:
步骤101:ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
步骤102:DWD和DWT批处理任务:在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
步骤103:ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
步骤104:在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;
步骤105:在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
本发明实施例中提供的基于Hive批处理的调度方法,工作时:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:ODS批处理任务。
本发明实施例提供的基于Hive批处理的调度方法的有益技术效果是:
首先,ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件,实现了基于通过半自动化的方式生成DataX所需要的Json文件,方便开发人员高效准确地进行ODS数据贴源。
其次,在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中,实现通过在Shell脚本中增加并发的方式,使得基于Spark引擎的Hive批处理任务更加高效。
再次,在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态。
最后,在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
综上,本发明实施例提供的基于Hive批处理的调度方法可以高效准确地进行基于Hive的批处理调度。下面对该基于Hive批处理的调度方法进行详细介绍。
本发明实施例公开了一种基于Hive批处理的调度方法,该方法涉及数据交换范围内的数据管理技术,具体包括:基于通过半自动化的方式生成DataX所需要的Json文件,方便开发人员进行ODS数据贴源;通过在Shell脚本中增加并发的方式,使得基于Spark引擎的Hive批处理任务更加高效;通过在任务流调度过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件针对性的发送给对应项目的开发及运维人员,使开发人员和运维人员可以更快速的获取任务执行状态;通过在任务流调度过程结束后,增加数据量判断的运维脚本,判断调度的所有内容(比如加工宽表等)是否有数据,使开发人员和运维人员可以及时判断任务执行成功是否为“伪成功”的空数据(比如依赖的表数据量为零,那么加工宽表会成功,但是宽表内的数据量同样为零)。下面进行详细介绍。
本发明实施例所描述的解决方案,主要为了解决企业在数据化转型期间,提高传统批处理开发、执行效率问题以及尽可能的提高执行结果的准确性。
传统的大数据批处理流程,前端埋点产生的日志数据可能通过Flume-Kafka-Flume的框架形式,将日志文件导入HDFS当中,而后端的业务数据(以Mysql举例),可能通过Sqoop/Datax的方式,导入到HDFS当中,然后在Hive中进行数仓建模分层,不同的企业分层情况也不同,可能是四层,可能是五层(如阿里提供的数仓分层模型为五层,增加了DWS层),最终将执行指标结果推送到Mysql、即系查询组件等。
以Mysql to HDFS举例,通过Datax进行数据抽取固然效率高,但缺点是每个任务都需要单独写一个Json文件进行执行,如果任务多,开发人员难免在生成Json文件的过程中消耗大量时间,并且手动生成的方式也存在出错的可能性,因此通过半自动化生成Json文件即可解决这个问题。
再以Hive中分层批处理举例,如果将同一层的多个批处理文件(即多个HQL文件)串行执行,那么如果多个批处理之间没有逻辑依赖关系,这种串行的批处理方式显然速度很慢不可取,所以如果调度任务的Shell脚本中加入并行逻辑,即可很大程度上提高批处理执行效率。
再以判断任务调度执行结果准确性的方向出发进行分析,如果企业内部不支持外联网络,那么传统的任务调度软件(如Azkaban、DolphinScheduler)就没法向开发人员发送邮件、短信提醒,这样一来,就需要在任务调度内部增加企业内部邮件提醒的服务,从而让开发运维人员第一时间获取任务调度状态提醒。即在一个实施例中,上述基于Hive批处理的调度方法还可以包括:在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态。
同时,可以增加批处理执行结果数据量监控的服务,可以让开发运维人员在任务执行成功之后,判断任务执行结果是否有数据、执行结果是否正常,是否为“伪成功”。即在一个实施例中,上述基于Hive批处理的调度方法还可以包括:在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
本发明实施例提供的解决方案,针对传统批处理,详细改进步骤描述如下:
1.对于ODS贴源层抽数(此处标记为01):
(1)通过Python脚本进行Json文件自动化生成,通过配置模板,可以一次性生成一个或者多个Json文件,并且后续增加新的贴源表,只需要填写配置模板(数据库信息)然后用脚本直接生成Json文件即可,即ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件。相比于传统批处理而言,减少了开发人员对于Json文件编写的繁琐工作。
(2)通过sh脚本(此处简称01.sh),用Datax进行贴源层ODS数据抽取。相对于传统批处理而言,用多个子Shell进程进行并发执行,可以根据服务器资源量,同时对数十个贴源表进行数据抽取,极大的提高了批处理效率,即在一个实施例中,所述数据抽取子Shell进程的并发数目根据服务器资源量进行设置。即在一个实施例中,上述基于Hive批处理的调度方法还可以包括:通过数据抽取Shell脚本,用DataX对贴源层ODS进行数据抽取;所述Shell脚本中设置有并发的多个数据抽取子Shell进程。
2.对于DWD、DWT层批处理(此处标记为02,03):
(1)传统批处理可能把不同的加工逻辑(hql指令)统一拼接为字符串,然后在sh脚本中通过hive-e的形式执行,这样做的缺点就是如果某个hql指令失败则全部停止。为了避免这种情况,通常情况下会将不同的加工逻辑,写到不同的hql文件当中,然后通过hive命令直接执行。但是传统Shell脚本同样是单线程执行,如果hql文件很多,执行起来会很慢(即便是用了Spark引擎),即DWD和DWT批处理任务:在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中。
(2)通过sh脚本(此处标记为02.sh,03.sh),在传统批处理的基础上,用多个子进程进行并发执行多个hql文件,并且根据Hadoop集群的资源情况,动态的调整并发数量,做到尽最大可能的利用集群资源、最快速度的完成批处理,即在一个实施例中,上述基于Hive批处理的调度方法还可以包括:根据Hadoop集群的资源情况,动态调整所述多个子进程的并发数目。另外,在脚本内还增加了失败重试的机制,从而避免因为特殊情况导致任务偶然失败,在一个实施例中,所述Shell脚本内还增加了失败重试的机制,以避免因为特殊情况导致任务执行失败的情况。这样一来整体上既充分利用集群资源、又提高了批处理的时效性和准确性,并且某一个调度逻辑(hql文件)执行失败,不会影响到其他逻辑的继续执行,但是这里有个问题,调度失败后继续执行,整体调度成功,最终的调度作业会显示成功,这里通过错误捕获的方式,将执行错误的内容发送给运维人员,从而提高批处理准确性,具体内容写在后文。
3.对于ADS层推数(此处标记为04),道理同ODS层抽数一样,通过半自动生成Json格式的方式,使用DataX并发的推送到目标数据库(04.sh)。
4.最终,增加一层数据量排查脚本(此处标记为05.sh),通过访问HDFS对应文件路径或者Mysql中的数据,进行数据量排查。如果数据量为0,将该表及表的前后逻辑涉及到的其他表信息,通过邮件发送给运维人员,方便运维人员进行判断。
5.另外,还包括的优先方案是:
(1)整体上(01-05)脚本内均增加日志捕获的能力,针对捕获不同项目的错误日志发送给不同的运维人员,可以更好更快的定位问题,项目人员也可以仅通过查看邮件的方式,判断批处理执行是否成功,而非从调度工具的执行结果去判断(如果部分失败,整体成功,调度工具显示最终状态为成功),也不用从调度工具的海量日志中查询执行失败的日志内容。
(2)整体上(01-04)增加了执行状态的监控。编写获取执行状态的监控脚本,在01-04的sh中进行嵌入调用,然后把执行状态插入到运维数据库当中,可以让运维人员更加直观的排查问题(比如某个批处理环节阻塞,任务状态一直处于执行中,可以通过运维数据库,判断是哪个调度逻辑阻塞,进行中的status为0)。即在一个实施例中,上述基于Hive批处理的调度方法还可以包括:利用执行状态的监控脚本监控任务的执行状态,将任务的执行状态插入到运维数据库当中,使得运维人员直观地排查问题;所述执行状态的监控脚本被嵌入至批处理任务流中。。
6.最终,整体批处理调度,采用DolphinScheduler进行任务流定时调度,调度内容简述如下:01.sh-02.sh-03.sh-04.sh-05.sh-发送邮件。即在一个实施例中,所述预设任务调度组件为DolphinScheduler调度组件。
本发明实施例所描述的方案目前适用于企业内部非互联网网络,并且保密级别较低的场景,实现了:
第一,通过半自动生成Json文件,极大地提高了开发人员DataX任务的工作效率。并且该逻辑同样可用于其他自动化生成Json文件的场景。
第二,脚本内部多线程的方式,同时采用Hive on Spark的处理引擎,极大地提高了批处理执行效率。
第三,调度脚本内部逻辑中,增加了失败重试、任务状态维护、错误日志捕捉、执行结果邮件通知、执行结果数据量准确性判断等内容,方便开发运维人员在批处理作业中,更加高效的对执行结果进行判断。
经过发明人大量的实践经验,本发明实施例提供的批处理调度方案,适用于绝大多数传统批处理作业。在生产测试过程中可以发现,以Hive的MR引擎串行执行任务,再到Hive on Spark引擎并发执行调度的效率来看,时间比为10:1。
本发明实施例中还提供了一种基于Hive批处理的调度装置,如下面的实施例所述。由于该装置解决问题的原理与基于Hive批处理的调度方法相似,因此该装置的实施可以参见基于Hive批处理的调度方法的实施,重复之处不再赘述。
图2为本发明实施例中基于Hive批处理的调度装置的结构示意图,该装置包括:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:
ODS批处理任务01,用于在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
DWD和DWT批处理任务02,用于在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
ADS批处理任务03,用于在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
所述基于Hive批处理的调度装置还包括捕获单元04,用于在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;检测单元05,用于在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
本发明实施例中提供的基于Hive批处理的调度装置,工作时:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:ODS批处理任务。
本发明实施例提供的基于Hive批处理的调度装置的有益技术效果是:
首先,ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件,实现了基于通过半自动化的方式生成DataX所需要的Json文件,方便开发人员高效准确地进行ODS数据贴源。
其次,在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中,实现通过在Shell脚本中增加并发的方式,使得基于Spark引擎的Hive批处理任务更加高效。
再次,在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态。
最后,在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
综上,本发明实施例提供的基于Hive批处理的调度装置可以高效准确地进行基于Hive的批处理调度。下面对该基于Hive批处理的调度装置进行详细介绍。
在一个实施例中,ODS批处理任务还可以用于:通过数据抽取Shell脚本,用DataX对贴源层ODS进行数据抽取;所述Shell脚本中设置有并发的多个数据抽取子Shell进程。
在一个实施例中,所述数据抽取子Shell进程的并发数目可以根据服务器资源量进行设置。
在一个实施例中,所述DWD和DWT批处理任务还可以用于根据Hadoop集群的资源情况,动态调整所述多个子进程的并发数目。
在一个实施例中,所述Shell脚本内还可以增加了失败重试的机制,以避免因为特殊情况导致任务执行失败的情况。
在一个实施例中,上述基于Hive批处理的调度装置还可以包括:监控单元,用于利用执行状态的监控脚本监控任务的执行状态,将任务的执行状态插入到运维数据库当中,使得运维人员直观地排查问题;所述执行状态的监控脚本被嵌入至批处理任务流中。
在一个实施例中,所述预设任务调度组件可以为DolphinScheduler调度组件。
基于前述发明构思,如图3所示,本发明还提出了一种计算机设备500,包括存储器510、处理器520及存储在存储器510上并可在处理器520上运行的计算机程序530,所述处理器520执行所述计算机程序530时实现前述基于Hive批处理的调度方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于Hive批处理的调度方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于Hive批处理的调度方法。
本发明实施例中提供的基于Hive批处理的调度方案,工作时:通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:ODS批处理任务。
本发明实施例提供的基于Hive批处理的调度方案的有益技术效果是:
首先,ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件,实现了基于通过半自动化的方式生成DataX所需要的Json文件,方便开发人员高效准确地进行ODS数据贴源。
其次,在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中,实现通过在Shell脚本中增加并发的方式,使得基于Spark引擎的Hive批处理任务更加高效。
再次,在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态。
最后,在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
综上,本发明实施例提供的基于Hive批处理的调度方案可以高效准确地进行基于Hive的批处理调度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种基于Hive批处理的调度方法,其特征在于,包括通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:
ODS批处理任务:在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
DWD和DWT批处理任务:在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
ADS批处理任务:在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
所述基于Hive批处理的调度方法还包括:在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
2.如权利要求1所述的方法,其特征在于,还包括:通过数据抽取Shell脚本,用DataX对贴源层ODS进行数据抽取;所述Shell脚本中设置有并发的多个数据抽取子Shell进程。
3.如权利要求2所述的方法,其特征在于,所述数据抽取子Shell进程的并发数目根据服务器资源量进行设置。
4.如权利要求1所述的方法,其特征在于,还包括:根据Hadoop集群的资源情况,动态调整所述多个子进程的并发数目。
5.如权利要求1所述的方法,其特征在于,所述Shell脚本内还增加了失败重试的机制,以避免因为特殊情况导致任务执行失败的情况。
6.如权利要求1所述的方法,其特征在于,还包括:利用执行状态的监控脚本监控任务的执行状态,将任务的执行状态插入到运维数据库当中,使得运维人员直观地排查问题;所述执行状态的监控脚本被嵌入至批处理任务流中。
7.如权利要求1所述的方法,其特征在于,所述预设任务调度组件为DolphinScheduler调度组件。
8.一种基于Hive批处理的调度装置,其特征在于,包括通过预设任务调度组件调度ODS批处理任务、DWD和DWT批处理任务、以及ADS批处理任务实现批处理任务流调度:
ODS批处理任务,用于在通过DataX对贴源层ODS进行数据抽取时,接收用户通过配置模板输入的多个数据抽取任务标识;根据多个数据抽取任务标识,利用预设Python脚本生成DataX所需要的Json文件;
DWD和DWT批处理任务,用于在对明细数据层DWD和数据主题层DWT批处理时,用Shell脚本设置多个子进程并发执行多个HQL文件;其中,不同的加工逻辑被写到不同的HQL文件当中;
ADS批处理任务,用于在通过DataX对数据应用层ADS进行数据推送时,接收用户通过配置模板输入的多个数据推送任务标识;根据多个数据推送任务标识,利用预设Python脚本生成DataX所需要的Json文件;
所述基于Hive批处理的调度装置还包括捕获单元,用于在任务流调度的过程中,将调度日志用脚本进行全量筛查,捕获对应项目的错误日志并通过邮件发送给对应项目的开发人员或运维人员,使得开发人员或运维人员及时获取任务执行状态;检测单元,用于在任务流调度过程结束后,利用数据量判断的运维脚本判断调度的所有内容是否有数据,使得开发人员和运维人员及时判断任务执行成功是否为伪成功的空数据。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。
CN202310596440.7A 2023-05-24 2023-05-24 基于Hive批处理的调度方法及装置 Pending CN116627609A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310596440.7A CN116627609A (zh) 2023-05-24 2023-05-24 基于Hive批处理的调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310596440.7A CN116627609A (zh) 2023-05-24 2023-05-24 基于Hive批处理的调度方法及装置

Publications (1)

Publication Number Publication Date
CN116627609A true CN116627609A (zh) 2023-08-22

Family

ID=87637708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310596440.7A Pending CN116627609A (zh) 2023-05-24 2023-05-24 基于Hive批处理的调度方法及装置

Country Status (1)

Country Link
CN (1) CN116627609A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117056391A (zh) * 2023-10-13 2023-11-14 深圳大道云科技有限公司 数据自动推送方法、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117056391A (zh) * 2023-10-13 2023-11-14 深圳大道云科技有限公司 数据自动推送方法、设备及存储介质

Similar Documents

Publication Publication Date Title
CN110321152B (zh) 一种软件开发平台
CN109684053B (zh) 大数据的任务调度方法和系统
CN107273286B (zh) 针对任务应用的场景自动化测试平台及方法
CN105719126B (zh) 一种基于生命周期模型的互联网大数据任务调度的系统及方法
CN111400011B (zh) 一种实时任务调度方法、系统、设备及可读存储介质
CN107807815B (zh) 分布式处理任务的方法和装置
CN116627609A (zh) 基于Hive批处理的调度方法及装置
CN112131315A (zh) 多任务并行开发下的数据库同步方法及装置
CN113094162A (zh) 一种任务依赖关系更新方法、装置及存储介质
CN115834654B (zh) 一种基于多重映射的数据高效传输方法
CN114416703A (zh) 数据完整性自动监控方法、装置、设备及介质
CN114372105A (zh) 基于etl工具实现系统自动化巡检方法
CN112559525B (zh) 数据检查系统、方法、装置和服务器
CN115185825A (zh) 接口测试的调度方法及装置
CN112988705B (zh) 一种可用于企业级生产的数据中台构建方法
CN113946543A (zh) 基于人工智能的数据归档方法、装置、设备及存储介质
US8631391B2 (en) Method and a system for process discovery
CN111160403B (zh) 一种api接口复用发现的方法及装置
CN101751260A (zh) 一种基于动态标签的业务对象持久化处理方法
CN116450305B (zh) 基于分布式任务调度的soar平台组件执行方法与装置
CN113535352B (zh) 一种基于调度配置生成血缘关系实现自动跑批的测试方法
CN117421153B (zh) 一种铁路货车故障图像识别模型自动化测试系统及方法
CN113839839B (zh) 一种多线程并发通信的测试方法及系统
CN112825044A (zh) 任务执行方法、装置及计算机存储介质
CN117493361A (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