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。其它的Container作为Stream Manager。全部的元数据信息包含谁提交的job,job的执行信息,启动时间等等都会保存在Zookeeper中。
每个Heron Instance都是用java写的,且都是JVM进程。Heron进程之间用protocol buffers进行通信。
Heron Instance
值得一提的是每个HI都是仅仅跑一个task。即要么是spout要么是bolt。
这样有利于debug。
这样的设计也为以后数据的复杂性考虑。当以后数据复杂性变高的时候,我们还能够考虑用其它语言来实现HI。
HI的设计有下面两种:
- 单线程
- 双线程
Single-threaded approach
主线程有一个TCP channel与本地的SM通信,等待tuple的到来,一旦tuple来了,就会调用用户的逻辑代码来执行,假设须要输出,该线程就会缓存数据,直到达到阈值,然后输出到downstream的SM。
这样的设计简单。可是也有一些缺点,因为某些原因。用户的逻辑可能被block:
- Invoking the sleep system call for a finite duration of time
- Using read/write system calls for file or socket I/O
- Calling thread synchronization primitives
Two-threaded approach
顾名思义。两个thread:Gateway thread 和Task Execution thread,例如以下图:
Gateway thread负责数据的输入输出和通信
Task Execution thread则负责执行用户逻辑代码
Gateway thread要和Task Execution thread要进行数据通信,他们之间通过如上图的三种queue来通信。Gateway thread用data-in往Task Execution thread输入数据。Task Execution thread用data-out往Gateway thread,metrics-out是用Task Execution thread用来收集metric然后往Gateway thread发送。
Toplogy Master
TM(Topology Master)主要负责topology的throughout。在startup的时候,TM把信息存放在Zookeeper上,以便其它进程能够发现TM。所以TM有例如以下两个目的:
- 阻止多个TM的产生
- 同意其它属于该topology的进程发现该TM
Topology Backpressure
Heron提供一种背压机制来动态调整数据流动的速率。
这样的机制能够让topology中的各个components以不同speed来跑。也能够动态更改它的speed。
TCP Backpressure
这个策略利用TCP窗体的机制来梳理HI(Heron Instance)和其它Componet的背压。全部的消息都是通过TCP sockets来做通信。假设某个HI处理缓慢。那么它的本地接收buffer就会被装满。在这个HI上游和数据通信的SM也会发现这个然后填满发送的buffer,这样该HI的处理速度就加快了。
Spout backpressure
这个背压策略是和TCP背压策略协同使用的。当SM发现它本地的HI执行慢时。SM就会通知本地的SPout停止读取数据,那么往该Spout发送数据的SM的buffer就会堵塞以致fill up。这是受影响的SM就会发送一条start backpressure的msg到其它与之相连的SM。当其它SM收到该msg时就会告诉他们本地的Spout不再读取数据。当上游缓慢的HI速度赶上来之后,SM再发一个stop backpressure的msg到下游。然后停止backpressure。
当topoloy处于backpressure模式时,它的执行速度取决于最慢的那个HI。
Architecture Features: Summary
- First, the provisioning of resources (e.g. for containers and even the Topology Master) is cleanly abstracted from the duties of the cluster manager, thereby allowing Heron to “play nice” with the rest of the (shared) infrastructure.
- Second, since each Heron Instance is executing only a single task (e.g. running a spout or bolt), it is easy to debug that instance by simply using tools like jstack and heap dump with that process.
- Third, the design makes it transparent as to which component of the topology is failing or slowing down, as the metrics collection is granular, and lets us easily map an issue unambiguously to a specific process in the system.
- Fourth, by allowing component-level resource allocation, Heron allows a topology writer to specify exactly the resources for each component, thereby avoiding unnecessary over-provisioning.
- Fifth, having a Topology Master per topology allows each topology to be managed independently of each other (and other systems in the underlying cluster). In additional, failure of one topology (which can happen as user-defined code often gets run in the bolts) does not impact the other topologies.
- Sixth, the backpressure mechanism allows us to achieve a consistent rate of delivering results, and a precise way to reason about the system. It is also a key mechanism that allows migrating topologies from one set of containers to another (e.g. to an upgraded set of machines).
- Finally, we now do not have any single point of failure.
Performance
直接看图吧
Reference
Twitter Heron: Stream Processing at Scale
如有错误地方还请指正,不胜感激~~
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
Twitter 新一代流处理利器——Heron 论文笔记之Heron架构的更多相关文章
- Twitter 新一代流处理工具——Heron 该纸币Storm Limitations
Twitter 新一代流处理工具--Heron 该纸币Storm Limitations (空格分隔): Streaming-Processing Storm Problems scalability ...
- TOP100summit:【分享实录】Twitter 新一代实时计算平台Heron
本篇文章内容来自2016年TOP100summit Twitter technical lead for Heron Maosong Fu 的案例分享. 编辑:Cynthia Maosong Fu:T ...
- Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度
2011年,Twitter发布了开源的分布式流计算系统Storm.四年后,随着用户数量的急剧增加,Twitter每天要处理的事件已经增加到十亿以上.Storm系统应对如此庞大而复杂多样的流数据变得十分 ...
- 仿async/await(一)and Gulp:新一代前端构建利器
NET 4.5的async/await真是个神奇的东西,巧妙异常以致我不禁对其实现充满好奇,但一直难以窥探其门径.不意间读了此篇强文<Asynchronous Programming in C# ...
- Person Re-identification 系列论文笔记(一):Scalable Person Re-identification: A Benchmark
打算整理一个关于Person Re-identification的系列论文笔记,主要记录近年CNN快速发展中的部分有亮点和借鉴意义的论文. 论文笔记流程采用contributions->algo ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
随机推荐
- Silverlight中的拖拽实现的图片上传
原文 http://blog.csdn.net/dujingjing1230/article/details/5443003 在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接 ...
- logstash grok正则调试
logstash 正则调试: nginx 配置: log_format main '$remote_addr [$time_local] "$request" '; logstas ...
- Eclipse setting Java code style and codetemplate
1.open the eclipse tool window First click the Window menu,then check the children's menu which name ...
- linux之SQL语句简明教程---ALTER TABLE
在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变.常见的改变如下: 加一个栏位 删去一个栏位 改变栏位名称 改变栏位的资料种类 以上列出的改变并不是所有可能的改变.ALTER TA ...
- STL入门
STL入门 STL的组成 六大组件 容器container 算法algorithm 迭代器iterator 仿函数function object 适配器adaptors 空间配制器allocator ...
- 直播视频插件--sewise player
直播视频插件 -- sewise player 2017-1-9 因为公司要开发一个关于购车直播的新项目,需要在页面引入直播视频,项目组之前都没有做过关于直播类型的项目,所以可以说是真的从各种资源中筛 ...
- iOS GCD详解
前言 对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步.异步.串行.并行和死锁这几个名词的漩涡中渐渐放弃治疗.本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律. 线程.任务和队列的概 ...
- Hibernate征途(一)之初识
相见恨晚 很久以前,大概从开始接触数据库开始,就闪过这样一个想法,怎么看怎么觉得数据库表和vb的类模块很像,不是么?除了vb类模块还有函数外:越往下学觉得二者越像,尤其在三层时学到实体类的概念,我去, ...
- uva 748 Exponentiation 浮点数乘方运算 高精度水题
输入的前六位数表示一个小数,然后输入一个数表示几次方.要求用高精度算出结果. 高精度水题,主要注意处理小数点,先在输入时把小数点提取出来并记录位置,用普通乘法计算出结果后由后向前计算位置添加小数点. ...
- Oracle11g重建EM 报ORA-20001: SYSMAN already exists
日志: Apr , :: PM oracle.sysman.emcp.EMReposConfig createRepository : SYSMAN already exists.. ORA-0651 ...