Strom概述及部署

一、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

 

   

上一篇:strom 简单案例


下一篇:strom