云环境下大规模分布式计算数据感知的调度系统

云环境下大规模分布式计算数据感知的调度系统

刘汪根1, 郑淮城1, 荣国平2

1 星环信息科技(上海)有限公司,上海 200233

2 南京大学软件学院,江苏 南京 210093

 

摘要介绍了新的调度系统,包括资源调度、应用编排、配置标签中心、云网络和云存储服务等子系统。系统通过数据拓扑感知能力保证了计算和数据的局部性,节约网络I/O开销;通过优化点对点大数据量读取的资源调度,解决网络风暴造成的影响;通过网络和磁盘隔离技术以及可抢占的方式来保证服务等级协议。

关键词 云计算 ; 调度系统 ; 大数据 ; AI平台 ; 数据局部性 ; 分布式计算 ; 抢占

论文引用格式:

刘汪根, 郑淮城, 荣国平.云环境下大规模分布式计算数据感知的调度系统.  大数据[J], 2020, 6(1):81-98

LIU J G, ZHENG H C, RONG G P.A scheduler system for large-scale distributed data computing in cloud. Big Data Research[J], 2020, 6(1):81-98

1 引言

随着云计算、大数据与人工智能(artificial intelligence,AI)技术的发展以及行业对这3种技术的综合应用需求,目前国内外出现了大数据、云计算、人工智能三者相互融合的技术发展趋势。中国计算机学会大数据专家委员会在2019年大数据发展趋势调查报告中指出:人工智能、大数据、云计算将高度融合为一体化系统。

2006年Hadoop项目的诞生标志着大数据技术时代的开始,而亚马逊云计算服务(Amazon web services,AWS)商用则标志着云计算正式迈出了改变信息时代的步伐。自此之后,大数据和云计算成为最近十几年十分火热的技术,学术界和工业界都大力投入相关技术研发和落地应用中,并且创造了几个学术界和工业界协作的经典之作。如2012年加州大学伯克利分校推出的新型计算引擎Spark技术迅速被工业界接受,并成为新一代的标准计算引擎。在云计算领域,更多的是企业级应用推动了技术的发展,如2014年开始兴起的容器技术和编排系统,最终推进了新一代原生云平台的快速发展,Docker和Kubernetes技术则成为新一代原生云的标准。

基础软件的研发不是简单的功能堆积,必须经过详细的架构设计和功能验证。大数据和AI计算都是典型的分布式计算模型,是基于有向无环图(directed acyclic graph,DAG)或者大规模并行处理(massive parallel programming, MPP)迭代的计算模式,意味着计算任务都是运行时才能生成的,因而难以进行预先调度,而分布式的特点又要求调度系统有更高的灵活性和自适应性。目前工业界在努力尝试将大数据平台和AI技术部署在原生云上,以做到更大的弹性和可扩展性。但是,目前全球范围内在这个领域取得的突破性成就还比较少。本文将介绍核心创新:云平台中的核心调度系统如何在原生云平台上管理和调度大数据和AI应用。

2 云原生

云原生(cloud native)是指在应用开发时,以云作为其生产部署方式,从而充分利用云的弹性、可扩展、自愈等核心优势。区别于传统的臃肿的单体应用开发模式,云原生应用因为其有效的协同开发、测试和运维,极大地提高了软件开发效率和质量,支持产品快速地上线和迭代,已经成为当前主流的应用开发模式。

通常称能够有效支撑云原生应用的平台为原生云平台,其主要特点是容器化的封装、自动化的管理以及面向微服务的体系。Docker直接使用Linux Cgroup等技术提供逻辑上的虚拟化,因其系统开销小、启动快、隔离性较好、方便应用封装等特点,Docker已经成为首选的应用容器技术。此外Docker技术支持跨平台部署,能够实现“一次编译,多次部署”。基于虚拟机的技术对高负载的应用可能有30%的性能损耗,而Docker技术没有硬件虚拟化,跟裸机相比几乎没有性能损耗,因此也可以用于部署类似大数据和AI应用的计算或者I/O资源密集型的应用。

一个大的云平台可能需要高效稳定地运行数万个容器,这就需要非常强大的服务编排系统。为了满足日益增多的服务和任务的资源需求,Borg、Mesos、Omega等一系列的集群资源调度系统相继出现。其中,Borg是集中式调度器的代表,其作为集群调度器的鼻祖,在Google公司有超过10年的生产经验,其上运行了GFS、BigTable、Gmail、MapReduce等各种类型的任务。Mesos是双层调度器的代表,可以让多个框架公平地共享集群资源。Omega则是共享状态调度器的代表,它的特点是支持使用不同的调度器调度不同类型的任务,解决资源请求冲突的问题。

Kubernetes是Google开源用来管理Docker集群的项目,继承了Borg的优点,实现了编排、部署、运行以及管理容器应用的目的,Kubernetes的总体架构如图1所示。Kubernetes提供资源池化管理,可以将整个集群内的中央处理器(center processing unit,CPU)、图形处理器(graphic processing unit,GPU)、内存、网络和硬盘等资源抽象为一个资源池,可以根据应用的资源需求、资源池中的实时资源情况进行灵活调度;Kubernetes包含一个统一的调度框架,最多可以管理数千个服务器和数万个容器,同时提供插件化的接口,让第三方来定制和扩展新的调度系统;此外Kubernetes支持通过ConfigMap等方式动态地调整应用配置,从而具备动态调配的基础能力。

本文基于这些基础技术开发了支持复杂应用平台的调度系统。

图1   Kubernetes的总体架构

3 大数据和AI计算模型

分布式计算在复杂的工业应用需求下快速迭代和发展,从离线处理的MapReduce计算模型开始,逐渐发展出了以Spark为代表的在线计算(Spark、Tez、Druid等)以及实时计算模型(Flink、Spark Streaming等)。新的分布式计算模型开拓了新的应用领域,同时也对大规模系统的管理、调度和运维提出了较大的挑战。

3.1 MapReduce

MapReduce框架是Hadoop技术的核心,它的出现在计算模式历史上是一个重大事件,在此之前行业内主要通过MPP的方式增强系统的计算能力,一般是利用复杂而昂贵的硬件加速计算,如高性能计算机和数据库一体机等。而MapReduce是通过分布式计算来提高计算速度的,并且只需要廉价的硬件就可以实现可扩展的、高并行的计算能力。

3.2 Spark

随着大量的企业开始使用Hadoop构建企业应用,MapReduce性能慢的问题逐渐成为研究瓶颈,MapReduce只能用于离线数据处理,而不能用于对性能要求高的计算场景,如在线交互式分析、实时分析等。在此背景下,Spark计算模型诞生了。虽然本质上Spark仍然是一个MapReduce计算模式,但是几个核心的创新使得Spark的性能在迭代计算应用中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值