一个批量计算的调度系统的设计与实现

如果需要对成千上万的网络抓包数据文件,在规定的时间内进行解析,应该怎么做?

场景

  1. 有大量的文件
  2. 每个文件的处理需要花 大量的CPU时间,对IO的负载不大。
  3. 要在规定的时间内完成处理

思路

  1. 单机无法达成目标,需要使用集群
  2. 设计一个批量计算的调度系统

设计

  1. 因为该场景是重计算轻IO的,所以可以将所有的文件集中到某一个文件系统中,比如HDFS或者FTP。
  2. 元数据的管理,放在关系型数据库上,具体的来讲,就是放在MySQL中。因为MySQL技术相对成熟,使用的人多,能够支撑。
  3. 在每个计算节点,部署守护程序。每个守护程序都是独立的。守护程序通过抢占式的调度方式,来启动任务。
    架构如下图所示:

实现

数据库设计

主要分3部分:

  • 文件相关的表: 使用2个表来描述

    bc_file_list:文件清单
    bc_fs_list:文件对应的文件系统的详情
    
  • 任务相关的表:使用3个表来描述
    bc_task_list: 任务清单
    bc_task_filein:输入
    bc_task_fileout:输出
    
  • 计算节点相关的表:使用1个表来描述
    bc_launcher_list:有那些机器,每台机器指配给了哪个任务
    

守护程序设计

主要分为3个独立的程序

  • launcher:负责与数据库交互 ,获取需要处理的文件信息(注意并发),监控节点健康状态
  • executor:负责与文件系统交互,启动具体的任务,监控任务执行状态
  • task: 具体的任务程序,比如一个网络数据的解析程序

分为3个独立程序的原因:

  • 保证launcher的精简和健壮,不会任务任务的失败导致整个节点的调度挂掉
  • 保证对task的监控,如果某一task失败,也需要报告其状态,达到对任务的完整跟踪。

应用

规模

1 台MySQL服务器
1 个文件系统
12 个计算节点
45350 个文件

负载

文件系统的网络带宽

MySQL的负载

结论

  1. 设计的系统满足了应用的要求
  2. 作为task的解析文件,在这个过程中经过了多次的变更,每次变更都需要重新解析整个文件。该系统可以很好的满足要求。

作者:https://yq.aliyun.com/u/huaheshang

时间: 2024-09-25 09:19:18

一个批量计算的调度系统的设计与实现的相关文章

美团点评容器平台HULK的调度系统

本文讲的是美团点评容器平台HULK的调度系统[编者的话]美团点评作为国内最大的O2O平台,业务热度的高峰低谷非常显著且规律,如果遇到节假日或促销活动,流量还会在短时间内出现成倍的增长.过去传统虚拟机的服务运行及部署机制在应对服务快速扩容.缩容需求中存在诸多不足: 资源实例创建慢,需要预先安装好运行所需的环境,比如JDK等. 扩容后的实例,需要经过代码部署流程,一些情况下还需要修改配置后才能承接流量. 资源申请容易回收难,促销活动后做相关资源的回收下线会比较漫长. 由于业务存在典型的高峰低谷,为保

一个典型PHP支付系统的设计与实现

  由于公司业务需要,花两周时间实现了一个小型的支付系统,麻雀虽小五脏俱全,各种必须的模块如账户加锁,事务性保证,流水对帐等都是有完整实现的,整个开发过程中有很多经验积累,再加上在网上搜索了一下,大部分都是些研究性的论文,对实际使用价值不大,所以这次特意拿出来和大家分享一下. 这个系统可以用作小型支付系统,也可以用做第三方应用接入开放平台时的支付流水系统. 原来的需求比较负责,我简化一点说: 对每个应用,对外需要提供 获取余额,支付设备,充值 等接口 后台有程序,每月一号进行清算 账户可以被冻结

如何设计一个复杂的分布式爬虫系统?

一个复杂的分布式爬虫系统由很多的模块组成,每个模块是一个独立的服务(SOA架构),所有的服务都注册到Zookeeper来统一管理和便于线上扩展.模块之间通过thrift(或是protobuf,或是soup,或是json,等)协议来交互和通讯. Zookeeper负责管理系统中的所有服务,简单的配置信息的同步,同一服务的不同拷贝之间的负载均衡.它还有一个好处是可以实现服务模块的热插拔. URLManager是爬虫系统的核心.负责URL的重要性排序,分发,调度,任务分配.单个的爬虫完成一批URL的爬

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息,包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题.因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux下软

经营分析、决策系统数据库设计 - 实时圈选、透视、估算

标签 PostgreSQL , 经营分析系统 , 手机行业 , 标签 , 圈选 , 透视 , 估值 , 决策 背景 经营分析.决策支持是现代企业的一个让数据发挥有效价值的分析型系统. 在各个行业中随处可见,例如共享充电宝中,协助销售了解实时的设备租赁情况,销售业绩.在电商中,协助小二和商户发掘目标用户群体.金融行业中,协助输出国民的存款.消费.贷款的画像. PostgreSQL, Greenplum都是非常适合于经营分析.决策支持的数据库.因为它们具备了一些特性,适合实时的分析透视.(流式计算.

云端海量任务调度系统数据库设计 - 阿里云RDS PostgreSQL案例

标签 PostgreSQL , 任务调度系统 , 数据库设计 , schemaless 背景 任务调度系统中的任务状态管理,通常会用到数据库来存储任务调度的过程状态,控制任务的锁等. <advisory lock 实现高并发非堵塞式 业务锁> 如果是小量任务,是挺好实现的,但是每小时处理几十亿或者几亿的任务,如何设计这样的任务状态管理数据库呢? 挑战 对于一个面向多个用户的任务调度平台(例如云端的任务调度平台,将面向所有租户使用). 较大的挑战是任务数据的写入(海量),另一个是任务状态的更新(

伏羲—阿里云分布式调度系统

今天,大数据已经从概念发展到在很多行业落地生根.广泛用在电商.金融.企业等行业,帮助行业分析数据.挖掘数据的价值.即使在传统的医疗.安全.交通等领域也越来越多的应用大数据的技术.数据.价值二者之间的联系是计算,计算是大数据中最核心的部分.大数据计算就是将原来一台台的服务器通过网络连接起来成为一个整体,对外提供体验一致的计算功能,即分布式计算. 点击查看回顾视频 伏羲系统架构 分布式调度系统需要解决两个问题: 任务调度:如何将海量数据分片,并在几千上万台机器上并行处理,最终汇聚成用户需要的结果?当

苹果曝光首份AI论文,揭开滴滴人工智能调度系统真面目| AI科技评论周刊

雷锋网(公众号:雷锋网)按:过去一周,是"中国人工智能元年"的最后一周.这周里,苹果揭开其首份AI论文的面纱:美国启动全球首个深度学习加持的"癌症先进计算解决方案的联合设计":IBM在高性能计算上继续发力,提出数据中心计算(DCS )模型:2016年是三星饱受煎熬的一年,来年它将押注Galaxy S8,发力移动AI助手:滴滴研究院副院长叶杰平,为我们揭开滴滴AI调度系统的真面目. 苹果首份AI论文横空出世,提出SimGAN训练方法 12月27日,苹果的首份AI论文曝

解析阿里云分布式调度系统伏羲

云计算并不是无中生有的概念,它是将普通的单台PC的计算能力通过分布式调度的软件连接起来.其最核心的问题是如何把100台.1千台.1万台机器高效的组织起来,灵活的进行任务调度和管理,从而使得可以像使用台式机一样使用云计算.在云计算中,最核心的模块是分布式调度,它好比于云计算的中央处理器.目前,业界已存在多种分布式调度实现方案,如伏羲.Hadoop MR.YARN.Mesos等系统. 阿里云伏羲 伏羲系统是在前人的基础上进行了一系列的改造,首先与YARN和Mesos系统类似,将资源的调度和任务调度分