首页 > 编程知识 正文

head movement名词解释,stormhadoop组合

时间:2023-05-05 15:07:29 阅读:112577 作者:2192

1.什么是storm

Storm是推特开源分布式实时大数据处理框架,在业界被称为实时版Hadoop。 随着Hadoop MapReduce高延迟的不可接受性增加,大数据实时处理解决方案(例如,网站统计、推荐系统、预警系统和金融系统(高频交易、股票) )的应用也越来越广泛

storm作者表示,storm对实时计算的意义类似于Hadoop对批处理的意义。 Hadoop提供了map、reduce原语,使批处理过程简单高效。 同样,Storm为实时计算提供了简单高效的基元。 Storm trident与基于Hadoop的Pig框架一样,是一个基于storm基元的更高级抽象框架,使开发更加方便高效。

2.storm应用场景

推荐系统(根据实时推荐、订单或购物车的加入推荐相关商品)、金融系统、报警系统、网站统计)实时销量、流量统计(如淘宝双11效果图)、交通路况实时系统

3.storm的一些特性

1. 适用场景广泛: storm实时处理消息,更新数据库,对单个数据量进行连续查询,然后返回(连续计算)到客户端,对占用资源的查询进行实时查询

2. 可伸缩性高: Storm的可伸缩性使storm每秒可以处理的消息量非常高。 要扩展实时计算任务,必须添加计算机并提高该计算任务的并行度。 Storm使用ZooKeeper调整群集中的各种配置,以便于扩展Storm群集。

3. 保证无数据丢失:实时系统必须保证所有数据都能正常处理。 丢失数据的系统的应用场景非常狭窄,storm确保所有消息都得到处理。 这与S4相比有很大的对比度。

4. 异常健壮: storm群集非常易于管理,按顺序重新启动节点不会影响APP应用程序。

5. 容错性好:如果在处理消息时出现异常,storm将重试

6.http://www.Sina.com/:任何人都可以使用storm,因为storm的topology和消息处理组件(Bolt )可以用任何语言定义。

语言无关性

Nimbus和Supervisors之间的所有协调工作都是通过一个Zookeeper集群。 Nimbus和Supervisors进程不能直接连接,所有无状态状态都将保持在Zookeeper或存储在本地磁盘上。

这意味着可以在不进行备份的情况下运行kill -9 Nimbus或Supervisors进程。

由于这种设计,storm群集具有难以置信的稳定性,并且不结合。

4.storm集群结构

Nimbus负责在群集上分发的代码,topo只能在Nimbus计算机上提交,不能将任务分配给其他计算机或监视故障。

Supervisor监听分配给它的节点,并根据Nimbus委托根据需要启动和终止工作流程。 每个工作进程运行拓扑的子集。 正在运行的topology由许多计算机上运行的许多工作进程组成。

Storm具有对流的抽象,流是不间断的、无边界的连续tuple。 当对事件流进行建模时,注意Storm将流中的事件抽象为tuple,即元组

Storm认为每个流都有一个称为“喷嘴”的原始元组的源

当处理流中的tuple并将其抽象为Bolt时,Bolt可以消耗任意数量的输入流,只要将流的方向引导到该Bolt,就可以同时将新的流发送到其他Bolt进行使用。 这样,只需要将打开特定的spout后从spout流出的tuple导入特定的Bolt,Bolt就可以在处理导入的流之后导入到其他的Bolt

spout可以被认为是水龙头。 而且,水龙头流出的水各不相同。 我们想得到哪个水就拧哪个水龙头,用管子把水龙头里的水引到一个水处理装置(bolt ),水处理装置处理后,用管子引到另一个处理装置,或者放入容器里。

为了提高水处理效率,自然可以通过在同一水源连接多个水龙头,使用多个水处理器来提高效率。

这是有向无环图,Storm将此图抽象为拓扑,Topo是Storm的作业抽象概念,拓

扑就是一个流转换图

图中每个节点是一个spout或者bolt,每个spout或者bolt发送元组到下一级组件。

而Spout到单个Bolt有6种流分组策略。

 

6.Topology

      Storm将流中元素抽象为tuple,一个tuple就是一个值列表value list,list中的每个value可以是任意可序列化的类型。拓扑的每个节点都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。

    

7.storm相关概念

Streams消息流

       消息流是一个没有边界的tuple序列,而这些tuples会被以一种分布式的方式并行创建和处理。 每个tuple可以包含多列,字段类型可以是: integer, long, short, byte, string, double, float, boolean和byte array。 你还可以自定义类型 — 只要你实现对应的序列化器。

Spouts消息源

      Spouts是topology消息生产者。Spout从一个外部源(消息队列)读取数据向topology发出tuple。 消息源Spouts可以是可靠的也可以是不可靠的。一个可靠的消息源可以重新发射一个处理失败的tuple, 一个不可靠的消息源Spouts不会。

      Spout类的方法nextTuple不断发射tuple到topology,storm在检测到一个tuple被整个topology成功处理的时候调用ack, 否则调用fail。

      storm只对可靠的spout调用ack和fail。

Bolts:消息处理者

      消息处理逻辑被封装在bolts里面,Bolts可以做很多事情: 过滤, 聚合, 查询数据库等。

      Bolts可以简单的做消息流的传递。复杂的消息流处理往往需要很多步骤, 从而也就需要经过很多Bolts。第一级Bolt的输出可以作为下一级Bolt的输入。而Spout不能有一级。

      Bolts的主要方法是execute(死循环)连续处理传入的tuple,成功处理完每一个tuple调用OutputCollector的ack方法,以通知storm这个tuple被处理完成了。当处理失败时,可以调fail方法通知Spout端可以重新发送该tuple。

     流程是: Bolts处理一个输入tuple, 然后调用ack通知storm自己已经处理过这个tuple了。storm提供了一个IBasicBolt会自动调用ack。

     Bolts使用OutputCollector来发射tuple到下一级Blot。

一组形象的对比:

 

 

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。