2016-11-14 22:05:29
有哪些典型的Storm应用案例?
数据处理流:Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。不像其它的流处理系统,Storm不需要中间队列。
连续计算:连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标。
分布式远程过程调用:由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。频繁的CPU密集型操作并行化。
push/pull Sockets
在系统底层,Storm使用了zeromq(http://www.zeromq.org)。这是一种先进的,可嵌入的网络通讯库,它提供的绝妙功能使Storm成为可能。
2016-12-03 23:31:07
《个性化实时计算系统及其应用探索》:http://chuansong.me/n/145519
《基于Storm的Nginx log监控系统》:http://www.tuicool.com/articles/yUZ3yq
2016-11-12 21:15:22
Storm相关术语
我们通过一个storm和hadoop的对比来了解storm中的基本概念。
Hadoop | Storm | |
系统角色 | JobTracker | Nimbus |
TaskTracker | Supervisor | |
Child | Worker | |
应用名称 | Job | Topology |
组件接口 | Mapper/Reducer | Spout/Bolt |
storm:暴风雨。分布式实时计算系统,storm对于实时计算的意义类似于hadoop对于批处理的意义。
nimbus:雨云。主节点的守护进程,负责为工作节点分发任务。
Supervisor:管理器。负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
Worker:工人;劳动者。运行具体处理组件逻辑的进程。
Task:工作,作业;任务。worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。
topology:拓扑结构。Storm的一个任务单元。storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。
spout:喷口;喷管;水龙卷。水龙卷(waterspout)是一种偶尔出现在温暖水面上空的龙卷风,它的上端与雷雨云相接,下端直接延伸到水面。读取原始数据,为bolt提供数据。在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。
bolt:闪电,雷电。从spout或其它bolt接收数据,并处理数据,处理结果可作为其它bolt的数据源或最终结果。在一个topology中接受数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。
define field(s):定义域。由spout或bolt提供,被bolt接收。
Tuple:元组。一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value就行了,所以就是一个value list。
Stream:流。源源不断传递的tuple就组成了stream。