Storm流式计算小结+集群故障恢复

storm小结:

storm由Twitter开源,是一个分布式、容错的实时计算系统,基本由Clojure写的,但几乎可以使用任何语言编写应用程序,每秒可处理数以百万计的消息。
离线计算:数据批量获取、传输、周期性批量计算、展示
流式计算:数据实时产生、传输、计算、展示
流式计算就是实时将源源不断的数据收集并计算,尽可能快的得到计算结果,用storm来实时处理数据有低延迟、高可用、分布式、可扩展、数据不丢失等特点。流式计算一般架构为:flume集群从网站系统实时收集数据,并临时存放到kafka集群,storm集群消费并计算数据,最后把统计数据存入redis集群。代表技术有Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、mysql|HBase持久化存储等。

对比图
Storm与Hadoop的编程模型相似,前者用于实时计算,数据通过网络源源不断地传输,存入内存;后者用于离线计算,通过保存在磁盘的数据一批一批的处理。
整理的表格如下:

nameStormHadoopexplain
角色nimbusJobTracker项目经理
-supervisorTaskTracker开发组长、产品经理
-workerChild开发人员
应用名称topologyJob任务名称
编程接口spout/boltMapper/Reducer开发人员中的两种角色,一种是服务器开发、一种是客户端开发

核心组件:
Nimbus:负责资源分配和任务调度;
Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。可通过配置文件设置当前supervisor上启动多少个worker,即设置槽数;
Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务;
Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。

编程模型:
Topology:Storm中运行的一个实时应用程序的名称(拓扑);
Spout:在一个topology中获取源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据;
Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作;
Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple;
Stream:表示数据的流向。


storm故障恢复:

我们使用storm开发程序时,会使用storm ui来观察所启进程,当storm ui的supervisor挂掉的时候,需要重启supervisor,有时候还要重启zookeeper,还有时候因为storm启动进程太多,处理量太大,导致CPU负荷过高,其所在机器会宕机,得联系运维人员到机房重启机器。
当发生宕机的时候,我们在重启supervisor时会报Halting process: ("Error when processing an event") 的错误。原因是服务器突然断电,未能正常退出storm导致。需要到storm ui中(或查看其配置文件),删除storm.local.dir指向的supervisor和workers两个文件夹。(注:在删除文件夹前,需要先把supervisor给kill掉,可手工kill -9 进程号 进程号 …,与此同时,supervisor和workers两个文件夹可能会删除不干净,原因在于残留了其他用户启动的碎片)
使用jps -l命令,把supervisor所在的节点的worerk全部kill掉,再重启supervisor。登录storm-0,必须使用storm账户重启zookeeper和storm。

以下为楼主总结的几点步骤:
1.使用jps -l查看storm-0,zookeeper、nimbus、ui都有启动则正常;
这里写图片描述

2.使用jps -l查看storm-1,zookeeper、supervisor都有启动则正常,如果有不正常的要重启,需要先手动kill掉worker;
这里写图片描述

3.同理,storm-2;
这里写图片描述

4.当zookeeper宕机时,可通过环境变量$PATH,来查找到zookeeper目录。
这里写图片描述
进入其bin目录之后的命令有–>
查看启动情况:zkServers.sh status
启动:zkServers.sh start

然后通过cd $STORM_HOME/bin,启动
storm-0启动nimbus和ui
nohup ./storm nimbus &
nohup ./storm ui &

storm-1和storm-2启动supervisor
nohup ./storm supervisor &
(注意:启动storm相关的程序是默认zookeeper启动正常的)

实际上,在楼主使用的环境出现storm-1频繁宕机的事故,后经排查,storm-1和storm-2的work没有负载均衡,是因为启动supervisor时,加了nohup,不加这个就可以负载均衡,原因未明。把nohup省略掉,即可解决storm-1的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值