Apache Storm简介
Apache Storm 是一个开源的分布式实时计算框架,可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析,在线机器学习、持续计算、分布式 RPC、ETL 等场景。Apache Storm 的前身是Twitter Storm平台,采用Clojure开发,目前已经归于 Apache 基金会管辖。
Storm集群环境搭建
参考:https://storm.apache.org/releases/2.2.0/Setting-up-a-Storm-cluster.html
这里搭建一个 3 节点的 Storm 集群:三台主机上均部署Supervisor
和LogViewer
服务。同时为了保证高可用,除了在 hadoop001 上部署主Nimbus
服务外,还在 hadoop002 上部署备用的Nimbus
服务。Nimbus
服务由 Zookeeper 集群进行协调管理,如果主Nimbus
不可用,则备用Nimbus
会成为新的主Nimbus
。
Storm 运行依赖于 Java 8+ 和 Python 2.7.x +,所以需要预先安装这两个软件。同时为了保证高可用,这里我们不采用 Storm 内置的 Zookeeper,而采用外置的 Zookeeper 集群。
java安装参考:https://blog.csdn.net/networken/article/details/105084857
zookeeper安装参考:https://blog.csdn.net/networken/article/details/116207969
集群搭建
下载storm
wget https://archive.apache.org/dist/storm/apache-storm-2.2.0/apache-storm-2.2.0.tar.gz
解压安装
tar -zxvf apache-storm-2.2.0.tar.gz -C /opt/
mv /opt/apache-storm-2.2.0/ /opt/storm
配置环境变量
cat > /etc/profile.d/storm.sh <<'EOF'
export STORM_HOME=/opt/storm
export PATH=$STORM_HOME/bin:$PATH
EOF
source /etc/profile
集群配置
修改${STORM_HOME}/conf/storm.yaml
文件,配置如下:
cat > $STORM_HOME/conf/storm.yaml <<EOF
storm.zookeeper.servers:
- "hadoop01"
- "hadoop02"
- "hadoop03"
storm.zookeeper.port: 2181
storm.local.dir: "/opt/storm/stormLocal"
nimbus.seeds: ["hadoop01","hadoop02"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
ui.port: 8081
EOF
参数说明:
- supervisor.slots.ports 参数用来配置 workers 进程接收消息的端口,默认每个 supervisor 节点上会启动 4 个 worker,当然你也可以按照自己的需要和服务器性能进行设置,假设只想启动 2 个 worker 的话,此处配置 2 个端口即可。
- storm.local.dir Nimbus和Supervisor需要使用本地磁盘上来存储少量状态(如jar包,配置文件等),需手动创建
- nimbus.seeds Nimbus的节点列表
配置文件参考:https://github.com/apache/storm/blob/v2.2.0/conf/defaults.yaml
启动Storm集群
hadoop01 & hadoop02 :
因为要启动多个进程,所以统一采用后台进程的方式启动。进入到${STORM_HOME}/bin
目录下,
cd ${STORM_HOME}/bin
执行下面的命令:
# 启动主节点 nimbus
nohup sh storm nimbus &
# 启动从节点 supervisor
nohup sh storm supervisor &
# 启动UI界面 ui
nohup sh storm ui &
# 启动日志查看服务 logviewer
nohup sh storm logviewer &
hadoop03 :
hadoop003 上只需要启动supervisor
服务和logviewer
服务:
# 启动从节点 supervisor
nohup sh storm supervisor &
# 启动日志查看服务 logviewer
nohup sh storm logviewer &
查看集群
使用jps
查看进程,三台服务器的进程应该分别如下:
hadoop01节点
[root@hadoop01 ~]# jps
10288 Main
27555 LogviewerServer
2580 ZooKeeperMain
2262 QuorumPeerMain
29081 Jps
27386 Nimbus
27451 Supervisor
27503 UIServer
hadoop02节点
[root@hadoop02 ~]# jps
19904 Supervisor
2160 QuorumPeerMain
19960 UIServer
20011 LogviewerServer
20636 Jps
19853 Nimbus
hadoop03节点
[root@hadoop03 ~]# jps
20598 Supervisor
21303 Jps
2124 QuorumPeerMain
20621 LogviewerServer
访问 hadoop001 或 hadoop002 的8081
端口,界面如下。可以看到有一主一备 2 个Nimbus
和 3 个Supervisor
,并且每个Supervisor
有四个slots
,即四个可用的worker
进程,此时代表集群已经搭建成功。
高可用验证
这里手动模拟主Nimbus
异常的情况,在 hadoop01 上使用kill
命令杀死Nimbus
的线程,
[root@hadoop01 ~]# ps -ef |grep nimbus
[root@hadoop01 ~]# kill -9 19853
此时可以看到 hadoop01 上的Nimbus
已经处于offline
状态,而 hadoop02 上的Nimbus
则成为新的Leader
。
参考:https://github.com/heibaiying/BigData-Notes/tree/master/notes/installation