一、Storm基础
1.基于Storm的应用
电商 实时推荐
电信 诈骗电话
2.核心概念
Topologies
拓扑,将整个流程串起来,由spout和bolt组成
Streams
数据流,抽象概念,没有边界的tuple构成
Spouts
数据源,Topology的消息生产者
Bolts
处理数据,可以做过滤、聚合、查询、写数据库操作
Tuple
数据,传递的基本单元
Stream groupings
Reliability
Tasks
Workers
二、strom架构
类似于Hadoop的架构,主从
Nimbus:主
集群的主节点,负责任务的指派和分发、资源的分配
Supervisor:从
可以启动过个worker,可以通过配置指定
一个Topology可以运行再多个Worker之上
集群的从节点,负责执行任务的具体部分
启动和停止自己管理的Worker进程
无状态,他们的信息(元数据)会存储再ZK中
Worker:运行具体组件逻辑(Spout/Bolt)的进程
=====================================================
task:
Spout/Bolt
Worker中每一个Spout/Bolt的线程成为一个task
excutor:Spout/Bolt可能会共享一个线程
三、strom编程
1.ISpout接口
概述
核心接口,负责将数据发送到topology中去处理
Strom会跟踪Spout发出去的tuple的DAG
tuple:message id
ask\fail\nextTuple是在同一线程中执行的
核心方法
open 初始化
close 资源释放
nextTuple 发送数据
ack tuple处理成功的返回消息
fail tuple处理失败的返回消息
实现类
public abstract class BaseRichSpout extends BaseComponent implements IRichSpout {
public interface IRichSpout extends ISpout, IComponent
2.IComponent核心接口
概述
public interface IComponent extends Serializable
为topology中所有可能的组件提供公用的方法
void declareOutputFields(OutputFieldsDeclarer declarer);
用于声明Spout/Blot发送的tuple的名称
使用OutputFieldsDeclarer配合使用
3.IBolt核心接口
概述
职责:接收tuple处理,并进行相应的处理
hold住tuple再处理
IBolt会在一个运行的机器上创建,使用Java序列化它,然后提交到主节点
nimbus会启动worker来反序列,调用prepare方法,然后开始处理tuple
核心方法
prepare 初始化
execute 处理一个tuple数据,tuple对象中包含了元数据信息
cleanup shutdown之前的资源清理操作
实现类
四、strom基本命令
http://storm.apache.org/releases/1.2.3/Command-line-client.html
提交作业 bin/storm jar /home/liaomj/app/strom-1.0-SNAPSHOT.jar com.liaomj.ClusterSumStormTopology
查看作业 bin/storm list
杀死作业 bin/strom kill ClusterSumStormTopology