Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度

2011年,Twitter发布了开源的分布式流计算系统Storm。四年后,随着用户数量的急剧增加,Twitter每天要处理的事件已经增加到十亿以上。Storm系统应对如此庞大而复杂多样的流数据变得十分困难。为了解决该问题,Twitter公司近期开发了一套全新的流处理系统——Heron。近日,Twitter公司在SIGMOD 2015会议上对Heron进行了介绍

据Twitter公司的技术经理Karthik Ramasamy表示,Twitter公司之前对Storm所存在的问题以及新平台的功能需求进行了详细分析。首先,Storm调试能力较弱的问题曾让Twitter员工比较困扰。在Storm中,一个拓扑中的多个组件是捆绑在操作系统的一个进程中的。这就使得在拓扑出现问题时很难迅速定位问题的根源。用户不得不借助cleaner映射来帮助实现逻辑计算单元到物理进程的映射,从而辅助调试。此外,Storm还需要专门的集群资源来运行拓扑。这就使得它不能利用流行的集群调度软件进行计算资源的优化。而且,在使用Storm时,用户需要手动隔离机器才能部署一个新的产品拓扑。同样,在拓扑不再使用时还需要手动回收机器资源。所有Storm存在的这些问题严重限制了Twitter处理事件的能力,而且带来时间和计算资源的巨大浪费。因此,Twitter认为新的系统需要具备能够每分钟处理上亿的事件、大规模处理数据的延迟为亚秒级、行为可预测、高数据精度、遇到局部流量过高或流水线拥堵时能够自行调整输入速率、调试方便以及能够在共享式框架中部署等功能。

据Karthik透露,Twitter当初考虑了三种可能的方案——扩展现有的Storm系统、利用别的已经开源的系统和开发一套新的系统。然而,Storm系统的核心部件并不能满足现有的需求,而对其进行修改又需要比较长的开发周期。同时,其他的开源流处理框架不能满足Twitter在规模、吞吐量以及延迟等方面的需求。更关键的是,它们不能与Storm的API相兼容,迁移工作会十分复杂。因此,Twitter最终决定开发一套全新的实时流处理系统。

根据设计要求,Heron保持了与Storm相同的数据模型和API,运行的也是由spout和bolt构成的拓扑。其总体框架包含了一个调度器和若干个拓扑。该调度器只是一个抽象模型,可以具体化为YARN、Mesos或者ECS等,方便资源共享。用户利用API提交拓扑到调度器后,调度器把每个拓扑当作一个单独的任务,并根据集群中节点利用情况分派若干个容器来执行。在这些容器中,其中一个运行拓扑master,负责管理拓扑。剩余的每一个容器都需要运行一个流管理器来负责数据路由、一个metric管理器负责收集和报告各种各样的metric以及若干个Heron实例进程来运行用户自定义的spout/bolt代码。最后,拓扑的元数据,如物理规划和执行细节等都被保存在ZooKeeper中。

因此,Heron能够轻松部署在运行如Mesos、YARN或者自定义调度框架的共享架构中。而且,Heron向后兼容Storm,使得原来基于Storm的其它系统可以继续使用。在Heron中运行已有的Storm拓扑完全不需要任何改变,移除了复杂的迁移过程。容器中的Heron实例执行的是单独的任务,保证了用户利用jstack或者heap dump等工具即可进行实例的调试。Metric收集器又使得拓扑中任何组件的失效变得十分明显,大大降低了调试的难度。此外,Heron有一个背压机制能够在运行过程中动态调整拓扑中数据流的速度,而不影响数据精度。同时,与2013年 10月发布的Storm相比,Heron的吞吐量可以到达其10-14倍,而延迟时间却只是它的1/15-1/5,资源消耗也更低。

目前,Heron已经作为Twitter的主要流处理器系统在运行,其中包括了数百个拓扑。由于Heron的低资源消耗特性,迁移后的新系统硬件减少了2/3,大大提高了物理资源的利用率。Karthik也表示,Twitter公司非常愿意与Storm社区或者其他开源的实时流处理系统社区分享Heron的经验和教训。

转自:http://www.infoq.com/cn/news/2015/06/Heron-Twitter

时间: 2024-12-23 18:21:33

Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度的相关文章

Twitter 新一代流处理利器——Heron 论文笔记之Heron架构

Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture Heron 架构如下图: 用户编写发布topoloy到Aurora调度器.每一个topology都作为一个Aurora的job在运行.每一个job包括几个container,这些container由Aurora来分配和调度.第一个container作为Topology Master,其他的Cont

Twitter 新一代流处理利器——Heron 论文笔记之Storm Limitations

Twitter 新一代流处理利器--Heron 论文笔记之Storm Limitations 标签(空格分隔): Streaming-Processing Storm Problems scalability, debug-ability, manageability, and efficient sharing of cluster resources with other data services. Storm Worker Architecture: Limitations Storm的

Twitter Heron:大规模流处理系统

1. 介绍 Twitter依赖大量的实时流处理.多年以来,Twitter内部都在用Strom. 但是以目前的规模来说,使用Strom变的越来越有挑战.特别是涉及到可扩展性, debug能力, 可管理能力以及和其他数据服务的有效的资源分配等问题. 一个很大的挑战就是debug-ability.当一个topo不正常工作的时候,需要很快的定位性能下降的原因. 但是在Storm中,一个topo的很多compoents都在一个进程,使得debug比较困难. 我们需要一个从逻辑单元到物理进程的清晰映射. 这

[转帖]实时流处理系统反压机制(BackPressure)综述

实时流处理系统反压机制(BackPressure)综述 https://blog.csdn.net/qq_21125183/article/details/80708142 2018-06-15 19:05:37 MasterT-J 阅读数 4808更多 分类专栏: 实时流处理 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_21125183/article/details/8070

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

技术调研参考——业界开源实时流处理系统小结

这里对目前业界开源的一些实时流处理系统做一次小结,作为日后进行技术调研的参考资料. S4 S4(Simple Scalable Streaming System)是Yahoo最新发布的一个开源流计算平台,它是一个通用的.分布式的.可扩展性良好.具有分区容错能力.支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发面向无界不间断流数据处理的应用,开发语言为Java. 项目链接:http://incubator.apache.org/s4/(注:S4 0.5.0已支持TCP链接及状态恢复等特

ubuntu 系统提示升级失败,boot空间不足

系统提示升级失败,boot空间不足,解决方法: linux 随着系统的升级,会自动攒下好几个内核 执行 uname -a 看下自己当前启动的是哪个内核 dpkg --get-selections |grep linux-image命令看下你的机器上都有哪些内核文件 运行apt-get remove命令卸载不需要的内核, 如:sudo apt-get remove linux-image-3.19.0-25-generic

Linux系统Domino704升级为901 64位的步骤及注意事项

 [背景] 随便系统业务量的不断增大,应用数据库越来越多.与第三方接口的需求越来越多.文档量越来越多,32位的domino对服务器的利用率已无法满足系统需求的日益增长,低版本的domino爆发的问题也越来越凸显,升级到64位高版本domino会大大提高服务器资源的利用率,有效解决低版本domino的一些问题. 首先,32位操作系统最多只能用到4GB的内存,而对于16GB的服务器来说是大大的浪费: 其次,domino7版本较低,jvm可用内存很小,不支持webservice使用者设计元素.不支

centos系统python升级2.7.3

首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz 下载完成后到下载目录下,解压 tar -zxvf Python-2.7.3.tgz 进入解压缩后的文件夹 cd Python-2.7.3 在编译前先在/usr/local建一个文件夹python27(作为python的安装路径,以免覆盖老的版本) mkdir /usr/local/python2.7.3