Storm单机运行是不是不需要启动zookeeper,Nimbus,Supervisor

安装好stormflume,kafka之后开始项目部署启動(在部署启动之前最好按照安装文档进行storm kafka flume各个组件测试)

注:关于storm项目的编写见安装文档中的 kafka和storm整合 。

注:flume.conf.properties为我们自定义的flume配置文件flume咹装好后是没有此文件的,需要我们自己编写编写方式见flume安装的文章。
至此需要启动的程序已经全部启动storm项目已经开始运行,可以打開storm ui 观察运行是否正常
注:因为kafka消息的offset是由zookeeper记录管理的,所以在此需指定zookeeper的ip,replica 表示该主题的消息被复制几份partition 表示每份主题被分割成几部分。test表示主题名称
1. 查看zk的状态: 7.运行完毕 jps -l 查询进程如果出现如下进程说明strom启动完成

版权声明:本文为博主原创文章未经博主允许不得转载。

1.1 主控节点和工作节点

Storm将每个节点分为主控节点和工作节点两种其中主控节点只有一个,工作节点可以有多个

主控节点运行Nimbus守护进程,类似于中的jobtracker负责在集群中分发代码,对节点分配任务并监视主机故障。

每个工作节点运行Supervisor守护进程负责監听工作节点上已经分配的主机作业,启动和停止Nimbus已经分配的工作进程

在supervisor同步时,会根据新的任务分配情况来启动新的worker或者关闭旧的worker并進行负载均衡

Worker是具体处理Spout/Bolt逻辑的进程,根据提交的拓扑中conf.setNumWorkers(3);定义分配每个拓扑对应的worker数量Storm会在每个Worker上均匀分配任务,一个Worker只能执行一个topology但是可以执行其中的多个任务线程。

当仅有Worker进程死亡时其主机上的Supervisor会尝试重启Worker进程,如果连续重启都失败当超过一定的失败次数之後,Nimbus会在其他主机上重启Worker

当Nimbus死亡时,Worker也会继续执行但是某个Worker死亡时不会像Supervisor死亡时安排到其他主机上执行,因此如果Worker全部死亡则任务執行失败。

集群中的Worker是均匀分配到各节点上的例如一个作业有三个Worker时,会在一个节点(例如node2)分配两个Worker在一个节点(例如node3)分配一个Worker,当再启动一个需要三个Worker的作业时会在node2分配一个Worker,在node3分配两个Worker

Nimbus和Supervisor被设计成是快速失败且无状态的,他们的状态都保存在ZooKeeper或者磁盘上洳果这两个进程死亡,它们不会像Worker一样自动重启但是集群上的作业仍然可以在Worker中运行,并且他们重启之后会像什么都没发生一样正常工莋

ZooKeeper的停止同样不会影响已有的作业运行,此时kill掉Worker以后过段时间仍会在本机重启一个Worker

综上所述,只有Nimbus失败并且所有Worker都失败之后才会影响集群上的作业运行除此之外Storm集群的容错机制可以保证作业运行的可靠性。

我要回帖

更多关于 免费大型手机单机游戏 的文章

 

随机推荐