JStrom笔记

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组件对比

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页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值