IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> storm实时流式框架搭建管理(包含过程中常见bug的处理) -> 正文阅读

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

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

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软件包。
在这里插入图片描述

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"

在这里插入图片描述

5)使环境变量生效。

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

6)检查maven版本,显示如下表示成功。
在这里插入图片描述

7)修改配置文件。

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

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

  <mirror>
        <id>nexus-osc</id>
         <mirrorOf>*</mirrorOf>
     <name>Nexusosc</name>
     <url>http://maven.oschina.net/content/groups/public/</url>
   </mirror>

如下图所示
在这里插入图片描述

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

<profile>
       <id>jdk-1.8</id>
       <activation>
         <jdk>1.8</jdk>
       </activation>`
       <repositories>
         <repository>
           <id>nexus</id>
           <name>local private nexus</name>
           <url>http://maven.oschina.net/content/groups/public/</url>
           <releases>
        <enabled>true</enabled>
           </releases>
           <snapshots>
             <enabled>false</enabled>
           </snapshots>
         </repository>
       </repositories>
       <pluginRepositories>
         <pluginRepository>
           <id>nexus</id>
          <name>local private nexus</name>
           <url>http://maven.oschina.net/content/groups/public/</url>
           <releases>
             <enabled>true</enabled>
           </releases>
           <snapshots>
             <enabled>false</enabled>
           </snapshots>
         </pluginRepository>
       </pluginRepositories>
     </profile>
    

部分如图
在这里插入图片描述

4、libcurl-devel配置

yum install libcurl-devel

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

1)下载git软件包。

在这里插入图片描述

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

运行成功如图
在这里插入图片描述

4)编译

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

出现以下bug时,执行 yum install perl-ExtUtils-MakeMaker package后重新编译安装
在这里插入图片描述
成功如下
在这里插入图片描述

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

节点机出现bug,执行yum install zlib* -y,重新编译安装
在这里插入图片描述
成功如下
在这里插入图片描述

5)安装

[root@node1 git-2.9.4]# make install

运行成功如图
在这里插入图片描述

6)检查git版本

在这里插入图片描述

6、python配置

每个节点机都要

1)下载python软件包。

在这里插入图片描述

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

运行成功如图
在这里插入图片描述

4)编译。

[root@node1 Python-3.7.1]# make

运行成功如图
在这里插入图片描述

5)安装。

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

①出现以下bug时要yum install libffi-devel -y
在这里插入图片描述
然后再重新编译下载
在这里插入图片描述
成功。

②重新删除包编译下载
在这里插入图片描述

6)设置环境变量。

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

在这里插入图片描述

7)使环境变量生效。

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

8)运行python。

[root@node1 Python-3.7.1]# python

在这里插入图片描述
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软件包。
在这里插入图片描述

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

运行成功如图
在这里插入图片描述

4)编译。

[root@node1 zeromq-4.1.8]# make

运行成功如图
在这里插入图片描述

5)安装。

[root@node1 zeromq-4.1.8]# make install

运行成功如图
在这里插入图片描述

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/

在这里插入图片描述

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

运行成功如图
在这里插入图片描述

2)解压文件。

[root@node1 ~]# unzip master

运行成功如图
在这里插入图片描述

3)配置。

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

运行成功如图
在这里插入图片描述

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

运行成功如图
在这里插入图片描述

4)编译。

[root@node1 jzmq-jni]# make

运行成功如图
在这里插入图片描述

5)安装。

[root@node1 jzmq-jni]# make install

运行成功如图
在这里插入图片描述

6)设置环境变量。

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

在这里插入图片描述

7)使环境变量生效。

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

9、zookeeper配置

1)下载Zookeeper软件包。
在这里插入图片描述

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 

在这里插入图片描述

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 

如图
在这里插入图片描述
修改zoo.cfg文件,启用日志自动清理功能。dataDir文件路径有重复,上面的需要注释

在这里插入图片描述

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)
在这里插入图片描述

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  

在这里插入图片描述

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

如图
在这里插入图片描述

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

在这里插入图片描述

13、分别登录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仅供参考

在这里插入图片描述
成功解决,运行成功如图
在这里插入图片描述

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

出现bug,四台机都显示not running,有几种可能,
第一种是因为四台机没有都开启zookeeper服务;
第二种可能是配置文件dataLogDir文件路径不存在,需要创建;
第三种就是防火墙没关;
第四种是myid文件没写好;
第五种就是配置文件里面有错误(这次就是在zoo.cfg文件中出现了两次dataDir的路径,没注释

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

在这里插入图片描述
正确的如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、启动Nimbus、Supervisor、UI。

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

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

若配置文件storm.yaml出现格式错误中间会出现以下结果
在这里插入图片描述
运行成功如图
在这里插入图片描述
在这里插入图片描述
分别登录node2、node3、node4节点机,启动Supervisor进程。

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

查看Storm的运行状况。

在这里插入图片描述

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发布的版本号。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:34:51  更:2021-08-01 14:35:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 11:32:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码