Storm实时计算和MapReduce

Storm和Mapreduce的基本概念和主要流程以及项目示例

Storm基本概念

01.系统级别
            Nimbus:负责资源分配和任务调度
             Supervisor:负责接受nimbus分配的任务,
                        启动和停止属于自己管理的worker进程
            Worker:运行具体处理组件逻辑的进程
                    executor  task
02.应用名称  Topology<拓扑>
03.组件接口 Spout/Bolt
   Bolt  接受数据然后执行处理的组件
04.数据.  Tuple、  Stream、  Stream Grouping
stream是一个没有边界的tuple序列

Storm主要流程

    01.Spout会从外部数据源(队列、数据库等)读取数据,
          然后封装成Tuple形式,之后发送到Stream中
    02.bolt可以接收任意多个输入stream, 作一些处理。 
                       有些bolt可能还会发射一些新的stream
    03.数据流分组就是将数据流进行分组,按需要进入不同的bolt中
           8种内置的数据流分组方法

Storm案例

1.POM依赖
   storm-core

2.引入包
    import org.apache.storm.Config;
    import org.apache.storm.LocalCluster;
    import org.apache.storm.StormSubmitter;
    import org.apache.storm.topology.TopologyBuilder;
    import org.apache.storm.utils.Utils;

    //编写Spout
        backtype.storm.spout.SpoutOutputCollector;
        backtype.storm.topology.base.BaseRichSpout;

        SpoutOutputCollector 
          extends BaseRichSpout{
          01.collector.emit()方法发射tuple
          02.declarer.declare
           }
    //编写bolt  
          extends BaseBasicBolt {
           execute
          }
    //编写运行程序的入口类
       01. 创建拓扑,然后设置的数据源所在的类
           TopologyBuilder
                 TopologyBuilder builder = new TopologyBuilder();  
      02.
            builder.setSpout("spout", new RandomSpout());  
            builder.setBolt("exclaim", new ExclaimBasicBolt()).shuffleGrouping("spout");  
            builder.setBolt("print", new PrintBolt()).shuffleGrouping("exclaim"); 
        03.提交方式
3.打包

4.运行

与MapReduce类比

MapReduce基本概念

01.系统级别
             JobTracker :负责资源分配和任务调度  资源管理器
             TaskTracker:负责接受nimbus分配的任务,节点管理
            Worker:运行具体处理组件逻辑的进程
                    executor  task
            Slot                容器

02.应用名称 Job 03.组件接口 Maper/ Reducer 04.数据. 以键值对作为输入和输出

MapReduce主要流程

Map函数
    org.apache.hadoop.mapreduce.Mapper
Reduce函数
   org.apache.hadoop.mapreduce.Reducer
MapReduce案例

blogroll

social