Storm:实时处理领域的Hadoop
在 Storm 集群中,有两类节点:主节点 master node 和工作节点 worker nodes。主节点运行着一个叫做 Nimbus 的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个 Storm 拓扑结构在不同的机器上运行着众多的工作节点。Storm基本概念
Nimbus:主节点Supervisor:从节点
Worker:任务工作进程,类似于YARN的
ApplicationMaster,可以存在多个,不同的任务有不同的Worker
Executor:Worker进程在执行任务时,会启动多个Executor现成
Topology:task任务的拓扑结构,是一个DAG有向无环图
storm安装
1、官网网站:storm.apache.org下载安装包 链接:http://pan.baidu.com/s/1pLwj4dt 密码:resv2、$ tar -zxf apache-storm-0.9.6.tar.gz -C /opt/modules/
3、修改配置文件storm_env.ini(jdk环境)、storm.yaml(配置帮助页面)
4、启动三台节点的zookeeper集群$ /opt/modules/cdh/zookeeper-3.4.5-cdh5.3.6/bin/zkServer.sh start
5、Step4、启动Nimbus和UI进程 $ nohup bin/storm nimbus > /dev/null 2>&1 & $ nohup bin/storm ui > /dev/null 2>&1 &
6、启动Supervisor和logviewer进程
7、登录z01:8081查看storm集群启动情况,如下图所示
8、运行topo $ bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar WordCountTopology wordcount
TopologyBuilder分组方式
shuffleGrouping随机分组,尽量均匀分布到下游(常用)fieldsGrouping按字段分组(常用)
allGrouping 副本分组,每个目标组件均收到同一个Tuple
globalGrouping 全局分组,所有数据项发送给ID最小的那个任务(一个bolt)所处理。
directGrouping(boltname1) 直接分组
java代码
Config conf = new Config();//继承自mapTopologyBuilder builder = new TopologyBuilder();
KafkaSpout kafkaSpout = new KafkaSpout(kafkaSpoutConfig);//程序入口,输入流
builder.setSpout("kafkaSpout", kafkaSpout, kafkaSpoutNums);//设置spout、bolt到topo中
builder.setBolt(BoltName, bolt,bolt线程数).shuffleGrouping(上个boltName, "stream");//.fieldsGrouping("","", new Fields("deviceId"));
LocalCluster cluster = new LocalCluster(); //本地模式
cluster.submitTopology("Getting-Started-Toplogie", conf, builder.createTopology());
//StormSubmitter.submitTopology("mytopology", conf, builder.createTopology());//生产模式