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案例