美文网首页
构建大数据平台(七)Storm集群搭建

构建大数据平台(七)Storm集群搭建

作者: Mr_ZhaiDK | 来源:发表于2018-02-28 15:51 被阅读0次

    一、前提:

    (1)storm服务,是基于zookeeper的。

    (2)storm使用稳定版本:apache-storm-1.2.1.tar.gz;

    (3)可在master上安装后,scp到其他slave机器上。

    (4)Storm需要安装依赖库:JDK7+、Python2.6.6(如不需要运行Python程序,可不安装)

    二、配置storm:

    首先要注意在生产环境中目录结构要定义好,防止在项目过多的时候找不到所需的项目

    1. 目录统一放在/home下面 ,首先创建storm项目目录
    cd /home
    
    #创建项目目录
    mkdir storm
    cd /home/storm
    
    #创建数据存放目录
    mkdir stormdata
    
    1. 将 apache-storm-1.2.1.tar.gz 放在 /home/storm下,并解压缩,解压缩完成后可删除安装包:
    #解压缩
    tar -zxvf apache-storm-1.2.1.tar.gz
    
    #完成后可删除
    rm -f apache-storm-1.2.1.tar.gz
    
    1. 修改配置文件

    (1)环境变量配置:
    为方便以后操作,在/etc/profile文件中主要增加的内容是:

    export STORM_HOME=/home/storm/apache-storm-1.2.1   
    

    PATH中增加:

    export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HBASE_HOME}:${ZK_HOME}/bin:${STORM_HOME}/bin:$PATH 
    

    执行命令生效

    source /etc/profile
    

    (2)修改/home/storm/apache-storm-1.2.1/conf/ 中的storm.yaml配置文件:

    1)storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下:

    storm.zookeeper.servers:
         - "master"
         - "slave1"
         - "slave2"
         - "slave3"
    

    2)storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。

    storm.local.dir: "/home/storm/data"
    

    3)nimbus.seeds: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如:

    nimbus.seeds: ["master"]
    

    4)supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:

    supervisor.slots.ports:
        - 6700
        - 6701
        - 6702
        - 6703
    

    注意:每行前面的空格要统一,否则启动不起来。

    1. 将安装配置好的storm目录复制到所有slave节点中:
    scp -r /home/storm/ root@slave1:/home/
    scp /etc/profile root@slave1:/etc/
    
    scp -r /home/storm/ root@slave2:/home/
    scp /etc/profile root@slave2:/etc/
    
    scp -r /home/storm/ root@slave3:/home/
    scp /etc/profile root@slave3:/etc/
    

    说明:各slave节点,环境变量配置完后,要执行source /etc/profile才能生效。

    三、启动storm:

    需先启动zookeeper

    1. master,即在Storm主控节点上运行 "./storm nimbus &" 启动Nimbus后台程序,并放到后台执行启动
    cd /home/storm/apache-storm-1.2.1/bin/
    ./storm nimbus &
    
    1. 所有slave ,即在Storm各个工作节点上运行"./storm supervisor &"启动Supervisor后台程序,并放到后台执行;
    cd /home/storm/apache-storm-1.2.1/bin/
    ./storm supervisor &
    
    1. master,即在Storm主控节点上运行 "storm ui &" 启动UI后台程序,并放到后台执行,启动后可以通过http://<master.IP>:8080/index.html观察集群的worker资源使用情况、Topologies的运行状态等信息。

    至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

    四、补充storm集群启动/停止脚本:

    1. storm集群启动脚本

    在$STORM_HOME/bin下执行

    #新建脚本文件并编辑
    vi ./start-storm-cluster.sh
    #赋予可执行权限
    chmod a+x start-storm-cluster.sh
    #执行脚本
    ./start-storm-cluster.sh
    

    脚本文件内容如下:

    #!/bin/bash
    #nimbus节点
    nimbusServers='master'
    
    #supervisor节点
    supervisorServers='slave1 slave2 slave3'
    
    #启动所有的nimbus
    for nim in $nimbusServers
    do
        ssh -T $nim <<EOF
            source /etc/profile
            cd \$STORM_HOME
            bin/storm nimbus >/dev/null 2>&1 &
    EOF
    echo 从节点 $nim 启动nimbus...[ done ]
    sleep 1
    done
    
    #启动所有的ui
    for u in $nimbusServers
    do
        ssh -T $u <<EOF
            source /etc/profile
            cd \$STORM_HOME
            bin/storm ui >/dev/null 2>&1 &
    EOF
    echo 从节点 $u 启动ui...[ done ]
    sleep 1
    done
    
    #启动所有的supervisor
    for visor in $supervisorServers
    do
        ssh -T $visor <<EOF
            source /etc/profile
            cd \$STORM_HOME
            bin/storm supervisor >/dev/null 2>&1 &
    EOF
    echo 从节点 $visor 启动supervisor...[ done ]
    sleep 1
    done
    
    1. storm集群停止脚本

    在$STORM_HOME/bin下执行

    #新建脚本文件并编辑
    vi ./stop-storm-cluster.sh
    #赋予可执行权限
    chmod a+x stop-storm-cluster.sh
    #执行脚本
    ./stop-storm-cluster.sh
    

    脚本文件内容如下:

    #!/bin/bash
    
    #nimbus节点
    nimbusServers='master'
    
    #supervisor节点
    supervisorServers='slave1 slave2 slave3'
    
    #停止所有的nimbus和ui
    for nim in $nimbusServers
    do
        echo 从节点 $nim 停止nimbus和ui...[ done ]
        ssh $nim "kill -9 `ssh $nim ps -ef | grep nimbus | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
        ssh $nim "kill -9 `ssh $nim ps -ef | grep core | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
    done
    
    #停止所有的supervisor
    for visor in $supervisorServers
    do
        echo 从节点 $visor 停止supervisor...[ done ]
        ssh $visor "kill -9 `ssh $visor ps -ef | grep supervisor | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
    done
    

    相关文章

      网友评论

          本文标题:构建大数据平台(七)Storm集群搭建

          本文链接:https://www.haomeiwen.com/subject/fmabxftx.html