storm系列之一

1 storm

    对比Hadoop的批处理,Storm是个实时的、分布式以及具备高容错的计算系统
    同hadoop一样,strom也可以处理大批量的数据,storm可以保证高可靠性的前提下还可以让批处理进行的实时

2 storm架构

    Nimbus守护进程,用于分配代码、布置任务及故障检测
    Supervisor守护进程用于监听工作,开始并终止工作进程
    Nimbus和Supervisor快速失败,由zookeeper管理
    ZeroMQ是其内部消息系统
    Topology一个job,组件接口为Spout/Bolt
    Spout是在Topology中产生数据流的组件
    Bolt是在Topology中接收数据然后执行处理的组件

3 storm使用场景

    3.1 流聚合
        流聚合把两个或者多个数据流聚合成一个数据流
    3.2 批处理
        将一组tuple一起处理,而不是一个个单独处理,为了性能原因
    3.3 BasicBolt
        读入一个tuple
        根据这个输入tuple发射一个或者多个tuple
        在execute的方法的最后ack哪个输入tuple
    3.4 缓存
    3.5 topN

4 storm的消息分发策略

    4.1 随机分组 (shuffle grouping)
        随机分发tuple到bolt任务,保证每个任务获得相等数量的tuple
    4.2 字段分组 (fields grouping)
        根据指定字段分割数据流,并进行分组
    4.3 全部分组 (all grouping)
        tuple被复制到bolt的所有任务
    4.4 全局分组(global grouping)
        全部流都分配到bolt的同一个任务
    4.5 无分组(non grouping)
        无分组相当于随机分组
    4.6 直接分组(direct grouping )
        元组生产这决定tuple由哪个元祖处理者任务接收

5 storm安装

    jdk、zookeeper安装
    centos7自带python2.7

    storm0.9之前底层采用zeroMQ,0.9之后底层采用netty

    master   Nimbus  ui
    slave1    Supervisor
    slave2    Supervisor

    [root@master local]# tar -zxvf apache-storm-1.0.3.tar.gz
    [root@master local]# cd apache-storm-1.0.3/conf/
    [root@master conf]# vi storm.yaml
        storm.zookeeper.servers:
             - "master"
             - "slave1"
             - "slave2"
        storm.zookeeper.port: 2181
        storm.zookeeper.root: "/storm"

        nimbus.seeds: ["master"]
        supervisor.slots.ports:
             - 6700
             - 6701
             - 6702
             - 6703

        storm.local.dir: "/usr/local/apache-storm-1.0.3/data/"
        ui.port: 10080

    [root@master local]# scp -r apache-storm-1.0.3 slave1:/usr/local/
    [root@master local]# scp -r apache-storm-1.0.3 slave2:/usr/local/

    [root@master apache-storm-1.0.3]#  bin/storm nimbus >/dev/null 2>&1 &
    [root@master apache-storm-1.0.3]#  bin/storm ui >/dev/null 2>&1 &
    [root@slave1 apache-storm-1.0.3]#  bin/storm supervisor >/dev/null 2>&1 &
    [root@slave2 apache-storm-1.0.3]# bin/storm supervisor >/dev/null 2>&1 &

 6 strom组件

    每一个supervisor运行着若干个worker
    每一个worker中运行着Task,Task包含spout或者bolt
    
7 storm对象的生命周期

    7.1 spout方法调用顺序
        
        declareOutputFields()
        open()
        activate()
        nextTuple()   循环调用
        deactivate()

    7.2 bolt方法调用顺序

        declareOutputFields()
        prepare()
        execute()  循环调用

8 storm高可用

    会将失效的worker转移到别的supervisor节点
    
    在tuple tree中创建了一个新节点,明确通知Storm
    当处理完一个单独的消息时,明确通知Storm,这棵tuple tree的变化状态
    通过上面两步,storm就可以检测一个tuple tree何时被完全处理,并且会调用相关ack或fail
    总结来说,就是消息处理失败了,会调用fail方法,可在该方法中重新发送一次消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值