Storm - 集群的安装部署教程
作者:hangge | 2025-02-08 09:13
Apache Storm 是一个开源的、分布式的实时计算系统,用于处理大规模数据流。它提供了强大的实时数据处理能力,使得用户能够高效地处理、分析和响应数据流。本文以 CentOS 系统为例,演示如何在多节点上搭建和部署 Storm 集群。
(2)为方便后续 Kafka 集群的配置,我们在三台服务上均执行如下命令编辑的 host 文件,使得可以通过主机名相互访问:
(3)需要在集群中的所有节点上安装配置 JDK。关于 JDK 的安装可以参考我之前写的文章:
(4)由于 Storm 需要依赖 ZooKeeper,因此我首先需要准备 ZooKeeper 环境,具体步骤可以参考我之前写的文章:
(2)接着执行如下命令解压下载下来的压缩:
(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
(2)文件中添加如下内容:
(3)最后,将 node1 机器上修改好配置的 Storm 安装包复制到另外两台机器中:
(2)接下来启动 Storm 集群。
1,准备工作
(1)首先我们准备三台 linux 服务器进行集群搭建,具体信息如下:
主机名 | 内网 IP | 外网 IP |
node1 | 172.31.4.99 | 13.211.44.248 |
node2 | 172.31.3.72 | 3.106.170.197 |
node3 | 172.31.6.103 | 3.25.88.196 |
(2)为方便后续 Kafka 集群的配置,我们在三台服务上均执行如下命令编辑的 host 文件,使得可以通过主机名相互访问:
echo ' 172.31.4.99 node1 172.31.3.72 node2 172.31.6.103 node3' >> /etc/hosts
(3)需要在集群中的所有节点上安装配置 JDK。关于 JDK 的安装可以参考我之前写的文章:
注意:
- Storm 2.5.0 以及之前的版本支持 JDK 1.8
- Storm 2.6.0 以及之后的版本不再支持 JDK 1.8,最低要求 JDK 11
(4)由于 Storm 需要依赖 ZooKeeper,因此我首先需要准备 ZooKeeper 环境,具体步骤可以参考我之前写的文章:
2,下载并解压 Storm 安装包
注意:这里我下载的是 2.5.0 版本,也是最后一个支持 JDK1.8 的版本,后续版本最低要求 JDK 11。
wget https://archive.apache.org/dist/storm/apache-storm-2.5.0/apache-storm-2.5.0.tar.gz
(2)接着执行如下命令解压下载下来的压缩:
tar -zxvf apache-storm-2.5.0.tar.gz
(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
mv apache-storm-2.5.0 /usr/local/storm
3,修改配置文件
(1)进入 Storm 的 conf 目录,并编辑 storm.yaml 配置文件:
cd /usr/local/storm/conf/ vi storm.yaml
(2)文件中添加如下内容:
注意:storm.yaml 这个配置文件是 YAML 格式的。使用两个空格作为一级缩进是 YAML 格式的约定,不能使用制表符(Tab)来代替。
# 指定 Storm 集群使用的 Zookeeper 集群的地址 storm.zookeeper.servers: - "node1" - "node2" - "node3" # 指定 Master 节点信息,可以指定多个以实现 HA,用逗号隔开 nimbus.seeds: ["node1"] # Storm 集群的工作目录 storm.local.dir: "/data/storm-work" # 指定 Worker 节点可用的端口,每个端口可以启动一个 Worker Process # 建议指定的可用端口个数和 Worker 节点的空闲 CPU 数量相等,这样可以发挥集群的最大性能 supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 # 修改 Storm Web 界面的默认端口,因为 Zookeeper 默认会占用 8080 端口从而导致冲突 ui.port: 8081
(3)最后,将 node1 机器上修改好配置的 Storm 安装包复制到另外两台机器中:
scp -rq /usr/local/storm node2:/usr/local/ scp -rq /usr/local/storm node3:/usr/local/
4,启动集群
(1)依次进入各服务器的 ZooKeeper 的 bin 目录后执行如下命令启动 ZooKeeper 服务:
./zkServer.sh start
(2)接下来启动 Storm 集群。
- 在 node1 上启动 Nimbus 进程和 UI 进程:
nohup bin/storm nimbus >/dev/null 2>&1 & nohup bin/storm ui >/dev/null 2>&1 &
- 在 node2 和 node3 上启动 Supervisor 进程:
nohup bin/storm supervisor >/dev/null 2>&1 &
- 在 node1、node2 和 node3 上启动 Logviewer 进程:
nohup bin/storm logviewer >/dev/null 2>&1 &
5,验证 Storm 集群
(1)在 node1 上执行 jps 命令,会发现 Nimbus、UIServer 和 LogviewerServer 这几个 Storm 的进程。

(2)在 node2、node3 上执行 jps 命令,会发现 Supervisor 和 LogviewerServer 这两个 Storm 的进程。如果发现 Storm 相关的进程都在,则说明 Storm 集群成功启动了。

(3)Storm 提供了 Web 界面,也可以通过浏览器确认集群是否正常工启动,访问地址为“http://UI节点IP:8081”

6,停止 Storm 集群
(1)如果要停止 Storm 集群,则需要使用 jps 命令找到 Storm 集群中所有进程的 PID。

(2)然后使用 kill 命令停止进程,因为在 Storm 脚本中没有提供停止命令。每个节点都要进行同样的操作。
kill 2036 kill 2037 kill 2301
全部评论(0)