消息调度中心的学习资料汇总

调度中心的资料收集

大众点评网

摘要:大众点评网从2011年中開始使用Hadoop,并专门建立团队。

Hadoop主分析集群共同拥有60多个节点、700TB的容量。月执行30多万个HadoopJob。还有2个HBase线上集群。作者将讲述这各个阶段的技术选择及改进之路。

2011年小规模试水

这一阶段的主要工作是建立了一个小的集群。并导入了少量用户进行測试。为了满足用户的需求,我们还调研了任务调度系统和数据交换系统。

集群搭建好,用户便開始使用,面临的第一个问题是须要任务级别的调度、报警和工作流服务。

当用户的任务出现异常或其它情况时。须要以邮件或者短信的方式通知用户。

并且用户的任务间可能有复杂的依赖关系,须要工作流系统来描写叙述任务间的依赖关系。我们首先将目光投向开源项目Apache Oozie。Oozie是Apache开发的工作流引擎,以XML的方式描写叙述任务及任务间的依赖,功能强大。但在測试后。发现Oozie并非一个非常好的选择。

Oozie採用XML作为任务的配置。特别是对于MapReduce Job,须要在XML里配置Map、Reduce类、输入输出路径、Distributed Cache和各种參数。在执行时,先由Oozie提交一个Map only的Job,在这个Job的Map里,再拼装用户的Job,通过JobClient提交给JobTracker。

相对于Java编写的Job Runner。这样的XML的方式缺乏灵活性。并且难以调试和维护。先提交一个Job。再由这个Job提交真正Job的设计,我个人觉得相当不优雅。

还有一个问题在于,公司内的非常多用户,希望调度系统不仅能够调度Hadoop任务,也能够调度单机任务,甚至Spring容器里的任务,而Oozie并不支持Hadoop集群之外的任务。

所以我们转而自行开发调度系统Taurus(https://github.com/dianping/taurus)。Taurus是一个调度系统,通过时间依赖与任务依赖,触发任务的运行,并通过任务间的依赖管理将任务组织成工作流;支持Hadoop/Hive
Job、Spring容器里的任务及一般性任务的调度/监控。

图1 Taurus的结构图

图1是Taurus的结构图。Taurus的主节点称为Master,Web界面与Master在一起。用户在Web界面上创建任务后,写入MySQL做持久化存储,当Master推断任务触发的条件满足时。则从MySQL中读出任务信息。写入ZooKeeper;Agent部署在用户的机器上。观察ZooKeeper上的变化,获得任务信息,启动任务。Taurus在2012年中上线。

可视化界面

总结

图5是各系统整体结构图。深蓝部分为自行开发的系统。

图5大众点评各系统整体结构图

在这2年多的Hadoop实践中,我们得到了一些宝贵经验。

·        建设一支强大的技术团队是至关重要的。

Hadoop的生态系统。还处在高速演化中,并且文档相当匮乏。

仅仅有具备足够强的技术实力,才干用好开源软件,并在开源软件不能满足需求时。自行开发解决这个问题。

·        要立足于解决用户的需求。用户须要的东西,会非常容易被用户接受。并推广开来;某些东西技术上非常easy,但能够解决用户的大问题。

·        对用户的培训。很重要。

架构图(还有一篇关于大众点评的数据平台的文章)

思考总结:

1、  前置条件驱动后置条件。任务的依赖关系处理有master统一管理,因此全部client的状态管理,master必须得知。

2、  Zookeeper是消息中间件。负责master与agent之间的消息传输。属于核心模块。

3、  亮点:web界面能够控制任务启动。

可是,为什么Web界面与Master在一起。

4、  框架介绍得比較清楚,关键技术不清楚。比如master与agent的通信协议(或者zookeeper的内部处理机制)、数据库模型(怎样处理任务之间的依赖。怎样避免任务依赖产生回路)

5、  调度中心、传输数据、监控是数据平台的基础组件。像快速公路一样,仅仅有铺设好了,汽车才干跑得更快。

參考文章:

大众点评的大数据实践:

http://www.csdn.net/article/2013-12-18/2817838-big-data-practice-in-dianping

大众点评数据平台架构变迁:

http://blog.csdn.net/yfkiss/article/details/16838941

阿里巴巴

淘宝海量数据产品技术架构

数据产品的一个最大特点是数据的非实时写入。正由于如此,我们能够觉得,在一定的时间段内。整个系统的数据是仅仅读的。这为我们设计缓存奠定了很重要的基础。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

依照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层,各自是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库。还实用户的浏览、搜索等行为日志等。这一系列的数据是数据产品最原始的生命力所在。

文章结束时,提到:虽然如此,整个系统中仍然存在非常多不完好的地方。一个典型的样例莫过于各个分层之间使用短连接模式的HTTP协议进行通信。

这种策略直接导致在流量高峰期单机的TCP连接数非常高。

所以说,一个良好的架构固然可以在非常大程度上减少开发和维护的成本,但它自身一定是随着数据量和流量的变化而不断变化的。

我相信,过不了几年。淘宝数据产品的技术架构一定会是另外的样子。

SKYNET

天网调度系统(SKYNET)作为淘宝数据平台的核心调度系统,承载着淘宝数据跨部门/数十条业务线/超过一万个作业的调度和运维工作,具有图形化、跨平台、自己主动部署、线上运维、智能容灾的特点,是淘宝数据平台的中枢系统。

思考总结:

1)结合我们自己的数据交换平台。相同存在server单机的TCP连接数较高的问题。与王老师、郑辉、项老师讨论。考虑使用数据库连接池实现。

难度较大。

2)思考我们的数据平台,面向层级的设计须要加强。应尽可能减少各模块之间的耦合。减少维护成本。

參考文章:

淘宝数据魔方技术架构解析

http://www.alidata.org/archives/1789

阿里数据平台的技术罗列,重点查看天网调度系统

http://www.alidata.org/about-us/tech

淘宝的数据产品:

## 淘宝魔方:http://mofang.taobao.com/

## 淘宝指数:http://shu.taobao.com/

迅雷

大数据的重要性已毋庸置疑,但大数据的採集、存储、处理、分析、研究。却不是一朝一夕炼成的!数据平台怎样建设,推荐系统怎样运算,等等,都是我们所关注的话题。

 

迅雷的大数据架构

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 

# 文章简介迅雷数据平台的建设方案,分为五层:採集、原始数据存储、ETL计算、DW层存储、业务层。

# 贯穿五层的两个重要模块:认证与授权、事件驱动调度。

##一块是认证与授权,从上到下全部东西都须要经过认证和授权,作为一个公司级集中式的存储平台。每一个部门存储都会在这儿做。所以你必须保障数据安全和资源合理分配.

##还有一块是事件驱动调度:须要把后置依赖前置改成前置驱动后置,前置任务跑成功了之后,将该任务相应的“数据事件”扔到调度总线里面去,由总线把须要依赖这个“数据事件”的其它任务调起来。当然该任务可以马上跑。还要考虑究竟层计算引擎眼下的负载等情况。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

上图是调度引擎大体的架构:最核心部分是调度总线,数据分为是Task和Job,Task维护计算逻辑,如运行的SQL脚本等。Job维护调度逻辑。如依赖什么“数据事件”,一个Task能够配置多个Job。

最左边是Web接口。前端通过该接口查询任务状态,以及控制任务等。最右边是计算环境的适配层。

------(没看懂)

企业大数据建设案例分享

http://www.csdn.net/article/2013-07-31/2816417-CTO-club-tecent

百度

数据平台架构

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 

# 我们不论什么的平台和系统不可能解决全部的问题

# 仓库是攻克了增量、批量、流式这样的混杂的模型,跟全套的解决方式

# 一个系统。想做到高效。是一定有损失的。

重点是实效,一定要快,会损失什么?会损失准确,可能会是不精准。不精准的意思可能会丢。--------------不同的应用场景,对数据的要求不一样。我们的产品是基于如何的应用场景,要解决如何的问题。

刘立萍:百度大数据平台介绍

http://www.csdn.net/article/a/2012-12-01/2812397

腾讯

数据服务整体框架

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

參看文章:

腾讯大规模Hadoop集群实践

http://www.csdn.net/article/2014-02-19/2818473-Tencent-Hadoop

数据平台的建设思考

现状与问题分析

在数据量日益添加的情况下,数据平台须要加强服务分层处理和调度中心统筹管理。

眼下。公司的数据后台逐渐分层。

分层设计。减少了系统之间的耦合,有助于新功能的实现,有助于更好的推动业务发展。

只是。层级之间的响应须要加强。

各个层级不能各自为政,否则会导致层级之间响应缓慢,而且不便于日常维护、统一管理与新业务拓展。

问题

1、数据库job运行的问题,依赖数据库本身的job机制无法做到智能的多次处理以及有问题时及时提醒,另外,出现异常之后再人工处理耗时较多。假设能有一个完整的程序依照顺序和条件把须要补的过程有条不紊的补上会节省非常多后期补报表数据的时间。

2、数据交换平台,对实时数据的交换,採用轮训数据库的方式。简单粗暴。假设升级成消息驱动机制,能够提高系统响应速度,便于工作流、任务流的连贯运行。减少数据库的压力。

3、数据流的连贯性存在问题,层与层之间缺少运行前的条件推断。假设过于紧凑,可能出现错误。假设过于松散。会影响到效率。

数据平台的思考(完好ing)

基于以上的分析,思考数据平台的建设想法。

数据交换平台

优化后台数据库之间的关联关系,从网状结构,过渡到中心结构。

网状结构

中心结构

 

调度中心的建设思考

 

调度中心的作用

 

1、梳理数据流。明白任务之间的依赖关系,可视化管理。便于维护扩展。

2、任务运行连贯,系统响应速度提高。吞吐提高。server的计算能力得到较为充分的发挥。

3、日常维护便捷。调度中心提供执行的数据指标,便于监控系统及时发现问题并报警,缩短故障发现时长与处理时长。

 

调度中心的架构

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FuMTE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

有下面特点:

# redis:消息中间件。负责master与agent的通信,负责记录调度中心执行日志

# master:负责处理任务之间依赖关系(前置任务驱动后置任务)、日志记录、agent管理(注冊等)、异常处理,等。

# agent:agent之间互不知晓,负责运行某类别的任务。关于同一时候运行的任务个数或是否马上运行,由agent自行控制,影响因素比如自身server性能等。

# Oracle:配置数据库。持久化任务配置參数。

#WebConsole:对后台任务进行可视化地实时性地查看与管理,连接redis。

 

几个难点:

# 数据库模型设计,存储任务之间的依赖关系,便于对任务类别的扩展

# redis的使用预研与demo开发(使用c++操作)

# master与agent的通信协议。便于扩展

# 数据库连接池的技术实现。避免出现后期瓶颈

问题与讨论

时间: 2024-12-24 20:48:45

消息调度中心的学习资料汇总的相关文章

前端学习资料汇总(转)

前端学习资料汇总(转) http://www.w3cfuns.com/blog-5402109-5400901.html 端工具: can i see :http://caniuse.com/  ——一个查看css及html5在各个浏览器及手机端的支持情况 前端视野:——平时可以多看看的网站了解下最新资讯前端观察站,腾讯的前端技术,挺有含金量:html5 中国:   http://www.html5cn.org/   ——有很多html及css小知识的网站,建议多浏览web前端开发   http

[转]机器学习和深度学习资料汇总【01】

本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen

HBase全网最佳学习资料汇总

HBase全网最佳学习资料汇总 摘要: HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.百度.腾讯.京东.小米都有数千台的HBase集群,中国电信的话单.中国人寿的保单都是存储在HBase中. 前言 HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.京东.小米都有数千台的HBase集群,中国电信的话单.中国人寿的保单都是存储在HBase中.注意大公司有数十个数百个HBase集群,此点跟Hadoop集

Java 8学习资料汇总

Java 8发布已经有一段时间,它被认为是Java 5发布以来最大的一次版本升级.Java 8 为Java语言.编译器.类库.开发工具以及JVM(Java虚拟机)带来了大量新特性.Lambda表达式.默认方法.并行API等都受到了开发者的追捧,社区上关于Java 8的学习资料如雨后春笋般涌现.下面是一些优秀的学习资料汇总: Brian Goetz在Stack Overflow上的回答Brian是<Java并发编程实战>的作者之一,有20多年的软件咨询行业经验.Brian是JSR 335的带头者

Apple Swift学习资料汇总

[更新]Apple Swift学习资料汇总 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 »   今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第三方输入法等功能.但更让开发者感兴趣的莫过于Swift语言的发布了. Swift是apple自创的一门转为cocoa和cocoa touch设计的语言,意用来替换objc.Swift能使代码大量简化,并且开发者们可以在同一款软件中同事使用obj-c,Swift,c语言.方便 开发者来学习这么语言.这

【转】机器学习最佳入门学习资料汇总

机器学习最佳入门学习资料汇总 专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门. 这篇文章的确很难写,因为我希望它真正地对初学者有帮助.面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门? 资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的. 我为每种类型的资源选出了其中最佳的学习资料.如果你是一个真正的初学者,并且有兴趣开始机器学习领域的学习,我希望

【荐】Redis学习资料汇总

Redis学习手册(目录) - Stephen_Liu - 博客园 Redis 命令参考 - Redis 命令参考 Redis_php 学习 - 简单--生活 - 博客园 [荐]Redis学习资料汇总,布布扣,bubuko.com

Java 8 学习资料汇总【转载】

原文地址 2014年3月18日,Java SE 8 发布,而 Java 9 预期2016年发布: 2009年12月,Java EE 6发布: 2004年9月,J2SE 1.5发布: 2000年5月,JDK1.3.JDK1.4 相继发布: 1996年1月,JDK1.0发布: 1995年5月23日,Java 语言正式诞生. 本文首发于 jOOQ博客的 Java 8 Friday系列,经原作者 Data Geekery GmbH 授权由InfoQ中文站编译并分享. Java 8 发布已经有一段时间,它

WF学习资料汇总

学习WF当然是MSDN作为第一手材料,但是看完了一些基础的入门知识后,园子里的一些WF大牛们的系列文章就是很好的提高的材料了.在此,感谢他们,我真佩服他们有这样的耐心和良好的学习习惯. 以下就是我经常看的一些WF的系列文章: 1.生鱼片blog的坚持学习系列,这个是我看得最多的了,感觉挺对我的学习思路. http://www.cnblogs.com/carysun/archive/2008/10/21/1209612.html 2.笑煞天的WF学习笔记系列,知识点很细,每个你想要学习的WF知识点