storm学习1

Apache Storm是一个开源的、分布式、流式计算系统。


非实时计算几乎都基于MapReduce计算框架,但MapReduce并不是万能的。对于搜索应用环境中的某些现实问题,MapReduce并不能很好地解决问题。


商用搜索引擎,像Google、Bing和Yahoo!等,通常在用户查询响应中提供结构化的Web结果,同时也插入基于流量的点击付费模式的文本广告。为了在页面上最佳位置展现最相关的广告,通过一些算法来动态估算给定上下文中一个广告被点击的可能性。上下文可能包括用户偏好、地理位置、历史查询、历史点击等信息。一个主搜索引擎可能每秒钟处理成千上万次查询,每个页面都可能会包含多个广告。为了及时处理用户反馈,需要一个低延迟、可扩展、高可靠的处理引擎。然而,对于这些实时性要求很高的应用,尽管MapReduce作了实时性改进,但仍很难稳定地满足应用需求。因为Hadoop为批处理作了高度优化,MapReduce系统典型地通过调度批量任务来操作静态数据;而流式计算的典型范式之一是不确定数据速率的事件流流入系统,系统处理能力必须与事件流量匹配,或者通过近似算法等方法优雅降级,通常称为负载分流(load-shedding)。当然,除了负载分流,流式计算的容错处理等机制也和批处理计算不尽相同。

最近Facebook在Sigmod 11上发表了利用HBase/Hadoop进行实时数据处理的论文,通过一些实时性改造,让批处理计算平台也具备实时计算的能力。这类基于MapReduce进行流式处理的方案有三个主要缺点。


将输入数据分隔成固定大小的片段,再由MapReduce平台处理,缺点在于处理延迟与数据片段的长度、初始化处理任务的开销成正比。小的分段会降低延迟,增加附加开销,并且分段之间的依赖管理更加复杂(例如一个分段可能会需要前一个分段的信息);反之,大的分段会增加延迟。最优的分段大小取决于具体应用。
为了支持流式处理,MapReduce需要被改造成Pipeline的模式,而不是Reduce直接输出;考虑到效率,中间结果最好只保存在内存中等。这些改动使得原有的MapReduce框架的复杂度大大增加,不利于系统的维护和扩展。
用户被迫使用MapReduce的接口来定义流式作业,这使得用户程序的可伸缩性降低。
综上所述,流式处理的模式决定了要和批处理使用非常不同的架构,试图搭建一个既适合流式计算又适合批处理计算的通用平台,结果可能会是一个高度复杂的系统,并且最终系统可能对两种计算都不理想。

目前流式计算是业界研究的一个热点,最近Twitter、LinkedIn等公司相继开源了流式计算系统Storm、Kafka等,加上Yahoo!之前开源的S4,流式计算研究在互联网领域持续升温。不过流式计算并非最近几年才开始研究,传统行业像金融领域等很早就已经在使用流式计算系统,比较知名的有StreamBase、Borealis等。









Nimbus主节点,只负责整体分配工作,不具体干活儿。只负责一些管理性的工作
主要状态存储在分布式协调服务zookeeper上
内存中的东西都是可以丢失的
Nimbus重启之后就能处理系统中的事务了

Supervisior 从节点,直接甘丽干活儿的worker,小组经理。

启动并且监控进行计算的worker进程
也不负责数据计算和数据传输


worker

真正干活儿的TASK 进程


分布式RPC 服务





Storm 称用户的一个作业为topology



点 之间的 边  是  stream
数据流中的每一条记录为 tuple















Spout或者bolt中的executor的数量



本地模式的时候setNumberWorkers不生效,因为只会起一个进程执行作业。


指定计算是怎么分组的。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值