您的位置:首页 > Web前端 > JavaScript

JStrom笔记

2016-07-02 18:33 246 查看
JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,JStorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker。

因此,从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm是一套类似MapReduce的调度系统。 从数据的角度,JStorm是一套基于流水线的消息处理机制。

Storm类似于Hadoop的MR(Map-Reduce),区别在于,hadoop的MR,提交到hadoop的MR job,执行完就结束了,进程就退出了,而一个JStorm任务(JStorm中称为topology),是7*24小时永远在运行的,除非用户主动kill。

0. JStorm架构图



- Nimbus是作为调度器角色

- Supervisor 作为worker的代理角色,负责杀死worker和运行worker

- Worker是task的容器

- Task是真正任务的执行者

- ZK 是整个系统中的协调者

1. Storm组件和Hadoop组件对比



2. topology

一个JStorm任务称为一个topology,topology包含两种组件,即spout和bolt。topology图如下:



spout代表数据源,bolt代表处理逻辑。spout可以是任意的,比如说kafaka,DB,HBase,甚至是HDFS等。

2.1 接口

2.1.1 nextTuple

是一个spout接口,用于拉取下一条消息。Storm框架会不停地调这个接口,以从数据源拉取数据并往bolt发送数据。

2.1.2 execute

一个bolt接口,用来处理业务逻辑。

同一个topology可以有多个消息源、多个业务逻辑,即多个spout多个bolt。

2.2 调度执行

对一个topology,JStorm最终会调度成一个或多个worker,每个worker即为一个真正的操作系统执行进程,分布到一个集群的一台或者多台机器上并行执行。

而每个worker中,又可以有多个task,分别代表一个执行线程。每个task就是上面提到的组件(component)的实现,要么是spout要么是bolt。

整理自JStorm github wiki页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: