部署环境
软件 | 版本 |
---|---|
Ubuntu | 18.04.2 |
JDK | 8u221 |
Strom | 1.2.2 |
Zookeeper | 3.4.14 |
事前准备
共享目录
1 设置->共享文件夹
2. 键入如下命令,参数share为上一步中共享文件夹名称,参数 /mnt/share/为linux上文件夹路径
sudo mount -t vboxsf share /mnt/share
安装JDK
1.解压
sudo tar -zxvf jdk-8u211-linux-x64.gz -C /opt
2.改变文件所有者
sudo chown -R 用户名:用户组名 /opt/jdk1.8.0.211
3.设置环境变量
sudo gedit ~/.bashrc
4.在文末添加环境变量,保存退出
#jdk
export JAVA_HOME=/opt/jdk1.8.0_211
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
5.生效环境变量
source ~/.bashrc
6.验证
java -version
安装Zookeeper
1.解压
sudo tar -zxvf zookeeper-3.4.14.tar.gz -C /opt
2.设置环境变量
sudo gedit ~/.bashrc
3.在文末添加环境变量,保存退出
#zookeeper
export ZK_HOME=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZK_HOME/bin
4.生效环境变量
source ~/.bashrc
5.创建数据、日志文件夹
cd /opt/zookeeper-3.4.14/
mkdir data
mkdir logs
6.创建集群文件,将zookeeper文件夹拷贝3份
cd /opt
sudo mkdir zookeeper
sudo cp -r zookeeper-3.4.14 zookeeper/1
sudo cp -r zookeeper-3.4.14 zookeeper/2
sudo cp -r zookeeper-3.4.14 zookeeper/3
7.改变文件所有者
sudo chown -R 用户名:用户组名 /opt/zookeeper
8.修改3个节点的配置文件
cd /opt/zookeeper/1/conf #进入配置文件目录
cp zoo_sample.cfg zoo.cfg #拷贝本地配置文件
sudo gedit zoo.cfg #编辑本地配置文件
9.分别添加Zookeeper配置
dataDir和dataLogDir分别为各节点对应路径
clientPort三个不同即可,如:2181、2182、2183
dataDir=/opt/zookeeper/1/data
dataLogDir=/opt/zookeeper/1/logs
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
server.1=localhost:4181:5181
server.2=localhost:4182:5182
server.3=localhost:4183:5183
10.创建ServerID
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
即对应上一步设置中server.1
echo "1" > /opt/zookeeper/1/data/myid
echo "2" > /opt/zookeeper/2/data/myid
echo "3" > /opt/zookeeper/3/data/myid
11.启动三个节点
cd /opt/zookeeper/1/bin
zkServer.sh start ../conf/zoo.cfg
cd /opt/zookeeper/2/bin
zkServer.sh start ../conf/zoo.cfg
cd /opt/zookeeper/3/bin/
zkServer.sh start ../conf/zoo.cfg
12.验证
(1)全部启动后,进程查看,有3个QuorumPeerMain。
集群3个节点有一个未启动,执行 status指令会报错。
cd /opt/zookeeper/1/bin
zkServer.sh status
jps
(2)客户端
cd /opt/zookeeper/1/bin
#客户端
./zkCli.sh -server localhost:2181
Storm安装
1.解压
sudo tar -zxvf apache-storm-1.2.2.tar.gz -C /opt
2.设置环境变量
sudo gedit ~/.bashrc
3.在文末添加环境变量,保存退出
#storm
export STORM_HOME=/opt/apache-storm-1.2.2
export PATH=$PATH:$STORM_HOME/bin
4.生效环境变量
source ~/.bashrc
5.创建集群文件,将storm文件夹拷贝3份
cd /opt
sudo mkdir zookeeper
sudo cp -r apache-storm-1.2.2 storm/1
sudo cp -r apache-storm-1.2.2 storm/2
sudo cp -r apache-storm-1.2.2 storm/3
6.改变文件所有者
sudo chown -R 用户名:用户组名 /opt/storm
7.修改3个节点的配置文件
sudo gedit /opt/storm/1/conf/storm.yaml #编辑本地配置文件
8.分别添加storm配置
主节点: server1
# 指定zookeeper地址,集群的话配置多个server
storm.zookeeper.servers:
- "localhost"
# - "server2"
storm.zookeeper.port: 2181
#ui.port: 8085
# storm主节点,多个主节点的话配置多个host
nimbus.seeds: ["localhost"]
#nimbus.host: "localhost"
# 提交的topology都会上传到该目录,需要手动创建tmp目录
storm.local.dir: "/opt/storm/1/tmp"
# 开启的槽数量,supervisor上能够运行workers的端口列表.每个worker占用一个端口,且每个端口只运行一个worker.通过这项配置可以调整每台机器上运行的worker数.(调整slot数/每机)
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
# 如上注意,-和:之后都有空格;如果要搭建Storm的HA,只需要在nimbus.seeds中设置多个nimbus即可。
#Storm的event logger的功能默认是禁用的,需要在配置文件中设置:topology.eventlogger.executors: 1
从节点:server2
# 指定zookeeper地址,集群的话配置多个server
storm.zookeeper.servers:
- "localhost"
# - "server2"
storm.zookeeper.port: 2182
#ui.port: 8085
# storm主节点,多个主节点的话配置多个host
nimbus.seeds: ["localhost"]
#nimbus.host: "localhost"
# 提交的topology都会上传到该目录,需要手动创建tmp目录
storm.local.dir: "/opt/storm/2/tmp"
# 开启的槽数量,supervisor上能够运行workers的端口列表.每个worker占用一个端口,且每个端口只运行一个worker.通过这项配置可以调整每台机器上运行的worker数.(调整slot数/每机)
supervisor.slots.ports:
- 6800
- 6801
- 6802
- 6803
# 如上注意,-和:之后都有空格;如果要搭建Storm的HA,只需要在nimbus.seeds中设置多个nimbus即可。
#Storm的event logger的功能默认是禁用的,需要在配置文件中设置:topology.eventlogger.executors: 1
从节点:server3
# 指定zookeeper地址,集群的话配置多个server
storm.zookeeper.servers:
- "localhost"
# - "server2"
storm.zookeeper.port: 2183
#ui.port: 8085
# storm主节点,多个主节点的话配置多个host
nimbus.seeds: ["localhost"]
#nimbus.host: "localhost"
# 提交的topology都会上传到该目录,需要手动创建tmp目录
storm.local.dir: "/opt/storm/3/tmp"
# 开启的槽数量,supervisor上能够运行workers的端口列表.每个worker占用一个端口,且每个端口只运行一个worker.通过这项配置可以调整每台机器上运行的worker数.(调整slot数/每机)
supervisor.slots.ports:
- 6900
- 6901
- 6902
- 6903
# 如上注意,-和:之后都有空格;如果要搭建Storm的HA,只需要在nimbus.seeds中设置多个nimbus即可。
#Storm的event logger的功能默认是禁用的,需要在配置文件中设置:topology.eventlogger.executors: 1
9.启动Storm
#启动nimbus
/opt/storm/1/bin/storm nimbus &
#启动ui,在nimbus.host所属的机器上启动ui服务;查看storm集群:访问nimbus.host:/8080,即可看到storm的ui界面
/opt/storm/1/bin/storm ui &
#启动supervisor
/opt/storm/2/bin/storm supervisor &
/opt/storm/3/bin/storm supervisor &
#启动日志查询 :host:8000
/opt/storm/1/bin/storm logviewer &
10.验证
(1)Storm UI
打开http://localhost:8080
(2)jps
11.杀死Storm服务
jps
#杀死jps显示的进程
sudo kill 进程id
12.相关问题解决
(1)出现如下问题
/opt/apache-storm-1.2.2/bin/storm: 行 48: 10 * 行 + 行: 语法错误: 需要操作数 (错误符号是 "行 + 行")
/opt/apache-storm-1.2.2/bin/storm: 行 49: ((: < 26 : 语法错误: 需要操作数 (错误符号是 "< 26 ")
/opt/apache-storm-1.2.2/bin/storm: 行 77: /usr/bin/python: 没有那个文件或目录
storm文件中Python指向不对,可对storm文件进行如下修改:
(1)打开文件
cd /opt/apache-storm-1.2.2/bin
sudo gedit storm
(2)替换为你的Python版本
# find pyhton >= 2.6
if [ -a /usr/bin/python2.6]; then
PYTHON=/usr/bin/python3
fi
if [ -z "$PYTHON" ]; then
PYTHON=/usr/bin/python3
fi
参考
https://blog.csdn.net/zbj18314469395/article/details/86064849
https://my.oschina.net/zctzl/blog/1631603
https://blog.csdn.net/LWJ285149763/article/details/81053473
http://www.cnblogs.com/lsdb/p/7297731.html
https://www.cnblogs.com/senlinyang/p/7833669.html
https://www.jianshu.com/p/6f5002ddceb4