掌桥专利:专业的专利平台
掌桥专利
首页

一种数据传输方法、装置、电子设备及可读存储介质

文献发布时间:2024-04-18 19:58:53


一种数据传输方法、装置、电子设备及可读存储介质

技术领域

本发明实施例涉及多机房数据交互技术领域,特别是涉及一种数据传输方法、一种数据传输装置、一种电子设备以及一种计算机可读存储介质。

背景技术

随着大数据业务的高速发展,业务数据的生产速度变得越来越快,离线集群规模快速膨胀,既有机房内的机位急剧消耗,在可预见的不久的将来会达到机房容量上限,阻塞业务的发展。因此,如何解决单机房容量以成为数据存储的瓶颈,针对但机房的容量问题,采用多机房方案(scale out)来解决,即一个机房容量有限,扩展为多个机房,同时对既有架构进行一定的改造,保证用户视角仍像是一个机房。此举可依据业务需要,采用灵活的方式增量扩容,从而在一定程度上避免容量冗余问题。但相关技术仍在跨机房进行数据交互时,各机房间网络带宽一般也存在瓶颈;同时,网络的抖动或断网可能造成跨机房业务出现异常。

发明内容

本发明实施例是提供一种数据传输方法、装置、电子设备以及计算机可读存储介质,以解决多机房方案中网络带宽不足的问题。

本发明实施例公开了一种数据传输方法,其特征在于,所述方法应用于业务部署全局控制层,所述业务部署全局控制层配置有对应的目标机房,所述目标机房配置有目标资源调度平台YARN和目标文件存储系统HDFS,所述目标文件存储系统HDFS具有对应的目标路由器HDFS Router,包括:

确定主作业数据;

发起复制服务,并生成针对所述主作业数据的异地机房副本数据;

向所述目标资源调度平台YARN发送所述异地机房副本数据;

获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;

采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据。

可选地,所述业务部署全局控制层搭载有依赖关系解决程序,所述业务部署全局控制层还配置有对应的初始机房,所述初始机房用于储存初始数据,所述确定主作业数据的步骤包括:

采用所述依赖关系解决程序生成作业关系链划分模型;

采用所述作业关系链划分模型生成针对所述初始数据的回路有向图DAG,并基于所述回路有向图DAG确定初始数据中的数据依赖关系;具有不同所述数据依赖关系的作业数据为不同类型的作业数据;

通过所述数据依赖关系确定主作业数据。

可选地,所述业务部署全局控制层包括数据管理器DataManager,所述数据管理器DataManager用于储存所述主作业数据。

可选地,所述数据管理器DataManager设置有对应的数据复制服务器,所述业务部署全局控制层包括作业管理平台,所述作业管理平台设置有对应的蜂巢元储存器HiveMetaStore,所述生成针对所述主作业数据的异地机房副本数据的步骤包括:

获取由所述蜂巢元储存器Hive MetaStore生成的活动信息Event;

通过所述活动信息Event确定出符合所述数据管理器DataManager的规则库中的规则路径,当检测到生成针对所述活动信息Event的热点表的新分区时,调用所述数据复制服务器生成异地机房副本。

可选地,所述生成针对所述主作业数据的异地机房副本数据的步骤包括:

生成针对所述主作业数据的数据快照,并将所述数据快照确定为异地机房副本。

可选地,所述初始机房配置有初始资源调度平台YARN和初始文件存储系统HDFS,所述初始文件存储系统HDFS具有对应的初始路由器HDFS Router,还包括:

当所述用户IP与所述初始机房的直连网络对应时,基于与所述用户IP从所述初始机房中确定出与所述用户IP最近的第二目标服务器;

采用所述初始路由器HDFS Router向所述第二目标服务器发送所述主作业数据。

可选地,还包括:

判断所述目标资源调度平台YARN是否完成数据副本准备操作;其中,所述数据副本准备操作包括校验数据副本的版本信息;

当判定所述目标资源调度平台YARN完成数据副本准备操作时,执行所述发起复制服务,并生成针对所述主作业数据的异地机房副本数据的步骤。

可选地,还包括:

判断是否接收到与所述用户IP对应的访问令牌;

当判定接收到所述访问令牌,且所述访问令牌符合预设校验规则时,调用路由器HDFS Router向目标服务器发送所述异地机房副本数据或所述主作业数据。

可选地,所述目标文件存储系统HDFS和所述初始文件存储系统HDFS分别具有对应的引擎端程序和数据节点端程序,还包括:

确定针对所述异地机房副本数据的计划内流量信息;

获取除所述计划内流量信息以外的计划外流量信息;

基于所述计划外流量信息优化所述引擎端程序和所述数据节点端程序。

本发明实施例还公开了一种数据传输装置,所述装置应用于业务部署全局控制层,所述业务部署全局控制层配置有对应的目标机房,所述目标机房配置有目标资源调度平台YARN和目标文件存储系统HDFS,所述目标文件存储系统HDFS具有对应的目标路由器HDFS Router,包括:

主作业数据确定模块,用于确定主作业数据;

异地机房副本数据生成模块,用于发起复制服务,并生成针对所述主作业数据的异地机房副本数据;

异地机房副本数据发送模块,用于向所述目标资源调度平台YARN发送所述异地机房副本数据;

用户IP获取模块,用于获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;

异地机房副本数据发送模块,用于采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据。

本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。

本发明实施例还公开了一种计算机程序产品,该程序产品被存储在存储介质中,该计算机程序产品被至少一个处理器执行以实现如本发明实施例所述的方法。

本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。

本发明实施例包括以下优点:

本发明实施例,通过确定主作业数据;发起复制服务,并生成针对所述主作业数据的异地机房副本数据;向所述目标资源调度平台YARN发送所述异地机房副本数据;获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据,解决了机房容量瓶颈以及多机房方案中网络带宽不足的问题,降低了多机房方案网络抖动/断网问题带来的影响,保证多机房架构的服务性能和稳定性。

附图说明

图1是本发明实施例中提供的一种数据传输方法的步骤流程图;

图2是本发明实施例中提供的一种业务部署全局控制层的结构示意图;

图3是本发明实施例中提供的一种数据传输方法的流程示意图;

图4是本发明实施例中提供的一种针对作业数据依赖关系的无回路有向图;

图5是本发明实施例中提供的一种数据复制流程示意图;

图6是本发明实施例中提供的一种路由流程示意图;

图7是本发明实施例中提供的另一种路由流程示意图;

图8是本发明实施例中提供的一种版本校验流程示意图;

图9是本发明实施例中提供的一种访问令牌发放流程示意图;

图10是本发明实施例提供的一种日志收集流程示意图;

图11是本发明实施例中提供的一种数据传输装置的结构框图;

图12是实现本发明各个实施例的一种电子设备的硬件结构示意图;

图13是本发明实施例中提供的一种计算机可读介质的示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

离线场景主要是批量处理场景,是对海量历史数据进行离线分析/处理的场景,该场景对延迟不敏感,但由于其处理数据量巨大,对网络带宽等资源消耗较大;另外,生产场景中作业数量一般较多且执行时间不受控,若两个机房的主机只是简单叠加在一起做为一个集群来用,可能会存在大量的跨机房互访,产生大量的随机流量打满有限的跨机房带宽,此时除离线自身受影响外,还可能对其它跨机房业务造成影响。因此,如何防止跨机房随机流量打满跨机房带宽是多机房方案要解决的一个重要问题。

跨城网络会受供应商服务质量影响(或施工影响)造成抖动(或断网),与机房内交换架构CLOS的网络质量相比会低很多。若两个机房的主机当做为一个集群来用,当网络抖动时,不但会导致跨机房读写延迟增加,还会影响数据节点DN(DataNode)的IBR(优化处理代码相关实现)等过程,造成服务性能和稳定性下降;当网络出现严重问题造成断网时,会导致异地机房数据不可用,还会导致异地机房DN失联,造成大量街区设备Block低于预期副本数,触发名称节点NN(NameNode)大量补副本等问题。因此,如何降低网络抖动及网络连通性问题带来的影响是多机房方案要解决的另外一个不可忽视的问题。

如上所述,多机房的主要矛盾是跨机房网络带宽不足、稳定性差与离线海量数据处理任务高效产出之间的矛盾,解决该主要矛盾面临的核心问题是如何减少跨机房带宽的消耗,以及如何降低网络稳定性问题带来的影响。

在本申请发明人调研中发现,单元化架构是为解决多地多中心问题演进而来的部署架构,其中,单元是指一个能完成所有业务操作的自包含集合,在这个集合中包含了业务所需的所有服务,以及分配给这个单元的数据。按照单元化的思路,在多机房场景中,每个机房可以作为一个单元,每个单元内提供作业执行所需要的全部服务以及数据,保证作业在单元内完成,从而解决上述多机房面临的核心问题;单元化拆分后任何一个单元的故障只会影响局部,不会造成整体瘫痪;在选定采用单元化思想来设计了多机房方案之后,多机房方案的核心问题就限定在了如何决定作业与数据放置,以及如何让作业访问距离近的数据,来降低跨机房带宽的消耗及网络稳定性问题带来的影响。

因此,本发明实施例采用有限的单元化思想设计多机房方案,每个机房部署一套独立的完整的资源调度平台YARN&HDFS(Hadoop Distributed File System,文件存储系统),为作业在一个机房内执行提供最基本的服务保障,从而在跨机房网络出现异常时,降低影响范围;同时,通过合理的作业放置和有计划的数据复制,消除跨机房随机访问流量及跨机房数据重复消费等问题,来达到降低带宽消耗的目的;另外,通过结合内部的基础设施情况,以及满足表和非表两种场景的需求,此方案选择了基于扩展HDFS Router(RBF),RBF(Router-based Federation,基于路由的联合方案)多挂载点来实现数据副本管理和数据路由功能,并通过Client IP感知自动将数据请求路由至较近的机房。

从实践的结果来看该方案在很大程度上解决了跨机房网络带宽不足、稳定性差与离线任务高效产出之间的矛盾。在抗网络连通性风险方面的能力有显著效果,可进一步降低网络问题的影响范围,同时赋予部分高优化作业“双活”的能力。

参照图1,示出了本发明实施例中提供的一种数据传输方法的步骤流程图,具体可以包括如下步骤:

步骤101,确定主作业数据;

步骤102,发起复制服务,并生成针对所述主作业数据的异地机房副本数据;

步骤103,向所述目标资源调度平台YARN发送所述异地机房副本数据;

步骤104,获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;

步骤105,采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据。

在具体实现中,本发明实施例可以应用于业务部署全局控制层Globalcontroller layer(Archer),参考图2,图2是本发明实施例中提供的一种业务部署全局控制层的结构示意图,业务部署全局控制层可以局域有多个对应的机房,目标机房可以是任何接收异地机房副本数据的机房,其中,每个机房都可以配置有资源调度平台YARN和文件存储系统HDFS,文件存储系统HDFS具有对应的目标路由器HDFS Router。本发明实施例为每个机房部署一套独立的完整的集群(YARN和HDFS),为作业在一个机房内执行提供最基本的服务保障,在跨机房网络出现异常时,降低影响范围;同时通过合理的作业放置和有计划的数据复制,消除跨机房随机访问流量及跨机房数据重复消费等问题,降低带宽消耗的;另外结合内部的基础设施情况,满足表和非表两种场景的需求,选择基于扩展HDFS Router多挂载点实现数据副本管理和数据路由功能,并可以通过Client IP感知自动将数据请求路由至较近的机房。

参考图3,图3是本发明实施例中提供的一种数据传输方法的流程示意图;

示例性地,业务部署全局控制层Global controller layer(Archer)可以通过周期性的分析作业间依赖关系及依赖的数据大小,确定作业放置位置信息并进行持久化储存于数据管理器DataManager,DataManager用于管理作业放置信息等,当作业调度平台提交作业时,先获取作业的放置机房(初始机房)信息,并检查预期放置机房(目标机房)的数据副本是否准备完毕,若准备完毕,则可以提交作业,若未准备完毕,则阻塞提交,等待数据复制服务完成复制数据;其次,作业调度提交后,拉起蜂巢驱动Hive Driver生成可执行计划,向预期直连网络DC(Direct Connect)的Yarn集群提交作业Job。同时在Yarn层面也做了改造,当Yarn集群拉起作业Job时,被拉起的作业请求HDFS数据,HDFS Router依据Client IP(用户IP)所属的DC信息,自动将请求路由到距离Client最近的数据复本所在机房的NS,并将结果返回Client。

通过上述方式,首先采用多机房方案解决了单机房容量瓶颈问题;之后采用有限的单元化思想设计多机房方案,每个机房部署一套独立的完整的集群(YARN&HDFS),并基于扩展HDFS Router(RBF)多挂载点来实现数据副本管理和数据路由功能,通过Client IP感知自动将数据请求路由至较近的机房,解决了机房容量瓶颈以及多机房方案中网络带宽不足的问题,降低了多机房方案网络抖动/断网问题带来的影响,保证多机房架构的服务性能和稳定性。

本发明实施例,通过确定主作业数据;发起复制服务,并生成针对所述主作业数据的异地机房副本数据;向所述目标资源调度平台YARN发送所述异地机房副本数据;获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据,解决了机房容量瓶颈以及多机房方案中网络带宽不足的问题,降低了多机房方案网络抖动/断网问题带来的影响,保证多机房架构的服务性能和稳定性。

在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。

本发明实施例提供的数据交互流程包括作业放置、数据复制、数据路由、版本控制、数据限流、跨机房流量分析等几个阶段,上述Job提交流程并未完全涵盖,下文实现部分将对所有阶段进行详细说明。

在本发明的一个可选地实施例中,所述业务部署全局控制层搭载有依赖关系解决程序,所述业务部署全局控制层还配置有对应的初始机房,所述初始机房用于储存初始数据,所述确定主作业数据的步骤包括:

采用所述依赖关系解决程序生成作业关系链划分模型;

采用所述作业关系链划分模型生成针对所述初始数据的回路有向图DAG,并基于所述回路有向图DAG确定初始数据中的数据依赖关系;具有不同所述数据依赖关系的作业数据为不同类型的作业数据;

通过所述数据依赖关系确定主作业数据。

在实际应用中,大数据离线场景,作业数量多,作业之间依赖复杂。如大数据离线报表处理业务,从数据采集,清洗,到各个层级的报表的汇总运算,到最后数据导出到外部业务系统,一个完整的业务流程,可能涉及成百上千个相互交叉依赖关联的作业。针对作业放置,对复杂作业依赖的管理和分析工作至关重要,因此需要聚焦作业依赖分析以确定要迁移的业务。

在具体实现中,本发明实施例的业务部署全局控制层可以搭载有依赖关系解决程序,业务部署全局控制层还配置有对应的初始机房,初始机房可以用于储存初始数据,依赖关系解决程序可以依据作业间依赖关系及需要处理的数据大小,基于社区发现(CommunityDetection)生成了考虑跨机房带宽代价的作业关系链划分模型。作业关系链划分模型首先依据调度系统管理的作业间的依赖关系构建无回路有向图DAG(Directed AcyclicGraph),然后从DAG图中圈出相对高内聚(相对比较闭环)的业务子单元,最后结合相互依赖的子单元间的数据量选择出的可以迁移的子单元。

参考图4,图4是本发明实施例中提供的一种针对作业数据依赖关系的表达示意图,可以假定图中正方形代表计算,圆形代表数据,圆的大小代表数据的大小,这样可以把虚线作为划分边界将DAG分成两个子单元,分别调度到两个机房,就能满足数据传输代价小的目标。整个过程除了考虑跨机房数据访问代价外,还需要考虑机房计算和存储资源是否可以满足需求。

示例性地,一般来说实际生产中的ETL(Extract-Transform-Load,微服务架构)等周期性调度作业相对比较稳定,不会频繁发生变化,甚至部分作业不会出现变化,因此,确定作业Job放置在机房的依赖分析过程可以以天或周为单位周期性的离线计算产生;另外,从管理的角度来看,公司一般会有多个相对比较独立的业务部门,每个业务部门又会垂直的划分出多个业务子单元,业务内的作业间联系紧密程度远大于业务之间;同时,业务(单元)也是资源管理单元,以及多机房落地实施过程中的沟通单元;因此在实践中往往是以业务单元为边界进行依赖划分。

当然,上述例子仅作为示例,本领域技术人员还可以采用其他任意划分方式作为依赖划分,对此本发明实施例不作限制。

可选地,所述业务部署全局控制层包括数据管理器DataManager,所述数据管理器DataManager用于储存所述主作业数据。

生产环境中一般会存在多个作业调度平台,将作业Job放置在机房的信息维护在任一平台都不能涵盖所有作业,参考图2,本发明实施例引入了数据管理器DataManager服务作为接入层,用来管理作业放置的IDC(Internet Data Center,互联网数据中心)信息和需要进行数据复制的路径信息,平台可以通过对接该服务来接入多机房体系。

在本发明的一个可选地实施例中,所述数据管理器DataManager设置有对应的数据复制服务器,所述业务部署全局控制层包括作业管理平台,所述作业管理平台设置有对应的蜂巢元储存器Hive MetaStore,所述生成针对所述主作业数据的异地机房副本数据的步骤包括:

获取由所述蜂巢元储存器Hive MetaStore生成的活动信息Event;

通过所述活动信息Event确定出符合所述数据管理器DataManager的规则库中的规则路径,当检测到生成针对所述活动信息Event的热点表的新分区时,调用所述数据复制服务器生成异地机房副本。

在实际应用中,作业放置会将有联系紧密的作业Job通常会放在一个机房,以减少跨机房访问,进而减少跨机房网络带宽消耗;对于无法消除的跨机房依赖,特别是异地机房使用频次大于1的数据,需要异地机房也存在数据副本,以降低网络带宽消耗;因此,本发明实施例提供了数据复制服务来进行副本复制。

数据复制服务基于数据复制工具DistCp实现,并在正确性、原子性、幂等性、传输效率等方面作了增强,同时支持流控、多租户传输优先级(高优作业能得到更多跨机房流量和计算资源配额),副本生命周期管理等功能。

具体地,数据复制主要针对有规律的周期性调度作业进行,这类作业一般比较固定,通过对作业历史运行记录进行分析即可推测出作业的输入输出情况,包括数据路径和使用的数据范围等信息,这样可以防止长时间跨度回刷任务大量复制。所以当确定好待迁移的作业后,可以提炼出数据路径规则(rules),并持久化到DataManager的规则库中,其中,规则库会随作业放置的变化而进行周期性更新。

针对不同的场景使用规则库进行路径抽取,下面以数据仓库工具Hive表场景为例,描述数据复制流程,如图5所示,图5是本发明实施例中提供的一种数据复制流程示意图,首先收集Hive MetaStore的挂载表/分区相关的Event信息至Kafka服务,然后通过实时Flink任务清洗出符合上述规则库中规则的路径,当检测到热点表的新分区生成后,交由数据复制服务(DRS)进行传输,生成异地机房副本,DRS本质上是一个DistCp作业的管理服务,在传输完成后由数据复制服务持久化副本信息(包括路径、版本、TTL等),以对副本数据进行全生命周期管理(删除过期的跨机房副本,释放存储空间)。

可选地,所述生成针对所述主作业数据的异地机房副本数据的步骤包括:

生成针对所述主作业数据的数据快照,并将所述数据快照确定为异地机房副本。

上述复制流程采用自动发现主动复制的策略,它可以快速捕获并准备数据副本,也可以有效满足离线场景的业务需要;上述自动发现主动复制的策略,可以有效解决增量数据副本的问题,但对于待迁移作业来说,可能还依赖较长一段时间的存量数据,针对该问题,除了采用提前启动复制流程的方式准备存量数据外,可以针对需要快速迁移的场景,引入基于快照Snapshot的数据迁移策略进行初始复制。

在本发明的一个可选地实施例中,所述初始机房配置有初始资源调度平台YARN和初始文件存储系统HDFS,所述初始文件存储系统HDFS具有对应的初始路由器HDFS Router,还包括:

当所述用户IP与所述初始机房的直连网络对应时,基于与所述用户IP从所述初始机房中确定出与所述用户IP最近的第二目标服务器;

采用所述初始路由器HDFS Router向所述第二目标服务器发送所述主作业数据。

在实际应用中,数据拷贝后双机房均会存在某路径的数据副本,当作业放置到IDC后如何定位到正确的数据是数据路由服务要解决的关键问题。

在基于HDFS Router的多挂载点实现的MergeFs的基础上,实现镜像挂载点来实现数据路由功能。为方便描述,可以约定原始数据为主作业数据,传输到异地机房的数据为异地机房副本数据(也称为镜像数据,该数据只允许读取和删除),并且约定镜像挂载点中第一挂载点为主作业数据,之后的挂载点为异地机房副本数据(理论上可以扩展多个机房),为了在路由层面做到对用户透明,可以在镜像挂载点的处理逻辑中,增加了请求来源的IP位置感知功能,该功能能过获取请求来源IP的位置信息,判断请求来源的DC并将请求路由到相应的DC的HDFS。

参考图6,图6是本发明实施例中提供的一种路由流程示意图,若数据请求来自DC1,则Router将数据请求重定向到DC1的HDFS集群,来自DC2则定向到DC2的HDFS集群。为了降低跨机房带宽的消耗,原则上规定所有对数据的读取操作,都只允许在本地机房(即Client所在机房),否则先拷贝到本地机房。但特殊情况下,参考图7,图7是本发明实施例中提供的另一种路由流程示意图,若数据复制服务Data Replication Service发生异常短时间无法修复或服务器NS长时间异常时,则允许降级为跨机房限流读(副本未ready情况,超过一定的时间未在目标机房读取到数据,则降级)。

可选地,如果在生产时存在一种特殊的临时库,用于管理用户SQL(StructuredQuery Language,结构化查询语言)作业中的创建的短生命周期的临时表(Temporarytable,七天自动清理),该类临时表表名不固定(例如一些ETL作业会在临时表名上加上日期后缀),因此会造成了表类路径不固定;针对该类路径不固定的情况,无法使用上述镜像挂载点进行管理,因此,可以引入一种名叫IDC_FOLLOW的多挂载点,用于挂载多个机房中的临时库路径;当读写临时表时,会依据用户Client所在的DC选择DC内HDFS NS挂载路径来存取数据,从而解决临时表跨机房流量的问题。

在本发明的一个可选地实施例中,还包括:

判断所述目标资源调度平台YARN是否完成数据副本准备操作;其中,所述数据副本准备操作包括校验数据副本的版本信息;

当判定所述目标资源调度平台YARN完成数据副本准备操作时,执行所述发起复制服务,并生成针对所述主作业数据的异地机房副本数据的步骤。

在具体实现中,在分布式场景下,通过数据复制方式产生副本,不可避免会导致一致性问题,所以多机房存在数据副本时,除了涉及上述路由选择问题外,还必须考虑数据版本一致性问题。

本发明实施例可以通过引入版本服务(Version)解决该问题;为了简化版本服务设计,针对大数据离线场景写少读多的特性,依据CAP理论对镜像挂载点的实现做了一定的取舍,规定了对主数据可以进行所有操作,副本数据只允许读/删操作;在这个前提下,此方法引入了基于HDFS的编辑日志Editlog的版本服务,参考图8,图8是本发明实施例中提供的一种版本校验流程示意图,该服务以观察者的身份监控向HDFS JN(JournalNodes,期刊节点)订阅路径的变更行为,并以操作ID(transaction id)来标识数据版本;若订阅的路径中数据发生了变化,则会通过editlog传导到JN,再由JN通知版本插件Version进行版本更新;因所有对数据的变更操作都会记录editlog,所以,不论SQL场景和非SQL场景,只要数据存在变化均可被版本服务捕捉到,从而可以有效保证数据的一致性。

上文第一节总体流程所描述的提交作业时,当获取到作业预期的放置机房后,检查依赖数据是否Ready的工作也包括版本检查工作;当作业需要副本数据时,会通过数据传输服务检查已传输的数据副本的版本与版本服务中订阅的最新版本是否一致,若一致允许作业提交使用数据副本;否则,作业临时阻塞,待传输服务更新副本数据后,则允许提交作业;若超过一定的时间未在目标机房读取到数据,则降级为读取主数据。

在本发明的一个可选地实施例中,还包括:

判断是否接收到与所述用户IP对应的访问令牌;

当判定接收到所述访问令牌,且所述访问令牌符合预设校验规则时,调用路由器HDFS Router向目标服务器发送所述异地机房副本数据或所述主作业数据。

在实际应用中,目前场景下跨机房带宽有限,并且和在线服务、实时服务等对延迟更敏感的服务共用带宽,为防止离线跨机房流量(特别是计划外的跨机流量)打满带宽影响在线业务,本发明实施例引入了基于令牌桶的限流服务。

参考图9,图9是本发明实施例中提供的一种访问令牌发放流程示意图;令牌桶限流的核心思想为当进行某操作需要令牌时,需要从令牌桶中取出相应的令牌数,如果获取到令牌则继续操作,否则阻塞,用完之后不用放回。基于该思想设计了全局中心限流服务,此方法在HDFS分布式文件系统DistributedFileSystem类基础上,实现了具有读写限流功能的节流分布式文件系统ThrottledDistributedFileSystem,当用户使用该类去读写HDFS的文件时,节流分布式文件系统ThrottledDistributedFileSystem会根据RBF返回的LocatedBlock中的用户IDCclient IDC信息和街区IDCBlock IDC信息,判断此次读写流量是否会跨机房,如果是会先尝试向节流阀服务ThrottleService发送申请跨机房带宽请求(Token),申请到Token后,再进行后续的HDFS读写,如果申请的流量用完后,再向ThrottleService申请新的带宽Token;除利用令牌桶固有的特性外,此方法在令牌桶的基础上实现了队列优先级和加权公平特性,限流服务的队列优先级和调度系统中的作业优先级也做一一映射,来保障多租户情况下重要服务可以优先获取到Token;在稳定性方面,为了降低限流服务的压力,此方法设置每个Token代表相对较大的流量单元,来降低Token的获取次数过多带来的性能影响;为防止限流服务宕机导致作业阻塞,此方法增加了降级为本地固定带宽的策略,同时随着计算引擎持续接入限流服务,服务本身的稳定性和请求水位成为瓶颈(单机100K+qps),通过水平扩展服务的方式增强了限流服务的性能。

在本发明的一个可选地实施例中,所述目标文件存储系统HDFS和所述初始文件存储系统HDFS分别具有对应的引擎端程序和数据节点端程序,还包括:

确定针对所述异地机房副本数据的计划内流量信息;

获取除所述计划内流量信息以外的计划外流量信息;

基于所述计划外流量信息优化所述引擎端程序和所述数据节点端程序。

在实际应用中,随着多机房项目的逐渐推进,跨机房流量也日渐增长,高峰时刻偶尔会打满专线带宽。为了对跨机房带宽流量进行有效管控,需要了解哪些作业贡献了最多的跨机房流量,从而进行针对性治理。从离线作业的角度看,网络流量来源主要有三块:从上游读取数据、作业执行过程中不同Executor/Task之间shuffle数据、写数据到下游表。

在离线多机房的场景中,因为采用单元化架构每机房均存在独立Yarn的集群,作业不会跨机房运行也就不存在跨机房冲洗数据Shuffle的情况,因此只需考虑读写HDFS文件过程中产生的跨机房流量即可,而读写HDFS文件产生的跨机房流量又可以分为计划内流量和非计划内流量两大类:①计划内流量,即数据复制服务进行数据副本复制产生的流量,称为计划内流量,该部分数据大概率会被多次使用;②非计划内流量,即非数据复制服务产生的数据流量,单次(或多次)使用。

非计划内流量的主要来源有以下几种可能:①计划内的调度任务发生长时间跨度的历史回刷,依赖的数据副本已过期销毁;②(漏迁/错迁/新增等)放置位置不合理的周期性调度任务,可以通过优化作业放置消除;③Adhoc查询,突发流量,单次(或多次)使用,临时生产需求,无法预知需要的数据,无法预先进行处理,所以对非计划内流量进行处理是不可避免的。

参考图10,图10是本发明实施例提供的一种日志收集流程示意图,可以针对非计划内流量的处理,为对跨机房流量进行有效管控,本发明实施例引入了跨机房流量分析工具,对引擎端和DN(DataNode,数据节点)端做了以下改造:针对引擎端:在初始化HDFSClient时将作业Job ID注入HDFS Client的ClientName中;针对DataNode端:在DataXceiver中埋点,从ClientName中解析出Job ID,并按Job ID和client IP网段合并读写流量,每预设时间周期输出统计结果到流量日志中。

最后将每台DN上的跨机房流量日志进行实时收集,通过Flink汇总到ClickHouse上,然后聚合分析得出每个时间段的跨机房流量作业,并按流量由大到小排序,再按预设数量确定出较排序靠前的作业,方便对跨机房流量进行治理(包括重新放置、紧急查杀、作业优化等),。

对于Adhoc类型的非计划内流量,因其随机性,多机房体系中“数据复制-作业放置-数据路由”方式不适用;因此,此方法采用一些其它的优化手段,即通过运行时SQL Scan扫描出依赖的数据大小、位置信息,以节省多机房带宽为最主要目标,结合集群的实际负载情况,决定SQL调度哪个机房。访问单张表时,作业调度至数据所在机房;访问多张表时,当多表在同机房,作业调度至数据所在机房;当多表在不同机房时,作业调度至数据量较大的表所在机房;较小表限流读,或阻塞通知拷贝服务拷贝。

可选地,对非计划内流量的处理中,针对Presto这种有多源查询能力的引擎,可以利用其Connector多源查询功能将每个机房视为一个连接器Connector,在多表访问场景中将子查询下推发送到远端机房进行处理,以减少垮机房流量带宽。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图11,示出了本发明实施例中提供的一种数据传输装置的结构框图,具体可以包括如下模块:

主作业数据确定模块1101,用于确定主作业数据;

异地机房副本数据生成模块1102,用于发起复制服务,并生成针对所述主作业数据的异地机房副本数据;

异地机房副本数据发送模块1103,用于向所述目标资源调度平台YARN发送所述异地机房副本数据;

用户IP获取模块1104,用于获取用户IP,并当所述用户IP与所述目标机房的直连网络对应时,基于与所述用户IP从所述目标机房中确定出与所述用户IP最近的第一目标服务器;

异地机房副本数据发送模块1105,用于采用所述目标路由器HDFS Router向所述第一目标服务器发送所述异地机房副本数据。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述数据传输方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述数据传输方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。

本发明实施例还提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述数据传输方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图12为实现本发明各个实施例的一种电子设备的硬件结构示意图。

该电子设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图5中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。

应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。

电子设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。

音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与电子设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。

输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,GPU)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。

电子设备500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在电子设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。

显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板5061。

用户输入单元507可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。

进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图5中,触控面板5071与显示面板5061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现电子设备的输入和输出功能,具体此处不做限定。

接口单元508为外部装置与电子设备500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备500内的一个或多个元件或者可以用于在电子设备500和外部装置之间传输数据。

存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器510是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。

电子设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

另外,电子设备500包括一些未示出的功能模块,在此不再赘述。

如图13所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质1301,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的数据传输方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种数据传输方法及装置、计算机可读存储介质
  • 一种数据传输方法、系统、切换装置及可读存储介质
  • 一种发票开票方法、装置、电子设备及可读存储介质
  • 一种更改订单信息的方法、装置、电子设备及可读存储介质
  • 一种数据传输方法、装置、可读存储介质和电子设备
  • 一种数据传输方法、装置、电子设备、可读存储介质
技术分类

06120116511159