-
目的
1> 熟悉分布式大数据流式处理的概念和常用技术;
2> 了解开源分布式流式处理平台 Storm 的相关知识;
3> 掌握 Linux 下的 Storm 安装步骤、配置方法和运行管理;
4> 测试 Storm 相关实例参数以及各种指标。
-
内容
1> 请先阅读本地搭建详解 https://blog.csdn.net/u013234360/article/details/101647802,在此基础之上完成集群环境搭建;
2> 完成 WordCountTopology 实例运行。
-
准备
1> 相关包下载链接:https://cloud.tsinghua.edu.cn/d/9ca8781ab69f45c6882d
2> ubuntu20 操作系统下载链接:http://releases.ubuntu.com/focal/ubuntu-20.04.1-desktop-amd64.iso
-
步骤
1> 准备三台虚拟机(ubuntu20版本64bit)ip 分别192.168.209.143、192.168.209.144、192.168.209.145对应 master、slave1、slave2(具体以个人为准),执行命令 vim /etc/hosts 配置所有主机名称和对应 ip 到文件中(每台机器都要配置);
# 主机ip请根据查询到的为主
192.168.209.143 master
192.168.209.145 slave1
192.168.209.144 slave2
2> 执行命令 : ping slave1 或其他主机检查是否配置成功(最好每台机器都检查下);
>> ping master
>> ping slave1
>> ping slave2
3> 在 master 上执行命令 : ssh-keygen -t rsa 出现提示按回车即可,进行免密配置,并在 master 上执行命令 : ssh-copy-id master 拷贝秘钥到集群主机中,包括主机节点;
>> ssh-keygen -t rsa
>> ssh-copy-id master
>> ssh-copy-id slave1
>> ssh-copy-id slave2
免密配置后打开22端口,可通过ssh检查是否可以访问(此步非必须):
>> sudo apt-get install openssh-server
>> sudo ufw enable
>> sudo ufw allow 22
4> 在本地 Zookeeper 搭建完成基础上,添加如下配置到文件 zoo.cfg 中并保存(每台机器都要配置);
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
master、slave1、slave2可分别写成如下(此步非必须):
server.1=0.0.0.0:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server.1=master:2888:3888
server.2=0.0.0.0:2888:3888
server.3=slave2:2888:3888
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=0.0.0.0:2888:3888
5> 本地 Zookeeper 搭建时已经创建了dataDir、dataLogDir 文件夹,此时,需要在 dataDir 文件夹中创建 myid (文件里值,写上一步server.后面那个数字);
要注意权限是用户权限,非root权限,所需要修改如下:
>> sudo chown leeway myid
>> sudo chgrp leeway myid
6> 执行命令 : zkServer.sh start 启动 Zookeeper(每台机器都要启动);
>> zkServer.sh start
7> 查看执行 Jps 启动是否成功,若不成功可以去bin目录下查看报错日志(若报 Connect 问题,需等其他机器启动成功,Reconnect 后可访问2888和3888端口);
>> jps|grep -v JPS
可以通过 netstat -anp | grep 2888 或 3888 查看是否端口启动,若成功启动如下:
若不成功,可放开2888和3888端口, 或直接关闭防火墙,关闭后状态为 inactive(关闭后无法ssh,不建议):
>> sudo iptables -I INPUT -p tcp --dport 2888 -j ACCEPT
>> sudo iptables -I INPUT -p tcp --dport 3888 -j ACCEPT
>> sudo iptables-save
>> sudo ufw disable
>> sudo ufw status
Status: inactive
8> 在本地 Storm 搭建完成基础上,添加如下配置到 storm.yaml 文件中(每台机器都要配置)。
>> cd storm/conf
>> vim storm.yaml
storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
storm.local.dir: "$STORM_HOME/status"
nimbus.seeds: ["master","slave1","slave2"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
此处,启动时可能会在 $STORM_HOME 目录下新建一个名称为 $STORM_HOME 的文件夹,并在该目录下又新建 status 文件夹。
解决方法:将"$STORM_HOME/status"替换为"/home/leeway/Documents/Storm/apache-storm-2.1.0/status"(具体以个人为准)。
9> 在 $STORM_HOME 目录下,执行命令 : mkdir status 创建 storm 状态存储目录(每台机器都要创建);
>> mkdir status
10> 运行 Storm(每台机器都要启动),启动后运行 jps|grep -v JPS 查看,并在浏览器访问 master:8080(启动成功后,访问页面如下);
nohup storm drpc > $STORM_HOME/storm_logs/drpc.log 2>&1 & nohup storm ui >$STORM_HOME/storm_logs/ui.log 2>&1 & nohup storm nimbus > $STORM_HOME/storm_logs/nimbus.log 2>&1 & nohup storm supervisor > $STORM_HOME/storm_logs/supervisor.log 2>&1 & nohup storm logviewer > $STORM_HOME/storm_logs/logviewer.log 2>&1 &
11> 使用 maven 打包 storm-starter 内例子(打包成功后会在 ./target/ 文件夹中生成 storm-starter-2.1.0.jar 文件);
>> cd $STORM_HOME/examples/storm-starter
>> mvn package
12> 运行 WordCountTopology 例子(运行成功提示如下);
>> cd $STORM_HOME/examples/storm-starter/target
>> storm jar storm-starter-2.1.0.jar org.apache.storm.starter.WordCountTopology word-count-test
13> 在 Storm UI 内看到 WordCountTopology 例子正在运行;
14> 在 Storm UI 中查看 WordCountTopology 详细情况;
15> 停止 Storm,执行 jps|grep -v JPS 查找 PID;
27984 DRPCServer
27632 Kafka
22769 QuorumPeerMain
27985 UIServer
27986 Nimbus
27987 Supervisor
27988 LogviewerServer
27974 ZooKeeperMain
16> 杀掉进程,Storm 运行结束。
>> kill -9 PID(上一步查到,可写多个)