版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leprovision/article/details/74191534
在学习Storm的时候我们先要自己搜点有关Storm的简介,要对它充满好奇感!好了废话不多说,言归正传。
一.Storm是什么?
storm是一个流式实时计算框架。能实现高频[指实时]数据和大规模数据的实时处理
二.Storm的组成有哪些?
Topology 用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job
Stream 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理
Spouts 消息源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple
Bolts 消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生新的输出数据流,可执行过滤,聚合,查询数据库等操作
Task 每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.
Stream groupings 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如何分配给Bolts们.
三.storm的可靠性?
第一集群的可靠性:zk保存了Nimbus和多个Supervisor的状态信息,如果宕机可以重启进程或机器再次读取Zk中的状态信息让topology恢复到之前的状态。
第二acker机制:每一个tuple默认都会伴随一个acker线程来保证每一个tuple的发送成功这样可以保证数据的不丢失也可以手动关闭。
四.storm集群:一主多从
主节点:nimbus
负责分发代码,分配任务
从节点:supervisor
生产worker(进程),执行任务
主从节点的状态都维护在zookeeper中
nimbus ---->zookeeper-->supervisor
五.storm的安装步骤
1:先安装zk集群
192.168.8.115 192.168.8.116 192.168.8.117
2:strom集群
主节点:192.168.8.117
从节点:192.168.8.115、116
修改storm的配置文件
vi storm/conf/storm.yaml
storm.zookeeper.servers:
- " 192.168.8.115"
- "192.168.8.116"
- "192.168.8.117"
nimbus.host: "192.168.8.117"
storm.local.dir: "/usr/local/storm/tmp"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
注意:storm.zookeeper.servers和nimbus.host是必须要修改的
storm.local.dir建议修改
supervisor.slots.ports可选
注意:storm集群中所有节点的基本配置一样
把170上的storm拷贝到其他节点
scp -rq storm/ 192.168.1.172:/usr/local/
scp -rq storm/ 192.168.1.173:/usr/local/
3:启动不同节点的服务
主节点:192.168.1.171(ui可以在任何节点启动,建议只在主节点启动即可)
nimbus:nohup bin/storm nimbus >/dev/null 2>&1 &
ui:nohup bin/storm ui >/dev/null 2>&1 &
http://192.168.1.171:8080
从节点:192.168.1.172、173
supervisor:nohup bin/storm supervisor >/dev/null 2>&1 &
logviewer:nohup bin/storm logviewer >/dev/null 2>&1 &
相当于把storm的logs目录中的文件发布成web项目(可以在webui界面直接访问logs目录中的日志)
注意:如果发现在ui界面无法查询日志,
1:logviewer进程没启动
2:从节点的主机名和ip的映射关系没有再本机配置
4:提交一个topology到集群
提交
bin/storm jar storm.jar cn.crxy.storm_4.RemoteStormTopology aaa
停止:
1:ui页面做,点击进入topology的明细页面
2:在命令行中
bin/storm list :查看storm中的所有topology信息
bin/storm kill RemoteStormTopology
注意:提交和停止在所有节点都可以
Netty:是一个数据传输框架,storm中worker之间通信使用的是netty
storm rebalance mytopology -w 10 -n 5 -e blue-spout=3 -e yellow-bolt=10
-w :waittime
-n :numworker
-e :调整组件使用的线程数量