storm在生产上跑得很欢快,最近突然遇到一个问题,不知道storm是什么原因,无缘无故的自动停止了。查看日志没有任何的报错信息,包括警告信息都没有,反正就是无缘无故的shut down了。问题分析,初步我们判断应该是系统资源不足导致的,但这只是推测,因为storm集群的这些server都没有做监控,只有后面加上监控才能验证是否是因为资源问题引起的。
好吧!既然遇到问题咱们就解决问题吧!首先网上一搜,还是有很多遇到跟我们一样的问题,但是没有找到一个很好的解决方案。去storm官网一搜索,反复找到了解决办法,“Launches the nimbus daemon. This command should be run under supervision with a tool like daemontools or monit. See Setting up a Storm cluster for more information.”官网上推荐我们把nimbus和supervisor运行在daemontools or monit下面。于是我就点进了daemontools。先在测试机器上安装测试了一下,进程被kill掉,自动就会重启,完全可以满足我们当前遇到的问题。
1、daemontools安装
这里是官网的安装文档:http://cr.yp.to/daemontools/install.html
下面是我们的安装步骤:
mkdir -p /package
cd /package/
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
等待下载安装包,然后解压编译。
gunzip daemontools-0.76.tar.gz
tar -xpf daemontools-0.76.tar
cd admin/daemontools-0.76/
./package/install
直接编译报错了,错误信息:
./compile wait_pid.c ./makelib unix.a alloc.o alloc_re.o buffer.o buffer_0.o buffer_1.o \ buffer_2.o buffer_get.o buffer_put.o buffer_read.o buffer_write.o \ coe.o env.o error.o error_str.o fd_copy.o fd_move.o fifo.o lock_ex.o \ lock_exnb.o ndelay_off.o ndelay_on.o open_append.o open_read.o \ open_trunc.o open_write.o openreadclose.o pathexec_env.o \ pathexec_run.o prot.o readclose.o seek_set.o sgetopt.o sig.o \ sig_block.o sig_catch.o sig_pause.o stralloc_cat.o stralloc_catb.o \ stralloc_cats.o stralloc_eady.o stralloc_opyb.o stralloc_opys.o \ stralloc_pend.o strerr_die.o strerr_sys.o subgetopt.o wait_nohang.o \ wait_pid.o ./load envdir unix.a byte.a /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o /lib64/libc.so.6: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [envdir] Error 1
然后修改src目录下的error.h库文件。
vim src/error.h
找到“extern int errno;” 替换成“#include <errno.h>”,然后再编译。
./package/install
到此,提示下面信息表示成功安装。
Copying commands into ./command... Creating symlink daemontools -> daemontools-0.76... Making command links in /command... Making compatibility links in /usr/local/bin... Creating /service... Adding svscanboot to inittab... init should start svscan now.
2、storm ui、nimbus、supervisor配置
首先进入service目录。
cd /service/
storm ui的配置:
mkdir ui
cd ui/
vim run
run脚本如下:
#!/bin/bash exec 2>&1 exec /opt/app/apache-storm-0.9.5/bin/storm ui
chmod 755 run
nimbus的配置:
cd /service/
mkdir nimbus
cd nimbus/
vim run
run脚本如下:
#!/bin/bash exec 2>&1 exec /opt/app/apache-storm-0.9.5/bin/storm nimbus
chmod 755 run
supervisor的配置:
cd /service/
mkdir supervisor
cd supervisor/
vim run
run脚本如下:
#!/bin/bash exec 2>&1 exec /opt/app/apache-storm-0.9.5/bin/storm supervisor
chmod 755 run
到此一切安装和配置均OK,下面启动吧!
supervise /service/ui &
supervise /service/nimbus &
supervise /service/supervisor &
大功告成,以后这些服务就会自动重启了。当然肯定有同学会问,哪不是以后这些服务就杀不死了嘛!如果不想让某个服务自动重启,用命令ps -ef|grep supervise查看,把相应的进程给kill掉服务就不会自动重启了。
如果希望Storm随操作系统的启动而启动的话,在/etc/rc.local脚本里面添加如下配置:
export JAVA_HOME=/opt/app/jdk1.8.0_92
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
/usr/local/bin/supervise /service/ui
/usr/local/bin/supervise /service/nimbus
/usr/local/bin/supervise /service/supervisor
注:首先要指定JDK的环境变量,supervise要使用全路径。
相关推荐
一旦完成这些步骤,就可以启动Storm集群的各个后台进程,包括Nimbus和Supervisor,开始运行实时流处理应用。 Storm集群的搭建是构建实时处理系统的第一步,后续还需要对Topologies(拓扑结构)进行定义,以实现特定...
【标题】"storm集群启动与停止脚本共2页.pdf.zip" 提供的是一份关于storm集群管理的文档,主要涵盖了如何启动和停止storm集群的关键步骤。Storm是Apache开源的一个分布式实时计算系统,它能够处理大规模的数据流并...
在本文中,我们将搭建一个3节点的Storm集群,每个节点上都部署了Supervisor和LogViewer服务。此外,还需要在每个节点上部署ZooKeeper服务,以便于集群之间的协调管理。 二、前置条件 Storm的运行依赖于Java 7+和...
Storm集群的部署和配置是构建实时大数据处理系统的关键步骤,本文将详细讲解这一过程。Storm是一个分布式实时计算系统,能够处理大规模数据流,确保每个事件都得到正确的处理。以下是搭建Storm集群的详细步骤: 1. ...
本文档主要介绍如何在多台服务器上部署一个完整的Storm集群,其中包括JDK安装、Zookeeper集群安装以及Storm集群的搭建。整个过程分为三个主要部分:Java环境(JDK)的安装、Zookeeper集群的配置以及Storm集群的具体...
5. **启动Storm**:在Nimbus节点上启动`bin/storm nimbus`,在其他Supervisor节点上启动`bin/storm supervisor`。这些命令会启动Storm的守护进程。 6. **提交拓扑**:编写Java代码实现Spout和Bolt,构建Storm拓扑。...
### Storm集群部署知识点 #### 一、Storm集群简介 Apache Storm 是一款开源的分布式实时计算系统,它提供了简单而强大的API来处理无限的数据流。Storm的设计使其能够支持各种类型的流处理应用,包括实时分析、在线...
首先,Storm部署前需要准备的依赖RPM包主要包括Java开发环境(JDK)、Zookeeper、Nimbus、Supervisor和UI等组件。JDK是运行Storm的基础,确保安装了JDK 8或更高版本。Zookeeper是一个分布式协调服务,用于管理Storm...
在集群上运行时,Storm会自动将topology分配到可用的工作节点上,并根据拓扑定义进行数据处理。为了监控topology的状态,可以使用Storm UI,它是一个基于Web的界面,可通过集群的Nimbus节点的指定端口访问(默认为...
Storm的核心组件包括Nimbus(协调者)、Supervisor(管理者)以及Worker(工作者)。本文将详细介绍如何在Linux环境下从零开始搭建一个Storm集群。 #### 二、准备阶段 在开始搭建之前,确保具备以下条件: 1. **...
4. **启动服务**:分别在ZooKeeper、Nimbus和Supervisor节点上启动ZooKeeper、Nimbus和Supervisor服务。 ### 四、集群监控与管理 - 使用`storm ui`命令可以打开Storm Web UI,监控集群状态,包括拓扑、worker、...
- **启动Storm服务**:依次启动Zookeeper、Nimbus、Supervisor和UI服务,确保所有服务正常运行。 2. **Java客户端测试代码**: - **storm-starter**:通常,Storm的Java客户端测试代码会基于storm-starter项目,...
Storm集群由Nimbus、Supervisor、ZooKeeper等组件组成,Nimbus负责资源的分配和任务调度,Supervisor负责执行任务,ZooKeeper负责集群的状态维护。 本文档是关于Storm源码的详细走读笔记,主要分析了Storm的启动...
3. 部署和配置Storm集群,包括nimbus和supervisor节点。 4. 开发Storm拓扑,定义spouts和bolts,实现数据处理逻辑。 5. 将拓扑提交到Storm集群,进行实时处理。 6. 实时监控系统性能,根据需要调整参数或优化代码。 ...
工作者在节点上运行,负责执行拓扑中的任务,而Nimbus和Supervisor是Storm集群的管理组件,Nimbus负责任务调度,Supervisor则在各个节点上管理工作者进程。 安装Storm 0.9.0在Linux上通常涉及以下几个步骤: 1. **...
Storm集群是由一个主节点(Nimbus)和多个工作节点(Supervisor)构成的。Nimbus负责任务分配,而Supervisor负责执行任务。Storm的处理单元是Topology,它包含了Spout和Bolt。Spout负责数据的输入,而Bolt负责处理...
Storm UI 是一个用于查看和管理 Storm 集群的 Web 界面,Nimbus 是 Storm 集群的控制节点,负责管理和协调整个 Storm 集群的操作。Supervisor 是 Storm 集群的工作节点,负责执行 Storm 任务。ZooKeeper 是一个...
总的来说,Apache Storm是一个强大的实时计算框架,对于需要实时处理大量数据的应用场景,如实时广告定向、社交网络分析、物联网设备数据处理等,提供了高效且灵活的解决方案。通过深入理解和实践,我们可以掌握如何...
- 启动Storm Supervisor和Nimbus等组件。 - **监控与调试**: - 使用Storm UI进行集群状态监控。 - 调整配置以优化性能或解决故障。 #### 六、总结 通过上述步骤,我们可以完成Storm集群的基础安装与配置工作。...
1. **bin**:这个目录包含了一系列可执行脚本,用于启动、停止Storm服务,如`storm nimbus`(Nimbus主节点)、`storm supervisor`(Supervisor节点)和`storm ui`(Web UI)等。 2. **conf**:配置文件存放在这里,...