Storm集群如图所示:
图片1
其中包含一个nimbus节点和多个supervisor节点:
1)nimbus,负责在集群中分发代码,分配计算任务,监控失败等;
2)supervisor,负责在集群中按照nimbus的分配,启动和停止计算任务;
3)worker,实际执行spout和bolt任务的进程;
在Storm安装目录下,可通过执行以下命令启动nimbus和supervisor进程(需先安装Python):

bin/storm nimbus|supervisor

nimbus和supervisor进程都是无状态和fail-fast的,状态保存在zookeeper和本地磁盘,当任何一个进程失败时,通过重启进程,可以快速恢复。Storm官方建议使用daemontools(http://cr.yp.to/daemontools.html)监控nimbus和supervisor进程,当有进程失败时,daemontools可以重启进程。

安装daemontools

摘自http://cr.yp.to/daemontools/install.html。
1)创建/package目录:

mkdir -p /package
chmod 1755 /package
cd /package

2)下载daemontools-0.76.tar.gz至/package,解压:

gunzip daemontools-0.76.tar
tar -xpf daemontools-0.76.tar
rm -f daemontools-0.76.tar
cd admin/daemontools-0.76

3)编译、启动daemontools:

package/install

daemontools会启动2个进程:
1
其中svscan默认扫描/service目录,可以在/service中配置需要监控的进程。daemontools使用supervise命令启动需要监控的进程,并在进程失败时,重启进程。

启动nimbus和supervisor进程

启动nimbus进程

在nimbus节点的/service目录,创建nimbus和ui子目录,并在nimbus和ui目录中分别创建名称为run的脚本。
nimbus目录中的run脚本为:

ui目录中的run脚本为:

run脚本其实就是使用storm命令启动nimbus和ui进程。
daemontools扫描到上述配置后,使用supervise命令执行run脚本,启动nimbus和ui进程:
1
1

启动supervisor进程

与nimbus节点类似,在supervisor节点的/service目录,创建supervisor子目录,并在supervisor目录中创建名称为run的脚本:

配置完成后,可以通过ui看到所有节点已启动:
3_副本

Kylin构建源码分析

1 摘要 Kylin作为MOLAP的代表之一,其核心思想是设计cube模型,指定维度和量度,通过在维度上进行量度的预先上卷计算,保存上卷结果,以空间换时间,加速维度...

阅读全文

使用Hive存储数据实践

数据存储需求是:每天会生成大量文章数据,每条文章数据包含标题、内容、URL、发表时间等多个字段,数据后续不会更新,因此考虑使用Hive作为数据仓库存储这些...

阅读全文

storm-kafka KafkaSpout原理分析

Storm Spout 通过实现Storm中的ISpout接口,重写其中的nextTuple、ack和fail方法,可以实现tuple流的发送、成功确认、失败重发。ISpout接口代码如下所示。 ...

阅读全文