0
点赞
收藏
分享

微信扫一扫

storm实时流式框架搭建管理(包含过程中常见bug的处理)



文章目录

  • ​​Storm搭建​​
  • ​​1、先关闭selinux、防火墙,配好网络、yum源​​
  • ​​2、安装开发工具​​
  • ​​3、maven配置​​
  • ​​4、libcurl-devel配置​​
  • ​​5、git配置(如果不需要使用git下载软件,这步可以跳过)​​
  • ​​1)下载git软件包​​
  • ​​2)解压​​
  • ​​3)配置​​
  • ​​4)编译​​
  • ​​1、本文已修改,此bug仅供参考​​
  • ​​2、本文已修改,此bug仅供参考​​
  • ​​5)安装​​
  • ​​6)检查git版本​​
  • ​​6、python配置​​
  • ​​1)下载python软件包​​
  • ​​2)解压​​
  • ​​3)配置​​
  • ​​4)编译​​
  • ​​5)安装​​
  • ​​本文已修改,此bug仅供参考​​
  • ​​6)设置环境变量​​
  • ​​7)使环境变量生效​​
  • ​​8)运行python​​
  • ​​9)复制python到各节点。​​
  • ​​7、ZeroMQ配置​​
  • ​​8、JZMQ配置​​
  • ​​9、zookeeper配置​​
  • ​​10、Storm配置​​
  • ​​11、主节点复制、传送文件​​
  • ​​12、修改从节点环境变量​​
  • ​​13、修改myid文件​​
  • ​​Storm启动​​
  • ​​1、启动Zookeeper服务​​
  • ​​1)启动服务​​
  • ​​1、本文已修改,此bug仅供参考​​
  • ​​2)查看四台节点机的服务状态​​
  • ​​2、本文已修改,此bug仅供参考​​
  • ​​2、启动Nimbus、Supervisor、UI​​
  • ​​1、本文已修改,此bug仅供参考​​
  • ​​3、游览器查阅storm​​
  • ​​4、storm命令使用介绍​​
  • ​​1)启动storm命令​​
  • ​​2)Storm的基本命令​​

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Storm搭建

Storm是一个分布式的、容错的实时计算系统,可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比 Hadoop 用于批处理。在Storm 的集群里面有两种节点:控制节点和工作节点。控制节点上面运行一个后台进程Nimbus,它的作用类似于Hadoop 里面的JobTracker。

1、先关闭selinux、防火墙,配好网络、yum源

2、安装开发工具

[root@node1 ~]# yum install java-1.8.0-openjdk*
[root@node1 ~]# yum install gcc
[root@node1 ~]# yum install gcc-c++
[root@node1 ~]# yum install make
[root@node1 ~]# yum install cmake
[root@node1 ~]# yum install openssl-devel
[root@node1 ~]# yum install ncurses-devel
[root@node1 ~]# yum install uuid*
[root@node1 ~]# yum install libtool
[root@node1 ~]# yum install libuuid
[root@node1 ~]# yum install libuuid-devel

3、maven配置

1)下载maven软件包。

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux

2)解压maven软件包。

[root@node1 ~]# tar xvzf apache-maven-3.8.1-bin.tar.gz

3)把maven软件移到目录/usr/local下

[root@node1 ~]# mv apache-maven-3.8.1 /usr/local/maven

4)编辑环境变量。

[root@node1 ~]# vi /etc/profile
添加内容如下:
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH="$M2:$PATH"

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_02

5)使环境变量生效。

[root@node1 ~]# source /etc/profile

6)检查maven版本,显示如下表示成功。

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_03

7)修改配置文件。

[root@node1 ~]# vim /usr/local/maven/conf/settings.xml

在​​<mirrors></mirrors>​​内添加如下内容:

<!--配置阿里云-->
<mirror>
<id>nexus-aliyun</id>
<name>nexus-aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven-central</id>
<name>aliyun maven central</name>
<url>https://maven.aliyun.com/repository/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven-spring</id>
<name>aliyun maven-spring</name>
<url>https://maven.aliyun.com/repository/spring</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>spring-snapshots</id>
<mirrorOf>central</mirrorOf>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
</mirror>
<mirror>
<id>spring-milestones</id>
<mirrorOf>central</mirrorOf>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</mirror>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_04

在​​<profiles></profiles>​​内添加如下内容:

<!--配置profiles构建-->
<profile>
<id>jdk-1.8</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_05

具体可参考博客:(Maven笔记)Maven3.8.1安装+配置阿里源+IDEA调用

4、libcurl-devel配置

yum install libcurl-devel

5、git配置(如果不需要使用git下载软件,这步可以跳过)

1)下载git软件包

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_06

2)解压

[root@node1 ~]# tar xvzf git-2.9.4.tar.gz

3)配置

[root@node1 ~]# cd git-2.9.4/
[root@node1 git-2.9.4]# ./configure --with-curl --with-expat

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_07

4)编译

[root@node1 git-2.9.4]# make
1、本文已修改,此bug仅供参考

出现以下bug时,执行 ​​yum install perl-ExtUtils-MakeMaker package​​后重新编译安装

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_08

成功如下

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_09

2、本文已修改,此bug仅供参考

节点机出现bug,执行​​yum install zlib* -y​​,重新编译安装

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_10

成功如下

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_11

5)安装

[root@node1 git-2.9.4]# make install

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_12

6)检查git版本

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_13

6、python配置

每个节点机都要

1)下载python软件包

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_14

2)解压

[root@node1 ~]# tar xvzf Python-3.7.1.tgz

3)配置

[root@node1 ~]# cd Python-3.7.1
[root@node1 Python-3.7.1]# ./configure --prefix=/usr/local/python

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_15

4)编译

[root@node1 Python-3.7.1]# make

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_16

5)安装

[root@node1 Python-3.7.1]# make install
本文已修改,此bug仅供参考

①出现以下bug时要​​yum install libffi-devel -y​

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_17

然后再重新编译下载

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_18

成功。

②重新删除包编译下载

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_19

6)设置环境变量

[root@node1 Python-3.7.1]# vim /etc/profile
添加如下内容:
export PYTHON_HOME=/usr/local/python
export PATH=$PYTHON_HOME/bin:$PATH

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_20

7)使环境变量生效

[root@node1 Python-3.7.1]# source /etc/profile

8)运行python

[root@node1 Python-3.7.1]# python

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_21

9)复制python到各节点。

将node1节点机的“/usr/local/python”复制到其他三台节点机上

[root@node1 Python-3.7.1]# cd
[root@node1 ~]# scp -r -p /usr/local/python root@node2:/usr/local/
[root@node1 ~]# scp -r -p /usr/local/python root@node3:/usr/local/
[root@node1 ~]# scp -r -p /usr/local/python root@node4:/usr/local/

7、ZeroMQ配置

1)下载ZeroMQ软件包

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_22

2)解压

[root@node1 ~]# tar xvzf zeromq-4.1.8.tar.gz

3)配置

[root@node1 ~]# cd zeromq-4.1.8
[root@node1 zeromq-4.1.8]# ./configure --prefix=/home/local/zeromq

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_23

4)编译

[root@node1 zeromq-4.1.8]# make

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_24

5)安装

[root@node1 zeromq-4.1.8]# make install

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_25

6)更新动态链接库

[root@node1 zeromq-4.1.8]# ldconfig

7)设置环境变量

[root@node1 zeromq-4.1.8]# vim /etc/profile
添加如下内容:
export CPPFLAGS=-I/home/local/zeromq/include/
export LDFLAGS=-L/home/local/zeromq/lib/

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_26

8)使环境变量生效

[root@node1 zeromq-4.1.8]# source /etc/profile

8、JZMQ配置

1)下载JZMQ软件包

[root@node1 ~]# wget https://codeload.github.com/zeromq/jzmq/zip/master

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_27

2)解压文件

[root@node1 ~]# unzip master

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_28

3)配置

[root@node1 ~]# cd jzmq-master/jzmq-jni/
[root@node1 jzmq-jni]# ./autogen.sh

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_29

[root@node1 jzmq-jni]# ./configure --prefix=/home/local/jzmq

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_30

4)编译

[root@node1 jzmq-jni]# make

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_31

5)安装

[root@node1 jzmq-jni]# make install

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_32

6)设置环境变量

[root@node1 jzmq-jni]# vim /etc/profile
添加如下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/local/zeromq/lib/:
/home/local/jzmq/lib/

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_33

7)使环境变量生效

[root@node1 jzmq-jni]# source /etc/profile

9、zookeeper配置

1)下载Zookeeper软件包

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_34

2)解压安装

[root@node1 ~]# tar xvzf zookeeper-3.4.9.tar.gz 
[root@node1 ~]# mv zookeeper-3.4.9.tar.gz /home/local/zookeeper

3)修改用户属性

[root@node1 ~]# chown -R root:root /home/local/zookeeper/

4)设置环境变量

[root@node1 ~]# vi /etc/profile 
添加如下内容:
export ZOOKEEPER_HOME=/home/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_35

5)使环境变量生效

[root@node1 ~]# source /etc/profile

6)参数配置

[root@node1 ~]# cd /home/local/zookeeper/conf
[root@node1 conf]# mv zoo_sample.cfg zoo.cfg
[root@node1 conf]# vi zoo.cfg

配置文件添加如下内容:
dataDir=/home/local/zookeeper/data
dataLogDir=/home/local/zookeeper/log
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888

如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_36

修改zoo.cfg文件,启用日志自动清理功能。dataDir文件路径有重复,上面的需要注释

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_37

7)在$ZOOKEEPER_HOME目录下新建两目录

[root@node1 conf]# mkdir /home/local/zookeeper/{data,log}

8)在$ZOOKEEPER_HOME/data目录下创建一个文件:myid,myid的内容为上面配置的server.中id数字,不同节点机myid的内容不同。

[root@node1 conf]# cd /home/local/zookeeper/data/
[root@node1 data]# vim myid
[root@node1 data]# more myid
1

10、Storm配置

1)下载Storm软件包。(此版本不包含storm-starter-topologies的jar包,后期做本机拓扑需要去其他低版本包里取,或者直接安装低版本的storm-starter-topologies-0.9.6.jar)

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_38

2)解压安装

[root@node1 ~]# tar xvzf apache-storm-2.1.0.tar.gz 
[root@node1 ~]# mv apache-storm-2.1.0 /home/local/storm

3)修改用户属性

[root@node1 ~]# chown -R root:root /home/local/storm/

4)设置环境变量

[root@node1 ~]# vi /etc/profile
文件添加如下内容:
export STORM_HOME=/home/local/storm
export PATH=$PATH:$STORM_HOME/bin

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_39

5)使环境变量生效

[root@node1 ~]# source /etc/profile

6)参数配置

注意:格式的要求每一项的开始时要加空格,冒号后也必须要加空格。

[root@node1 ~]# cd /home/local/storm/conf
[root@node1 conf]# vi storm.yaml
配置文件添加如下内容:
storm.zookeeper.servers:
- "node1"
- "node2"
- "node3"
- "node4"
nimbus.host: "node1"
storm.local.dir: "/home/local/storm/temp"
storm.zookeeper.port: 2181
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703

如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_40

7)在$STORM_HOME目录下新建目录temp

[root@node1 conf]# mkdir /home/local/storm/temp

11、主节点复制、传送文件

将node1节点机“/home/local/”目录下文件复制到其他三台节点机上。

[root@node1 ~]# scp -r /home/local root@node2:/home/local
[root@node1 ~]# scp -r /home/local root@node3:/home/local
[root@node1 ~]# scp -r /home/local root@node4:/home/local

12、修改从节点环境变量

分别登录node2、node3和node4节点机修改环境变量。

[root@node2 ~]# vi /etc/profile 
添加如下内容:
export CPPFLAGS=-I/home/local/zeromq/include/
export LDFLAGS=-L/home/local/zeromq/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/local/zeromq/lib/:
/home/local/jzmq/lib/
export ZOOKEEPER_HOME=/home/local/zookeeper
export STORM_HOME=/home/local/storm
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_41

13、修改myid文件

分别登录node1、node2、node3、node4节点机,修改$ZOOKEEPER_HOME/data/myid的内容

按照配置文件的server.​​<id>​​中id的数字。node2的值为2,node3的值为3,node4的值为4

[root@node4 ~]# cd $ZOOKEEPER_HOME/data 
[root@node4 data]# vim myid
[root@node4 data]# more myid
4

Storm启动

Storm系统搭建完成后,需要启动相关服务,检查运行状态。

1、启动Zookeeper服务

执行zkServer.sh start启动服务;执行zkServer.sh stop停止服务;执行zkServer.sh status 检查启动情况和模式leader和follower,zookeeper会随机选择一个节点作为leader,其他作为follower。

1)启动服务

分别以root用户登录node1、node2、node3、node4,启动Zookeeper。

启动失败,针对此bug采用降低3.6.3zookeeper版本的方法,不要超过3.5.5版本,现换成3.4.9

1、本文已修改,此bug仅供参考

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_42

成功解决,运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_43

2)查看四台节点机的服务状态

出现bug,四台机都显示not running,有几种可能,

第一种是因为四台机没有都开启zookeeper服务;

第二种可能是配置文件dataLogDir文件路径不存在,需要创建;

第三种就是防火墙没关;

第四种是myid文件没写好;

第五种就是配置文件里面有错误(这次就是在zoo.cfg文件中出现了两次dataDir的路径,没注释

2、本文已修改,此bug仅供参考

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_44

正确的如下

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_45

storm实时流式框架搭建管理(包含过程中常见bug的处理)_linux_46

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_47

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_48

2、启动Nimbus、Supervisor、UI

在生产环境中主节点机一般不启动Supervisor进程

[root@node1 ~]# storm nimbus &
[root@node1 ~]# storm supervisor &
[root@node1 ~]# storm ui &
1、本文已修改,此bug仅供参考

若配置文件storm.yaml出现格式错误中间会出现以下结果

storm实时流式框架搭建管理(包含过程中常见bug的处理)_zookeeper_49

运行成功如图

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_50

storm实时流式框架搭建管理(包含过程中常见bug的处理)_centos_51

分别登录node2、node3、node4节点机,启动Supervisor进程。

[root@node2 ~]# storm supervisor &
[root@node3 ~]# storm supervisor &
[root@node4 ~]# storm supervisor &

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_52

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_53

storm实时流式框架搭建管理(包含过程中常见bug的处理)_大数据_54

3、游览器查阅storm

打开浏览器,在地址栏处输入http://192.168.23.111:8080

查看Storm的运行状况。

storm实时流式框架搭建管理(包含过程中常见bug的处理)_storm_55

4、storm命令使用介绍

1)启动storm命令

[root@node1 ~]# storm

2)Storm的基本命令

如下:

storm activate topology-name #激活指定的拓扑Spout。
storm classpath #打印出Storm客户端运行命令时使用的类路径。
storm deactivate topology-name #禁用指定的拓扑Spout。
storm dev-zookeeper #以dev.zookeeper.path配置的值作为本地目录,
#以storm.zookeeper.port配置的值作为端口,
#启动一个新的ZooKeeper服务,仅用来开发/测试。
storm drpc #启动一个DRPC守护进程。
#该命令应该使用daemontools或者monit工具监控运行。
storm help #打印一条帮助消息或者可用命令的列表。语法如下:
storm help <command> #直接输入不带参数的storm,也可以启动storm help命令。
storm jar topology-jar-path class ... #运行类的指定参数的main方法。
#把Storm的jar文件和“~/.storm”的配置放到类路径中,
#以便当拓扑提交时,StormSubmitter会上传
#topology-jar-path的jar文件。
storm kill topology-name [-w wait-time-secs] #杀死名为topology-name的拓扑。
#Storm首先会在拓扑的消息超时时间期间禁用Spout,
#以允许所有正在处理的消息完成处理。然后,Storm将会
#关闭Worker并清理它们的状态。可以使用-w标记覆盖
#Storm在禁用与关闭期间等待的时间长度。
storm list #列出正在运行的拓扑及其状态。
storm localconfvalue conf-name #打印出本地Storm配置的conf-name的值。
#本地Storm配置是~/.storm/storm.yaml
#与defaults.yaml合并的结果。
storm logviewer #启动Logviewer守护进程。
#Logviewer提供一个Web接口查看Storm日志文件。
#该命令应该使用daemontools或者monit工具监控运行。
storm nimbus #启动Nimbus守护进程。
#该命令应该使用daemontools或者monit工具监控运行。
storm rebalance topology-name [-w wait-time-secs]
#有时你可能希望扩散一些正在运行的拓扑的worker。例如,
#假设你有一个10个节点的集群,每个节点运行4个worker,
#然后假设需要添加另外10个节点到集群中。你可能希望有
#Spout扩散正在运行中的拓扑的worker,这样每个节点运行
#两个worker。解决的一种方法是杀死拓扑并重新提交拓扑,
#但Storm提供了一个rebalance的命令,我们可以用一种
#更简单的方法来做到这一点。rebalance首先会在消息超时
#时间内禁用拓扑,使用-w可以覆盖超时时间,然后重新均
#衡分配集群的worker,拓扑会返回到它原来的状态,即
#禁用的拓扑仍将禁用,激活的拓扑继续激活。
storm remoteconfvalue conf-name #打印出远程集群Storm配置的conf-name的值。
#集群Storm配置是$STORM-PATH/conf/storm.yaml与
#defaults.yaml合并的结果。该命令必须在集群节点上运行
storm repl #打开一个包含类路径中的jar文件和配置的Clojure REPL,
#以便调试时使用。
#Clojure可以作为一种脚本语言内嵌到Java中,但是Clojure
#的首选编程方式是使用REPL,REPL是一个简单的命令行接口。
#使用REPL,可以输入命令并执行,然后查看结果。
storm shell resourcesdir command args #执行Shell脚本。
storm supervisor #启动Supervisor守护进程。
storm ui #启动UI守护进程。
#UI为Storm集群提供了一个Web界面并显示运行拓扑的详细
#统计信息。该命令应该使用daemontools或者monit工具监控
#运行。
storm version #打印Storm发布的版本号。



举报

相关推荐

0 条评论