一种数据流处理方法及系统与流程

文档序号:17858461发布日期:2019-06-11 22:42阅读:189来源:国知局
一种数据流处理方法及系统与流程

本发明涉及大数据处理领域,特别涉及一种数据流处理方法及系统。



背景技术:

现有技术中,通常会在集群的各个节点中启动flume服务来实现将数据源source的数据转存到sink端中。

在实现本发明的过程中,发明人发现:由于节点设备发生常规故障(如死锁、消费异常等)时,系统无感知,需要人工处理,影响故障处理的时效性;另外,由于同一集群的各节点采用相同的配置,但各节点的业务数据量参差不齐,容易导致flume收集线程空闲比例偏大;此外,由于新业务上线操作比较频繁,且需要人工修改业务配置文件,修改时需要重启整个集群,从而影响到同集群中的其他业务的正常执行。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一,为此本发明提供一种数据流处理方法及系统。

本发明实施例提供的具体技术方案如下:

第一方面,提供了一种数据流处理方法,所述方法包括:

由zookeeper集群确定若干master节点中的一个作为主节点;

由所述主节点提供对外接口以接收业务的上线请求,并为所述业务分配任务;以及

根据多个worker节点各自上报的当前状态信息,生成所述任务的配置信息并写入所述zookeeper集群中,所述配置信息包括指示被调度以执行所述任务的worker节点的信息;

所述worker节点若监听到所述zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行。

进一步地,所述由zookeeper集群确定若干master节点中的一个作为主节点包括:

所述zookeeper集群接收所述master节点基于预设触发事件发起的主节点选举请求,并在选举成功后使得所述master节点作为主节点,其中,所述预设触发事件为如下事件之一:

所述master节点被启动;

作为主节点的当前master节点发生故障。

进一步地,所述根据多个worker节点各自上报的当前状态信息,生成所述任务的配置信息包括:

根据所述多个worker节点各自上报的主机运行状态信息,确定所述多个worker节点中主机运行状态最佳的目标worker节点;

生成指示将所述任务调度至所述目标worker节点的配置信息。

进一步地,所述方法还包括:

由所述主节点根据所述多个worker节点各自上报的主机运行状态信息和任务执行状态信息,对所述任务的配置信息进行调整;

其中,调整后的所述任务的配置信息指示对处于空闲状态的任务进行缩容处理,并对和处于堆积状态的任务进行扩容处理;以及

将主机负载处于过载状态的worker节点上的任务迁移到主机负载处于空闲状态的worker节点上进行执行。

进一步地,所述方法还包括:

所述主节点通过所述对外接口接收对所述业务的下线请求;以及

将所述业务的下线信息和为所述业务分配的任务的下线信息写入到所述zookeeper集群中,以使执行所述任务的worker节点停止flume服务。

第二方面,提供了一种数据流处理系统,所述系统包括zookeeper集群、若干master节点和多个worker节点,其中:

所述zookeeper集群,用于确定若干master节点中的一个作为主节点;

所述主节点,用于提供对外接口以接收业务的上线请求,并为所述业务分配任务;

所述主节点,还用于根据多个worker节点各自上报的当前状态信息,生成所述任务的配置信息并写入所述zookeeper集群中,所述配置信息包括指示被调度以执行所述任务的worker节点的信息;

所述worker节点,用于若监听到所述zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行。

进一步地,所述zookeeper集群具体用于:

接收所述master节点基于预设触发事件发起的主节点选举请求,并在选举成功后使得所述master节点作为主节点,其中,所述预设触发事件为如下事件之一:

所述master节点被启动;

作为主节点的当前master节点发生故障。

进一步地,所述主节点具体用于:

根据所述多个worker节点各自上报的主机运行状态信息,确定所述多个worker节点中主机运行状态最佳的目标worker节点;

生成指示将所述任务调度至所述目标worker节点的配置信息。

进一步地,所述主节点具体还用于:

由所述主节点根据所述多个worker节点各自上报的主机运行状态信息和任务执行状态信息,对所述任务的配置信息进行调整;

其中,调整后的所述任务的配置信息指示对处于空闲状态的任务进行缩容处理,并对和处于堆积状态的任务进行扩容处理;以及

将主机负载处于过载状态的worker节点上的任务迁移到主机负载处于空闲状态的worker节点上进行执行。

进一步地,所述主节点具体还用于:

通过所述对外接口接收对所述业务的下线请求;以及

将所述业务的下线信息和为所述业务分配的任务的下线信息写入到所述zookeeper集群中,以使执行所述任务的worker节点停止flume服务。

本发明实施例提供的技术方案带来的有益效果是:

1、通过由zookeeper集群确定若干master节点中的一个作为主节点,从而使得master节点通过zookeeper集群实现高可用机制,保证了其中一台master节点出现问题的情况下,另一台master节点会短时间内快速接管对外服务,提升flume服务的可用性,同时也解决了现有技术中节点设备发生常规故障时处理不及时而影响处理时效性的问题。

2、通过由主节点提供对外接口,能够便于用户直接调用主节点的对外接口对任务进行上下线,可实现将业务上下线的操作时间缩短到1分钟内,从而极大地简化了业务上下线操作,并且,在更新配置时,无需人工修改业务配置文件,也无需重启集群,只需要重启业务,由此降低了业务之间的相互影响。

3、通过由主节点由主节点根据多个worker节点各自上报的主机运行状态信息,生成任务的配置信息并写入zookeeper集群中,worker节点若监听到zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行,由此实现了通过zookeeper集群对配置的统一管理,避免了flume收集线程空闲比例偏大的问题,从而解决了资源使用不均和浪费的问题,同时也提升了运维的便利性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的一种数据流处理方法的流程图;

图2是本发明实施例二提供的一种数据流处理系统的框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在介绍本发明实施例前,首先对几个技术术语进行简单的介绍:

zookeeper:属于hadoop的子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

flume:是一种高可用、高可靠和分布式的海量日志采集、聚合和传输的技术。

本发明实施例提供了一种数据流处理方法,该方法可以由数据流处理系统执行,该系统采用分布式主从架构,包括zookeeper集群、若干master节点和多个worker节点,其中,各个master节点和各个worker节点需要先在zookeeper集群中注册服务器节点,从而可以通过zookeeper集群对各个master节点和各个worker进行统一管理;各个master节点、各个worker节点可以分别配置对应一台硬件服务器,master节点和worker节点的具体个数可以由用户根据自身业务应用场景所决定,在此不作具体限定。在本发明实施例中,各个worker节点分别启动flume服务,将flume服务用作数据转存工具,负责将数据源source的数据转存到sink端中。

图1是本发明实施例一提供的一种数据流处理方法的流程图,如图1所示,该方法可以包括步骤:

101、由zookeeper集群确定若干master节点中的一个作为主节点。

其中,master节点的个数可以为两个,其中一个master节点被确定作为主节点时,另外一个master节点被确定作为备用节点。当master节点被确定作为主节点时,该master节点可以提供对外服务,提供对外接口供业务上线、下线、查看、修改等,并负责任务的调度。

具体的,zookeeper集群接收master节点基于预设触发事件发起的主节点选举请求,并在选举成功后使得master节点作为主节点。

在一个示例性的实现过程中,预设触发事件可以为master节点被启动。

具体来说,master节点在执行启动命令后,该master节点会向zookeeper集群中发起参与主节点(即leader节点)的选举请求,若zookeeper集群确定已经存在作为主节点的activemaster节点时,则该master节点选举失败,zookeeper集群将该master节点的状态记录为standby状态;若zookeeper集群确定不存在作为主节点的activemaster节点时,则该master节点选举成功,zookeeper集群将该master节点的状态记录为active状态。处于active状态的master节点对外提供服务。

在又一个示例性的实现过程中,预设触发事件可以作为主节点的当前master节点发生故障。

具体来说,若作为主节点的当前master节点发生故障,由zookeeper集群获取该当前master节点的故障信息,并接收除该当前master节点之外的其他master节点中发出的选举请求,在预设时间内从其他master节点中确定一个master节点作为主节点,其中,该选举过程可以是在其他master节点中将主机性能最佳的master节点选举为主节点,本发明实施例对此不加以限定。

需要说明的是,当一个master节点被选举作为主节点后,则该master节点会启动多个功能模块,多个功能模块具体可以包括restserver、rpcserver和scheduler,其中restserver负责业务的增删改查,rpcserver负责接收worker节点上报的当前状态信息,scheduler负责动态的调度分配task。

此外,zookeeper集群中还存储有工作目录,包括但不限于:

leader,用于master节点选主的临时节点;

master,存放activemaster的serviceurl;

jobs,存储job数据的目录节点;

workers,用于worker节点发现的临时节点;

assign/<worker-id>/分配任务的列表,即一个worker节点一个目录节点。

本发明实施例中,通过由zookeeper集群确定若干master节点中的一个作为主节点,从而使得master节点通过zookeeper集群实现高可用机制,保证了其中一台master节点出现问题的情况下,另一台master节点会短时间内快速接管对外服务,同时也解决了现有技术中节点设备发生常规故障时处理不及时而影响处理时效性的问题。

102、由主节点提供对外接口以接收业务的上线请求,并为业务分配任务。

具体的,由从若干master节点中确定出的主节点提供对外接口,对外接口可以用于接收业务(亦即job)的上线请求,用户可以通过业务申请界面调用对外接口对业务进行上线,其中,该业务的上线请求携带有使用json格式传入的业务的配置信息;该主节点根据业务的配置信息初始化业务参数,并为业务进行分配任务,其中,任务(亦即task),是job在worker节点上的执行单元,负责从source端读数据,并转存到sink端。

本发明实施例中,通过由主节点提供对外接口,可以便于用户直接调用主节点的对外接口对任务进行上下线,可实现将业务上下线的操作时间缩短到1分钟内,从而简化了业务上下线操作,并且,在更新配置时,无需人工修改业务配置文件,也无需重启集群,只需要重启业务,由此降低了业务之间的相互影响。

103、由主节点根据多个worker节点各自上报的主机运行状态信息,生成任务的配置信息并写入zookeeper集群中,配置信息包括指示被调度以执行任务的worker节点的信息。

其中,主机运行状态信息包括cpu使用率、内存使用率、磁盘读写和网络上下行中的一种或多种。

具体的,该过程可以包括:

根据多个worker节点各自上报的主机运行状态信息,确定多个worker节点中主机运行状态最佳的目标worker节点;生成指示将任务调度至目标worker节点的配置信息。

本实施例中,各个worker节点在被启动后,会启动report线程,负责对自身的主机的运行状态进行监控,生成主机运行状态信息并上报给作为主节点的master节点。

104、worker节点若监听到zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行。

具体的,各个worker节点分别监听zookeeper集群中的状态,若监听到zookeeper集群中有新增的任务,且该任务是调度给自己的任务时,则从zookeeper集群中获取该任务的配置信息,并启动flume服务进行执行,其中,各个worker节点分别部署有flume服务。

本发明实施例中,通过由主节点生成任务的配置信息并写入zookeeper集群中,worker节点若监听到zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行,由此实现了通过zookeeper集群对配置的统一管理,避免了flume收集线程空闲比例偏大的问题,从而解决了资源使用不均和浪费的问题,同时也提升了运维的便利性。

作为进一步的优选实施例,本发明实施例提供的方法还可以包括:

由主节点根据多个worker节点各自上报的主机运行状态信息和任务执行状态信息,对任务的配置信息进行调整。

其中,调整后的任务的配置信息指示对处于空闲状态的任务进行缩容处理,并对和处于堆积状态的任务进行扩容处理;以及

将主机负载处于过载状态的worker节点上的任务迁移到主机负载处于空闲状态的worker节点上进行执行。

其中,任务执行状态信息包括任务执行速度和任务堆积量。

具体的,各个worker节点会将本机上的任务的执行状态信息和主机状态信息发送给主节点;

主节点根据任务执行状态信息,确定空闲状态的任务和处于堆积状态的任务,将处于空闲状态的任务(idletask)和处于堆积状态的任务(busytask)分别加入到idletask队列和busytask队列,并对idletask进行自动缩容,以及对busytask进行主动扩容;

主节点根据各个worker节点的主机运行状态信息,确定主机过载状态的worker节点和主机负载处于空闲状态,并将主机负载处于过载状态的worker节点上的任务迁移到主机负载处于空闲状态的worker节点上进行执行。

本发明实施例中,通过由主节点根据多个worker节点各自上报的主机运行状态信息和任务执行状态信息,对任务的配置信息进行调整,能够确保在worker节点的主机负载较高、集群机器负载不均衡的时候,将主机负载较高的worker节点上的task迁移到其他的worker节点进行执行,由此实现了集群间的worker节点和task负载均衡,且实现了worker节点的高可用性,提升了flume服务的可用性,同时也解决了资源使用不均和浪费的问题。

作为进一步的优选实施例,本发明实施例提供的方法还可以包括:

主节点通过对外接口接收对业务的下线请求;以及

将业务的下线信息和为业务分配的任务的下线信息写入到zookeeper集群中,以使执行任务的worker节点停止flume服务。

具体的,主节点提供对外接口以接收业务(亦即job)的下线请求,主节点将下线的业务的状态标记为下线,然后将业务的下线信息和为该业务分配的任务的下线信息维护到zookeeper集群中;执行该任务的worker节点从zookeeper集群中监控到任务的下线信息时,则会执行task的stop命令,停掉flume服务,若与该业务相关的所有的任务停止执行之后,该业务完成下线。

图2是本发明实施例二提供的一种数据流处理系统的框图,该系统包括zookeeper集群10、若干master节点20和多个worker节点30,如图2所示,master节点20的个数可以配置为两个,包括master节点21和master节点22,当其中一个master节点作为主节点时,另一个master节点作为备用节点,worker节点30的个数可以配置为三个,包括worker节点31、worker节点32和worker节点33,其中:

zookeeper集群,用于确定若干master节点中的一个作为主节点;

主节点,用于提供对外接口以接收业务的上线请求,并为业务分配任务;

主节点,还用于根据多个worker节点各自上报的当前状态信息,生成任务的配置信息并写入zookeeper集群中,配置信息包括指示被调度以执行任务的worker节点的信息;

worker节点,用于若监听到zookeeper集群中存在调度给自己的任务,则启动flume服务进行执行。

进一步地,zookeeper集群具体用于:

接收master节点基于预设触发事件发起的主节点选举请求,并在选举成功后使得master节点作为主节点,其中,预设触发事件为如下事件之一:

master节点被启动;

作为主节点的当前master节点发生故障。

进一步地,主节点具体用于:

根据多个worker节点各自上报的主机运行状态信息,确定多个worker节点中主机运行状态最佳的目标worker节点;

生成指示将任务调度至目标worker节点的配置信息。

进一步地,主节点具体还用于:

由主节点根据多个worker节点各自上报的主机运行状态信息和任务执行状态信息,对任务的配置信息进行调整;

其中,调整后的任务的配置信息指示对处于空闲状态的任务进行缩容处理,并对和处于堆积状态的任务进行扩容处理;以及

将主机负载处于过载状态的worker节点上的任务迁移到主机负载处于空闲状态的worker节点上进行执行。

进一步地,主节点具体还用于:

通过对外接口接收对业务的下线请求;以及

将业务的下线信息和为业务分配的任务的下线信息写入到zookeeper集群中,以使执行任务的worker节点停止flume服务。

需要说明的是:上述实施例提供的数据流处理系统中,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述数据流处理系统与数据流处理方法实施例属于同一构思,其具体实现过程和有益效果详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关联的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1