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