元祖(tuple)

元组(Tuple),是消息传递的基本单元,是一个命名的值列表,元组中的字段可以是任何类型的对

象。

Storm使用元组作为其数据模型,元组支持所有的基本类型、字符串和字节数组作为字段值,只要实现

类型的序列化接口就可以使用该类型的对象。元组本来应该是一个key-value的Map,但是由于各个组

件间传递的元组的字段名称已经事先定义好,所以只要按序把元组填入各个value。即可,所以元组是

一个value的List。

流(Stream)

流是Storm的核心抽象,是一个无界的元组系列。源源不断传递的元组就组成了流,在分布式环境中并

行地进行创建和处理。

Spout

Spout是拓扑的数据流的来源,是一个拓扑中产生源数据流的组件。通常情况下,Spout会从外部数

据源中读取数据,然后转换为拓扑内部的源数据。

Spout可以是可靠的,也可以是不可靠的。如果Storm处理元组失败,可靠的Spout能够重新发射,

而不可靠的Spout就尽快忘记发出的元组。

Spout可以发出超过一个流。

Spout的主要方法是nextTuple()。NextTuple()会发出一个新的Tuple到拓扑,如果没有新的元组发出,

则简单返回。

Spout的其他方法是ack()和fail()。当Storm检测到一个元组从Spout发出时,ack()和fail()会被调

用,要么成功完成通过拓扑,要么未能完成。Ack()和fail()仅被可靠的Spout调用。IRichSpout是Spout必须实现的接口。

Bolt

在拓扑中所有处理都在Bolt中完成,Bolt是流的处理节点,从一个拓扑接收数据,然后执行进行处理的

组件。Bolt可以完成过滤、业务处理、连接运算、连接与访问数据库等任何操作。

Bolt是一个被动的角色,七接口中有一个execute()方法,在接收到消息后会调用此方法,用户可以在其

中执行自己希望的操作。

Bolt可以完成简单的流的转换,而完成复杂的流的转换通常需要多个步骤,因此需要多个Bolt。

Bolt可以发出超过一个的流。

Topology

拓扑(Topology)是Storm中运行的一个实时应用程序,因为各个组件间的消息流动而形成逻辑上的拓

扑结构。

把实时应用程序的运行逻辑打成jar包后提交到Storm的拓扑(Topology)。Storm的拓扑类似于

MapReduce的作业(Job)。其主要的区别是,MapReduce的作业最终会完成,而一个拓扑永远都在

运行直到它被杀死。一个拓扑是一个图的Spout和Bolt的连接流分组。

最新文章

  1. 2748: [HAOI2012]音量调节 bzoj
  2. python学习笔记系列----(八)python常用的标准库
  3. 深入理解JQuery插件开发
  4. js关闭当前页面(窗口)的几种方式总结(转)
  5. Jquery中的$().each() 方法
  6. 【python PIL学习】给照片打水印
  7. Android SoundPool.play方法的音量与系统音量的关系
  8. FormsAuthenticationTicket学习笔记
  9. 转载--C++ STL
  10. Linux--------------更改yum
  11. 曾经的10道JAVA面试题
  12. O2O领域添新军,正品网加快布局的战略考量
  13. 【转】Nginx反向代理和负载均衡
  14. Travelling(spfa+状态压缩dp)
  15. 快速排序quick_sort(python的两种实现方式)
  16. unix的发展
  17. HttpClientFactory与Steeltoe结合来完成服务发现
  18. <数据结构与算法分析>读书笔记--运行时间中的对数及其分析结果的准确性
  19. unitest中HTML测试报告的优化
  20. HDU 6212 Zuma 2017青岛网络赛 区间DP

热门文章

  1. 前端自适应样式reset.css
  2. 解决anaconda与pycharm冲突导致import无法使用
  3. [hdu4585]离线,并查集
  4. 使用 pyautogui 进行跨平台的 GUI 自动化操作
  5. 常用header头
  6. .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证
  7. react-grid-layout实现拖拽,网格布局
  8. Redux:异步操作
  9. POJ3693 Maximum repetition substring 后缀数组
  10. Spring 自动装配 byName