CN113254437B - 一种批处理作业处理方法和装置 - Google Patents
一种批处理作业处理方法和装置 Download PDFInfo
- Publication number
- CN113254437B CN113254437B CN202010086029.1A CN202010086029A CN113254437B CN 113254437 B CN113254437 B CN 113254437B CN 202010086029 A CN202010086029 A CN 202010086029A CN 113254437 B CN113254437 B CN 113254437B
- Authority
- CN
- China
- Prior art keywords
- batch
- job
- fragments
- node
- data
- 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.)
- Active
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/22—Indexing; Data structures therefor; Storage structures
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种批处理作业处理方法和装置,应用于批处理节点上,所述方法包括:所述批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业;当监听到待处理的批处理作业时,若确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;根据所述分片总数对所述批处理作业分片;根据所述批处理节点参数为批处理节点分配批处理作业分片;在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。该方法能够解决服务器资源浪费,以及不支持数据分片的问题。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种批处理作业处理方法和装置。
背景技术
近年来,随着互联网、移动互联网技术和信息行业的高速发展,大数据在互联网行业、通讯、金融、军事等行业以及物理学、生物学、环境生态学等领域存在已有时日,大数据成为云计算、互联网之后又一大颠覆性的技术革命。企业内部的经营信息、互联网世界中的商品备货售卖物流信息,互联网世界中的人与人交互信息、位置信息等,其数据量已经远远超越现有企业IT架构和基础设施的承受能力,实时性要求也将大大超越现有的计算能力。在支持实时更新的前提下,如何存储这些海量数据,并能灵活地根据某种业务场景实时批量处理这些数据,成为一个难题。
通常海量数据的处理采用写和计算分片的方式,对于实时更新的数据,更要采用这种方式。写入后的计算通常采用实时批处理方式。
现有多实例主备多线程定时批处理方式:主备粒度大,浪费服务器资源。分布式定时任务批处理方式:只做到任务分片,没有做到数据分片;定时任务运行服务器不能根据业务需求分组部署,发布的作业不能做到硬件隔离;部署服务器可以无限发布作业,没有配额限制。
发明内容
有鉴于此,本申请提供一种批处理作业处理方法和装置,能够解决服务器资源浪费,以及不支持数据分片的问题。
为解决上述技术问题,本申请的技术方案是这样实现的:
在一个实施例中,提供了一种批处理作业处理方法,应用于批处理节点上,所述方法包括:
所述批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业;
当监听到待处理的批处理作业时,若确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
根据所述分片总数对所述批处理作业分片;
根据所述批处理节点参数为批处理节点分配批处理作业分片;
在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
在另一个实施例中,提供了一种批处理作业处理装置,应用于批处理节点上,所述装置包括:监听单元、确定单元、获取单元、分片单元、分配单元和存储单元;
所述监听单元,用于所在批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业;
所述确定单元,用于当所述监听单元监听到待处理的批处理作业时,确定所述批处理作业对应的分片标记;
所述获取单元,用于若所述确定单元确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
所述分片单元,用于根据所述获取单元获取的分片总数对所述批处理作业分片;
所述分配单元,用于根据所述获取单元所述批处理节点参数为批处理节点分配所述分片单元中的批处理作业分片;
所述存储单元,用于在所述zk上写入所述分配单元为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
在另一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如所述批处理作业处理方法的步骤。
在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述批处理作业处理方法的步骤。
由上面的技术方案可见,上述实施例中注册中心通过zk实现批处理作业发布,以及相关信息的存储,使批处理服务器的分布式架构通过监听zk上的节点来自动实现批处理业务分片的处理,其中zk上的相关实现通过自动配置系统自动配置实现;该技术方案能够解决服务器资源浪费,以及不支持数据分片的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中批处理作业处理系统;
图2为本申请实施例中数据接入系统示意图;
图3为本申请实施例中接入和处理系统的整体架构示意图;
图4为本申请实施例中批处理作业处理流程示意图;
图5为本申请实施例中批处理作业协调数据在zk中的存储结构示意图;
图6为本申请实施例中应用于上述技术的装置结构示意图;
图7为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本申请实施例中提供一种批处理作业处理方法,应用于批处理作业系统中。参见图1,图1为本申请实施例中批处理作业处理系统。该系统包括:配置系统、注册中心、ES系统和批处理系统。
其中,配置系统包括一个或多个配置设备,用于配置批处理作业名称,触发批处理作业处理的时间、批处理作业的查询结构化查询语言(Structured Query Language,SQL)、数据分片字段等;
注册中心,作为统一配置中心,为分布式批处理作业提供容错机制,选主节点机数据分片机制,协调分布式作业定时处理各自的数据,动态增减并行任务等,本申请实施例通过分布式系统的可靠协调系统(zookeeper,zk)来实现上述各种功能。
ES系统,用于存储批处理作业对应的数据单个ES集群凭借其自身的多副本机制满足高可用地存储数据需求。对于高价值的数据存储,可以将数据双写入两个ES集群,一个ES集群作为主集群,对外提供查询服务;另一个集群作为备用集群,在主集群不可用时,切换至从集群。
ES系统存储的数据可以是从其他系统直接获取并存储,还可以是通过数据接入系统根据配置系统发布的数据接入配置信息接入并存储的;
无论何种方式存储到ES系统中的数据,都存储该数据都对应数据分区大小,用于后续处理批处理作业。
批处理系统包括一个或多个批处理服务器,每个批处理服务器上部署一个或多个实例,每个实例对应一个批处理节点,用于处理批处理作业对应的批处理作业分片数据。
在具体实现时,批处理系统也可以使用备份的方式实现,主系统有故障时,启动被系统实现批处理作业,能够提高系统的容灾能力。
下面给出数据接入系统。参见图2,图2为本申请实施例中数据接入系统示意图。该系统中包括:配置系统、注册中心、接入系统和ES系统。
配置系统包括一个或多个配置设备,用于配置Kafka、ActiveMQ等消息中间件的服务地址、鉴权、主题,消息等接入任务信息,并设置消息属性和ES Type(表)字段的对应关系,补充字段和初始值,消息字段转义映射关系、数据类型转换信息等消息持久化元数据信息。如果消息中没有合适的数据分片字段,设置partitionNum为数据分片字段。
注册中心根据配置中心配置的数据接入配置信息触发接入系统的数据接入。
数据接入系统获取注册中心下发的,或监听到数据中心建立的数据接入任务时,进行数据接入,具体为:
从Kafka、ActiveMQ等消息中间件接入数据,并将数据持久化到Elasticsearch索引中。持久化消息的时候,可以根据需要增加补充字段,消息字段转义,增加数据分片字段。
ES系统,用于存储批处理作业对应的数据,单个ES集群凭借其自身的多副本机制满足高可用地存储数据需求。对于高价值的数据存储,可以将数据双写入两个ES集群,一个ES集群作为主集群,对外提供查询服务;另一个集群作为备用集群,在主集群不可用时,切换至从集群。
本申请实施例中以实现一个订单送达履约异常监控场景。order_info为订单信息表,waybill_status为运单流水表,order_info_topic和waybill_status_topic分别为mysql order_info和waybill_status表binlog发送到Kafka的主题。
order_info_topic数据为JSON格式,例如:
{
"orderNo":"订单号",
"expectArriveTime":"预计送达时间"
}
waybill_status_topic数据也为JSON格式,例如:
{
"vendorId":"订单号",
"operateTime":"操作时间",
"status":物流状态
}
为了避免定制化开发接入各种实时数据,节省开发成本,本发明中的实时数据接入方案采用配置+各种格式消息解析器/自定义消息解析器+(通用消息处理器+计算列)/自定义消息处理器的方式接入实时数据。
接入实时数据任务配置化,任务属性包含消息主题、主题中文名、操作类型(INSERT\UPDATE)、消息格式(JSON/XML)、消息处理器类型(通用处理器\自定义处理器)、业务处理器类名称。
消息属性元数据信息配置化,消息持久化元数据信息包含表字段名称、消息属性名称、消息属性中文名、数据类型(int、long、string、date、double)、字段类型(消息列、转义列、计算列、默认值列)、消息日期格式和持久化日期格式。
订单送达履约监控例子的具体配置如下:
订单信息消息数据元数据配置见表1所示内容:
表1
运单流水消息属性元数据配置见表2所示的内容:
表2
ES表结构见表3所示的内容:
表3
针对数据接入配置信息给出如下描述:
由于从一个消息主题接入的消息属性名称和ES表中字段名称可能不同,不同消息主题中具有相同意义的消息属性名称对应ES表中的一个字段,三者名称可能不同,因此,需要配置消息时需要设置属性名和表字段名称两个字段。
字段类型包含消息列、转义列、计算列、默认值列、数据分片列。消息列表示直接将消息属性值存入对应的表字段中;转义列表示需要从缓存中的基础数据查询出消息属性值的关系值,存入表字段;计算列表示该列的值需要根据其他的消息属性值按照某种业务逻辑计算出来,例如根据预约时间(2018-09-01)和预约波次(09:00-19:00)计算出用户预约时间(2018-04-18 19:00:00)和预约时间段(2018-04-18 09:00-19:00);默认值列通常用于标记某种业务处理状态;数据分片列用于后续分布式定时批处理数据分片。
数据分片列值的计算公式:
主键值的hash值%partitionNumMax;
其中,partitionNumMax为数据分区大小,即数据分片字段partitionNum的最大值加1,partitionNumMax为2的倍数,可以为64、128、256等。partitionNumMax为256时,数据分片列取值范围为[0,255]。
计算列的执行时机是在所有消息列、转义列、默认值列都算出值后。
计算列有通用的计算列接口,计算列是一个继承计算列接口的实现类,在实现类的指定方法内实现特定的业务处理逻辑,将算好的值写入计算列字段中。计算列实现类都通过注解的方式把自己注入到Spring容器中,配置消息的计算列属性时,绑定计算列的组件名即可。
由于采用了配置化的方式,启动接入任务时,自动从数据库获取接入任务信息和消息持久化元数据配置信息,就可以自动接入实时数据。
接入系统接入数据的具体实现过程:
接入系统确定注册中心启动实时消息接入任务,将订单信息和物流信息流水记录两个主题的消息都写入ES表order_waybill_promise_monitor中,两个主题消息中都包含ES表的主键。订单信息先来,执行INSERT操作;物流信息后到,执行UPDATE操作。
下面给出一特殊场景的具体接入实现:
在接入所述数据时,需要通过数据接入系统定制一张宽表。若存在多个主题的消息且仅其中一个主题的消息包含主键,则包含主键的消息对应的主题确定为主主题,未包含主键的消息对应的主题确定为从主题;
若主主题的消息的接入先于从主题的消息,数据接入系统将先到的主主题消息直接写入ES中宽表中,从主题来消息时消息接入系统需要找到宽表主键值,才能把数据更新到宽表中。
根据主主题数据和从主题数据之间的关联关系不同,查找宽表主键值有以下优化策略:
(1)如果主主题消息主键是从主题消息的关联键,数据接入系统能根据从主题消息内容知道宽表主键值,将从主题消息更新到宽表中;
(2)如果主主题消息的非主键字段是从主题消息的关联键,且主主题消息的主键与关联键是一对一关系。为了提高查询宽表主键值速度,写入主主题消息时需要维护一张关系表,主主题关联键作为关系表主键,主主题主键作为关联表的普通字段。当从主题来消息时,数据接入系统根据关联键值批量mget方式查询关系表,获取到宽表主键值,即可将从主题消息更新到宽表中;
(3)如果主主题消息的非主键字段是从主题消息的关联键,且主主题消息的主键与关联键是一对多关系,则在写入主主题消息时需要维护一张关系表,主主题关联键和其主键作为关系表主键,且主主题关联键作为关联表的routing键(ES中根据routing键值确定数据所在分片),当从主题来消息时,根据关联键值查询条件并指定routing键批量msearch方式查询关系表,获取到宽表主键,即可将从主题消息更新到宽表中。
若从主题的消息的接入先于主主题的消息,数据接入系统将从主题消息写入ES中一个单独的表中,主主题来消息时消息接入系统需要从ES中的从主题表里查询到从主题数据,组成宽表数据,写入ES中的宽表。
根据从主题数据和主主题数据之间的关联关系不同,由主主题数据查询从主题数据有以下优化策略:
(1)如果从主题消息主键是主主题消息的关联键,当主主题来消息时,数据接入系统根据关联键值从ES中从主题表里查询到对应从主题数据,和主主题消息组成宽表数据,写入宽表中;
(2)如果从主题消息的非主键字段是主主题消息的关联键,且从主题消息的主键与关联键是一对一关系。为了提高查询从主题数据速度,写入从主题数据时需要维护一张关系表,从主题关联键作为关系表主键,从主题主键作为关联表普通字段。当主主题来消息时,数据接入系统根据关联键值批量mget方式反查关系表,获取到从主题消息主键值,再根据从主题主键值从ES中从主题表里批量mget查询到从主题消息完整数据,和主主题消息组成宽表数据,写入宽表中;
(3)如果从主题消息的非主键字段是主主题消息的关联键,且从主题消息的主键与关联键是一对多关系。在写入从主题消息时维护一张关系表,从主题关联键和其主键作为关系表主键,且从主题关联键作为关联表的routing键(ES中根据routing键值确定数据所在分片),当主主题来消息时,根据关联键值查询条件并指定routing键批量msearch方式查询关系表,获取到从主题消息主键值,再根据从主题主键值批量mget到从主题消息完整数据,和主主题消息组成宽表数据,写入宽表中。
图1和图2也可以合并为一个系统,参见图3,图3为本申请实施例中接入和处理系统的整体架构示意图。图3中的配置系统、注册中心和ES系统为图1和图2中的配置系统、注册中心和ES系统的共用,实现两个系统中对应的功能即可。
下面结合附图,详细说明本申请实施例中批处理作业处理过程:
为了方便平台化管理定时批处理作业信息,配置系统采用页面配置方式将配置任务名称、作业实现类型,执行周期、并发数、批处理节点分组,分片字段、数据表、SQL、备注信息等保存到数据库中。
配置分布式定时批处理作业(这里以定时处理为例,也可以按照需求指定),指定服务器分组(也可以是批处理节点分组,如果指定服务器分组,则一个服务器对应的批处理节点均属于一个分组),发布批处理作业时,检查当前节点是否在任意分组中。如果不在,说明是新节点,则自动注册到指定的服务器组中;如果在某一分组,则进一步判断其所在分组和指定分片是否一致。如果不一致,则中止发布作业,并提示“发布节点在其他分组中,不能发布”;如果一致,则继续发布操作。
将批处理作业按照配置信息(周期触发,或按需触发)发布到注册中心中;
注册中心接收到新发布的批处理作业,即批处理作业在启动时,在zk上创建一个该批处理作业对应的任务节点,并创建一个子节点作为该批处理作业的标记(第一分片标记),注册中心还会从ES系统加载所述批处理作业对应的相关信息。
本申请实施例中涉及到三种分片标记:第一分片标记,表示需要重新分片;第二分片标记,表示已分片完成,也可以通过无标记实现,第三分片标记,表示正在分片。
批处理作业在下述情况之一发生时,对应第一分片标记:
配置系统向注册中心发布批处理作业;即新发布的批处理作业;
批处理节点上线或下线;新增加批处理节点,或者有批处理节点注销;
修改分片总数;
主节点变化,即首次选择主节点,或者重新选择主节点,且选择的主节点不是重新选主节点之前的主节点。
批处理节点启动后,会向zk注册,能够监听到zk上本节点需要处理的任务。
主节点会监听是否存在待处理的批处理作业,以及是否存在自身需要处理的批处理作业分片;以及批处理作业对应的分片标记,以确定如何处理对已的批处理作业。
非主节点会监听zk上是否存在分配给自身需要处理的批处理作业分片,存在时,还需要监听对应批处理作业分片所属的批处理作业的分片标记,以确定是否处理对应的批处理作业分片,
下面结合附图,详细说明批处理节点处理批处理作业的过程。
参见图4,图4为本申请实施例中批处理作业处理流程示意图。具体步骤为:
步骤401,批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业。
批处理节点在启动时,均已注册到zk中,可以监听配置系统在zk上生效的批处理任务。
步骤402,当监听到待处理的批处理作业时,若确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数。
当监听到待处理的批处理作业时,若确定所述批处理作业对应第二分片标记,则从注册中心获取批处理节点参数;执行步骤404。
当监听到的批处理作业对应第一分片标记时,说明这个批处理作业需要重新进行分片;
当监听到的批处理作业对应第二分片标记时,说明这个批处理作业已分片完成,不需要重新分片,直接进行分片分配即可。
步骤403,根据所述分片总数对所述批处理作业分片。
进行分片时,将所述批处理作业均分为分片总数个分片即可。
根据所述分片总数对所述批处理作业分片时,所述方法进一步包括:
将所述批处理作业对应的标记更新为第三分片标记;
根据所述分片总数对所述批处理作业分片结束时,将所述批处理作业对应的标记更新为第二分片标记。
根据所述分片总数对所述批处理作业分片之后,所述方法进一步包括:根据所述分片总数和分片编号拼装每个分片对应的SQL,并在所述zk上写入为所述批处理节点分配的批处理作业分片时,写入所述SQL。
根据所述分片总数和分片编号拼装每个分片对应的SQL,包括:
拼接每个分片的等分查询条件;
将剩余的分区分配给小于remaingPartitionItem的分片中;其中,remaingPartitionItem=(partitionNumMax/shardTotalCount)%shardTotalCount;所述partitionNumMax为数据分区大小,shardTotalCount为分片总数。
针对SQL的拼装,与分片可以采用类似的方式实现:
下面给出一种拼装方式,但是不限于下述实现方案:
拼接第shardItem个分片的等分查询条件,shardItem从0开始到分片总数-1结束;
(shardItem+1)×partitionSize>partitionNum≥shardItem×partitionSize;
将剩余的分区号分配到小于remaingPartitionItem的分片项shardItem中:
partitionNum=remaingPartitionItem+shardItem。
其中,partitionNumMax为数据分区大小,即partitionNum的最大值加1,shardTotalCount为分片总数,partitionSize为分片尺寸,即(partitionNumMax/shardTotalCount),remaingPartitionItem为剩余没有分配的分区个数,即(partitionSize%shardTotalCount)。
以订单送达履约监控例子的查询SQL初始配置为:
SELECT_id,*FROM order_waybill_promise_monitor
WHERE(arrive_process_status=0OR arrive_process_status IS NULL)AND
((expect_arrive_time<=now()AND actual_arrive_time IS NULL)OR(expect_arrive_time<actual_arrive_time))
LIMIT 0,10000
假设总任务数为7,由于最大分区序号为31,数据分片编号0后的SQL为:
SELECT_id,*FROM order_waybill_promise_monitor
WHERE(arrive_process_status=0OR arrive_process_status IS NULL)AND
((expect_arrive_time<=now()AND actual_arrive_time IS NULL)OR(expect_arrive_time<actual_arrive_time))
AND partitionNum IS NOT NULL
AND((partitionNum>=0AND partitionNum<4)OR partitionNum=28)
LIMIT 0,10000。
步骤404,根据所述批处理节点参数为批处理节点分配批处理作业分片。
本步骤中根据所述批处理节点参数为批处理节点分配批处理作业分片,包括:
将分片总数中能被所述批处理节点的总数整除的批处理作业分片均分给所述批处理节点;
在所述批处理节点中选择与剩余的批处理作业分片的总数相同个数的批处理节点分别分配一个批处理作业分片。
上述分配批处理分片的原则是一种均分方式,下面给出一种具体的实现方式:
第n个批处理节点分配的整分分片的编号集合如下:
其中,N-1≥n≥0,n为整数,N为分片总数shardTotalCount:
[n×divisibleShardItemCount,(n+1)×divisibleShardItemCount];
小于remainingShardItem的第m个批处理节点多分的分片的编号为:
shardTotalCount/instantTotalCount×instantTotalCount+m。
其中,instantTotalCount为批处理节点总数,divisibleShardItemCount为每个批处理节点能正分配的分片个数(shardTotalCount/instantTotalCount),remainingShardItem为整分分片后的剩余分片数(shardTotalCount%instantTotalCount)。
针对上述分配方式:假设有4个批处理节点,10个分片,则为每个批处理节点分配的分片的编号的集合分别为[0,1,8]、[2,3,9]、[4,5]、[6,7]。
按照均分的方式,也可以依次遍历每个批处理节点进行分配,分配结果为:[0,4,8]、[1,5,9]、[2,6]、[3,7]。
上述是集中以均衡分配为前提的一种分配方式,不限于具体实现。
步骤405,在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
批处理节点被选为主节点,或被选为非主节点时,监听到zk中存在分配给本节点的批处理作业分片时,通过对应的SQL从ES中获取对应的数据进行批处理作业分片的处理。
进行批处理作业分片的处理时,启动与分配给本节点的批处理作业分片的个数相同的线程数处理所述批处理作业分片。
所述方法进一步包括:
批处理节点被选为主节点或非主节点时,确定分配给其处理的批处理作业分片所属的批处理作业对应第一分片标记,或第三分片标记,则暂停执行批处理作业分片的处理,待所述批处理作业分片所属的批出作业对应第二分片标记,且到达批处理周期时,执行批处理作业分片的处理。
也就是说在批处理作业分片完成后,且执行周期到时,批处理节点才会进行批处理作业分片的处理;否则,等待下一周期,继续确定分片标记,来确定是否处理分配给自身的批处理作业分片,即无论被选为主节点还是非主节点的批处理节点针对分配给其的批处理作业分片,在所述批处理作业分片所属的批处理作业对应的分片标记为第二分片标记,且在执行周期时,才会执行对应批处理作业分片的处理。
在整个批处理作业建立和处理完成过程中,相关协调数据在zk中的存储结构参见图5,图5为本申请实施例中批处理作业协调数据在zk中的存储结构示意图。
图5中服务器ip为批处理系统中的服务器的ip地址,用于标识对应的服务器;应用实例id对应为本申请实施例中批处理节点的id,在一个服务器上可以对应多个应用实例,即多个批处理节点,也可仅对应一个应用实例,即一个批处理节点;重新分配作业标记对应第一分片标记,正在分配作业分片标记对应第三分片标记;图5中第二分片的标记以无标记的方式实现。
本申请实施例中提供的技术方案主要解决支持带有任意更新操作的海量实时数据配置化接入和近实时高可用分布式批处理问题:
实现了一套配置化、自由扩展的实时数据接入ES的方案。
实现了一套配置化、高可用、弹性扩容和缩容的分布式定时作业批处理方案。
只需开发核心批处理业务逻辑,再上传公共文件服务器,然后,使用配置系统上配置下定时批处理作业几个简单的属性:作业名称、批处理业务实现类、定时周期、并行任务数、分片字段、ES表名、待处理数据查询SQL,就可以具备自动数据分片,具备根据业务需求发布到指定的服务器分组的能力,具备通过改变并行任务数动态扩容和缩容计算资源的能力,具备线程级容灾能力。
基于同样的发明构思,本申请实施例中还提供一种批处理作业处理装置,应用于一个批处理节点上。参见图6,图6为本申请实施例中应用于上述技术的装置结构示意图。所述装置包括:监听单元601、确定单元602、获取单元603、分片单元604、分配单元605和存储单元606;
监听单元601,用于所在批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业;
确定单元602,用于当监听单元601监听到待处理的批处理作业时,确定所述批处理作业对应的分片标记;
获取单元603,用于若确定单元602确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
分片单元604,用于根据获取单元603获取的分片总数对所述批处理作业分片;
分配单元605、用于根据获取单元603所述批处理节点参数为批处理节点分配分片单元604中的批处理作业分片;
存储单元606,用于在所述zk上写入分配单元605为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
优选地,
获取单元603,进一步用于若确定单元602确定所述批处理作业对应第二分片标记,则从注册中心获取批处理节点参数;
分配单元605,用于根据获取单元603批处理节点参数为批处理节点分配批处理作业分片。
优选地,所述装置进一步包括:处理单元;
分片单元604,进一步用于所在批处理节点被选为主节点,根据所述分片总数对所述批处理作业分片之后,根据所述分片总数和分片编号拼装每个分片对应的SQL,并在所述zk上写入为所述批处理节点分配的批处理作业分片时,写入所述SQL;
所述处理单元,用于所在批处理节点被选为主节点,或被选为非主节点,监听单元601监听到zk中存在分配给本节点的批处理作业分片时,通过对应的SQL从SE中获取对应的数据进行批处理作业分片的处理。
优选地,
分片单元604,进一步用于根据所述分片总数对所述批处理作业分片时,将所述批处理作业对应的标记更新为第三分片标记;根据所述分片总数对所述批处理作业分片结束时,将所述批处理作业对应的标记更新为第二分片标记。
优选地,
所述处理单元,进一步用于所在批处理节点被选为主节点或非主节点时,确定分配给其处理的批处理作业分片所属的批处理作业对应第一分片标记,或第三分片标记,则暂停执行批处理作业分片的处理,待所述批处理作业分片所属的批出作业对应第二分片标记,且到达批处理周期时,执行批处理作业分片的处理。
优选地,
当配置系统向注册中心发布批处理作业、批处理节点上线或下线、修改分片总数,或主节点变化时,所述批处理作业对应第一分片标记。
优选地,
分配单元605,具体用于根据所述批处理节点参数为批处理节点分配批处理作业分片时,将分片总数中能被所述批处理节点的总数整除的批处理作业分片均分给所述批处理节点;在所述批处理节点中选择与剩余的批处理作业分片的总数相同个数的批处理节点分别分配一个批处理作业分片。
优选地,
分片单元604,具体用于根据所述分片总数和分片编号拼装每个分片对应的SQL时,包括:拼接每个分片的等分查询条件;将剩余的分区分配给小于remaingPartitionItem的分片中;其中,remaingPartitionItem=(partitionNumMax/shardTotalCount)%shardTotalCount;所述partitionNumMax为数据分区大小,shardTotalCount为分片总数。
优选地,
所述待处理的批处理作业对应的数据存储在ES系统中,所述数据在存储时对应存储数据的数据分区大小。
优选地,
所述批处理作业对应的数据由数据接入系统根据配置系统发布的数据接入配置信息接入。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
在另一个实施例中,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述批处理作业处理方法的步骤。
在另一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现所述批处理作业处理方法中的步骤。
图7为本发明实施例提供的电子设备的实体结构示意图。如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行如下方法:
所述批处理节点被选为主节点时,监听注册中心的zk上的待处理的批处理作业;
当监听到待处理的批处理作业时,若确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
根据所述分片总数对所述批处理作业分片;
根据所述批处理节点参数为批处理节点分配批处理作业分片;
在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (13)
1.一种批处理作业处理方法,其特征在于,应用于批处理节点上,所述方法包括:
所述批处理节点被选为主节点时,监听注册中心的分布式系统的可靠协调系统zk上的待处理的批处理作业;
当监听到待处理的批处理作业时,若确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
根据所述分片总数对所述批处理作业分片;
根据所述批处理节点参数为批处理节点分配批处理作业分片;
在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理;
其中,当配置系统向注册中心发布批处理作业、批处理节点上线或下线、修改分片总数,或主节点变化时,所述批处理作业对应第一分片标记。
2.根据权利要求1所述的方法,其特征在于,所述当监听到待处理的批处理作业时,所述方法进一步包括:
若确定所述批处理作业对应第二分片标记,则从注册中心获取批处理节点参数;
根据所述批处理节点参数为批处理节点分配批处理作业分片;
在所述zk上写入为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理。
3.根据权利要求1所述的方法,其特征在于,
所述批处理节点被选为主节点,根据所述分片总数对所述批处理作业分片之后,所述方法进一步包括:根据所述分片总数和分片编号拼装每个分片对应的结构化查询语言SQL,并在所述zk上写入为所述批处理节点分配的批处理作业分片时,写入所述SQL;
所述批处理节点被选为主节点,或被选为非主节点,监听到zk中存在分配给本节点的批处理作业分片时,通过对应的SQL从ES中获取对应的数据进行批处理作业分片的处理。
4.根据权利要求1所述的方法,其特征在于,所述根据所述分片总数对所述批处理作业分片时,所述方法进一步包括:
将所述批处理作业对应的标记更新为第三分片标记;
根据所述分片总数对所述批处理作业分片结束时,将所述批处理作业对应的标记更新为第二分片标记。
5.根据权利要求4所述的方法,其特征在于,所述方法进一步包括:
批处理节点被选为主节点或非主节点时,确定分配给其处理的批处理作业分片所属的批处理作业对应第一分片标记,或第三分片标记,则暂停执行批处理作业分片的处理,待所述批处理作业分片所属的批处理作业对应第二分片标记,且到达批处理周期时,执行批处理作业分片的处理。
6.根据权利要求1所述的方法,其特征在于,所述根据所述批处理节点参数为批处理节点分配批处理作业分片,包括:
将分片总数中能被所述批处理节点的总数整除的批处理作业分片均分给所述批处理节点;
在所述批处理节点中选择与剩余的批处理作业分片的总数相同个数的批处理节点分别分配一个批处理作业分片。
7.根据权利要求3所述的方法,其特征在于,所述根据所述分片总数和分片编号拼装每个分片对应的SQL,包括:
拼接每个分片的等分查询条件;
将剩余的分区分配给小于remaingPartitionItem的分片中;其中,remaingPartitionItem=(partitionNumMax/shardTotalCount)%shardTotalCount;所述partitionNumMax为数据分区大小,shardTotalCount为分片总数。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法进一步包括:
所述待处理的批处理作业对应的数据存储在ES系统中,所述数据在存储时对应存储数据的数据分区大小。
9.根据权利要求8所述的方法,其特征在于,所述方法进一步包括:
所述批处理作业对应的数据由数据接入系统根据配置系统发布的数据接入配置信息接入。
10.根据权利要求9所述的方法,其特征在于,所述方法进一步包括:
在接入所述数据时,通过数据接入系统定制一张宽表;若存在多个主题的消息且仅其中一个主题的消息包含主键,则包含主键的消息对应的主题确定为主主题,未包含主键的消息对应的主题确定为从主题;
若主主题的消息的接入先于从主题的消息,数据接入系统将先到的主主题消息直接写入ES中宽表中,从主题来消息时消息接入系统需要找到宽表主键值,才能把数据更新到宽表中;
若从主题的消息的接入先于主主题的消息,则数据接入系统将从主题消息写入ES中一个单独的表中,主主题来消息时消息接入系统需要从ES中的从主题表里查询到从主题数据,组成宽表数据,写入ES中的宽表。
11.一种批处理作业处理装置,其特征在于,应用于批处理节点上,所述装置包括:监听单元、确定单元、获取单元、分片单元、分配单元和存储单元;
所述监听单元,用于所在批处理节点被选为主节点时,监听注册中心的分布式系统的可靠协调系统zk上的待处理的批处理作业;
所述确定单元,用于当所述监听单元监听到待处理的批处理作业时,确定所述批处理作业对应的分片标记;
所述获取单元,用于若所述确定单元确定所述批处理作业对应第一分片标记,则从所述zk获取分片总数、批处理节点参数;
所述分片单元,用于根据所述获取单元获取的分片总数对所述批处理作业分片;
所述分配单元,用于根据所述获取单元所述批处理节点参数为批处理节点分配所述分片单元中的批处理作业分片;
所述存储单元,用于在所述zk上写入所述分配单元为所述批处理节点分配的批处理作业分片使所述批处理节点在监听到自身对应的批处理作业分片时进行处理;
其中,
当配置系统向注册中心发布批处理作业、批处理节点上线或下线、修改分片总数,或主节点变化时,所述批处理作业对应第一分片标记。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010086029.1A CN113254437B (zh) | 2020-02-11 | 2020-02-11 | 一种批处理作业处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010086029.1A CN113254437B (zh) | 2020-02-11 | 2020-02-11 | 一种批处理作业处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254437A CN113254437A (zh) | 2021-08-13 |
CN113254437B true CN113254437B (zh) | 2023-09-01 |
Family
ID=77219517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010086029.1A Active CN113254437B (zh) | 2020-02-11 | 2020-02-11 | 一种批处理作业处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254437B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113807710B (zh) * | 2021-09-22 | 2023-06-20 | 四川新网银行股份有限公司 | 一种系统批量任务分段并行及动态调度方法及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533738A (zh) * | 2016-10-20 | 2017-03-22 | 中国民生银行股份有限公司 | 分布式批处理的方法、装置和系统 |
US9875272B1 (en) * | 2015-06-23 | 2018-01-23 | Google Inc. | Method and system for designing a database system for high event rate, while maintaining predictable query performance |
CN108984177A (zh) * | 2018-06-21 | 2018-12-11 | 中国铁塔股份有限公司 | 一种数据处理方法及系统 |
CN110109742A (zh) * | 2019-05-09 | 2019-08-09 | 重庆八戒电子商务有限公司 | 一种基于zookeeper的分布式任务协调的方法及装置 |
CN110334091A (zh) * | 2019-05-09 | 2019-10-15 | 重庆天蓬网络有限公司 | 一种数据分片分布式处理方法、系统、介质和电子设备 |
CN110704536A (zh) * | 2019-09-27 | 2020-01-17 | 北京迈格威科技有限公司 | 分布式数据处理方法、装置、系统及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8332443B2 (en) * | 2008-12-19 | 2012-12-11 | Microsoft Corporation | Masterless distributed batch scheduling engine |
US10747607B2 (en) * | 2017-12-28 | 2020-08-18 | Facebook, Inc. | Techniques for dynamic throttling in batched bulk processing |
-
2020
- 2020-02-11 CN CN202010086029.1A patent/CN113254437B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875272B1 (en) * | 2015-06-23 | 2018-01-23 | Google Inc. | Method and system for designing a database system for high event rate, while maintaining predictable query performance |
CN106533738A (zh) * | 2016-10-20 | 2017-03-22 | 中国民生银行股份有限公司 | 分布式批处理的方法、装置和系统 |
CN108984177A (zh) * | 2018-06-21 | 2018-12-11 | 中国铁塔股份有限公司 | 一种数据处理方法及系统 |
CN110109742A (zh) * | 2019-05-09 | 2019-08-09 | 重庆八戒电子商务有限公司 | 一种基于zookeeper的分布式任务协调的方法及装置 |
CN110334091A (zh) * | 2019-05-09 | 2019-10-15 | 重庆天蓬网络有限公司 | 一种数据分片分布式处理方法、系统、介质和电子设备 |
CN110704536A (zh) * | 2019-09-27 | 2020-01-17 | 北京迈格威科技有限公司 | 分布式数据处理方法、装置、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113254437A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106888254B (zh) | 一种基于Kubernetes的容器云架构及其各模块之间的交互方法 | |
US10635648B2 (en) | Entity identifier generation in distributed computing systems | |
JP6893284B2 (ja) | リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体 | |
CN102779185B (zh) | 一种高可用分布式全文索引方法 | |
CN102455942B (zh) | 一种广域网虚拟机动态迁移方法及系统 | |
US9880827B2 (en) | Managing software version upgrades in a multiple computer system environment | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
JP5530759B2 (ja) | リソース連携システム及びリソース連携方法 | |
CN110196885B (zh) | 一种云化分布式实时数据库系统 | |
TW201229795A (en) | Web service patterns for globally distributed service fabric | |
US20120278344A1 (en) | Proximity grids for an in-memory data grid | |
TWI671643B (zh) | 配置變更方法、設備及系統 | |
CN103067425A (zh) | 虚拟机创建方法、虚拟机管理系统及相关设备 | |
CN101146127B (zh) | 一种分布式系统中客户端缓存更新的方法和装置 | |
CN101753608A (zh) | 分布式系统的调度方法及系统 | |
CN102333029A (zh) | 一种服务器集群系统中的路由方法 | |
US20120278817A1 (en) | Event distribution pattern for use with a distributed data grid | |
US8751711B2 (en) | Storage topology manager | |
CN111343219B (zh) | 计算服务云平台 | |
CN102360314A (zh) | 一种数据中心资源管理系统和方法 | |
JP2022505720A (ja) | コンテナ化されたリレーショナルデータベースのi/o消費を効果的に減少させる方法 | |
CN103034540A (zh) | 分布式消息系统及其设备和协调方法 | |
CN103034541A (zh) | 一种分布式消息系统及其中的设备和方法 | |
CN113672240A (zh) | 一种基于容器的多机房批量自动化部署应用的方法及系统 | |
CN110740155B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |