zoukankan      html  css  js  c++  java
  • Storm入门(二)集群环境安装

    1.集群规划

    storm版本的变更:
    storm0.9.x   storm0.10.x  storm1.x
    上面这些版本里面storm的核心源码是由Java+clojule组成的。
    storm2.x
    后期这个版本就是全部用java重写了。
    (阿里在很早的时候就对storm进行了重写,提供了jstorm,后期jstorm也加入到apache storm,负责使用java对storm进行重写,这就是storm2.x版本的由来。)
    注意:
    在storm0.10.x的版本中,storm集群只支持一个nimbus节点,主节点是存在单点问题。
    在storm1.x以后,storm集群可以支持多个nimbus节点,其中有一个为leader,负责真正运行,其余的为offline。

    1.1服务器

    3台Centos6.8服务器,各服务器需要启动的服务如下。

    192.168.137.180 storm-cluster-64bit-1  内存1G

            Nimbus:负责分发代码,监控代码的执行。

            UI:可以查看集群的信息以及topology的运行情况。

            logviewer:因为主节点会有多个,有时候也需要查看主节点的日志信息。

            Zookeeper

    192.168.137.181 storm-cluster-64bit-2  内存1G

            Nimbus:负责分发代码,监控代码的执行。

            Supervisor:负责产生worker进程,执行任务。

            logviewer:可以通过webui界面查看topology的运行日志。

            Zookeeper

    192.168.137.182 storm-cluster-64bit-3  内存1G

            Supervisor:负责产生worker进程,执行任务。

            logviewer:可以通过webui界面查看topology的运行日志。

            Zookeeper

    1.2安装包

    zookeeper-3.4.5.tar.gz

    apache-storm-1.1.0.tar.gz

    2.搭建Zookeeper集群

    3台服务器同时执行以下操作。
    (1)解压和重命名
    tar -zxvf zookeeper-3.4.5.tar.gz 
    mv zookeeper-3.4.5 /usr/local/zookeeper
    (2)修改环境变量
    vi /etc/profile
    
    export ZOOKEEPER_HOME=/usr/local/zookeeper
    export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
    
    source /etc/profile
    (3)到zookeeper下修改配置文件
    cd /usr/local/zookeeper/conf
    mv zoo_sample.cfg zoo.cfg
    
    修改conf: vi zoo.cfg 修改两处
    
    dataDir=/usr/local/zookeeper/data
    最后面添加
    server.0=192.168.137.180:2888:3888
    server.1=192.168.137.181:2888:3888
    server.2=192.168.137.182:2888:3888
    (4)创建服务器标识配置文件
    cd /usr/local/zookeeper/
    创建文件夹:mkdir data
    cd data
    创建文件myid并填写内容为0:vi myid (内容为服务器标识 : 0)
    其他两个服务器的值修改为1和2
    (5)启动zookeeper
    执行:zkServer.sh start (注意这里3台机器都要进行启动)
    状态:zkServer.sh status(在三个节点上检验zk的mode,一个leader和俩个follower)
    停止:zkServer.sh stop
    启动验证:输入jps,存在 QuorumPeerMain 进程的话,就说明 Zookeeper 启动成功了。

    3.安装Storm依赖库

    需要在Nimbus和Supervisor机器上安装Storm的依赖库Python2.6.6。

    我的Centos6.8系统自带了Python2.6.6,所以省略安装。

    4.解压安装Storm

    (1)解压Storm(1台服务器执行)

    tar -zxvf apache-storm-1.1.0.tar.gz

    mv apache-storm-1.1.0 /usr/local/storm

    (2)配置环境变量(3台服务器同时执行)

    vi /etc/profile

    export STORM_HOME=/usr/local/storm

    export PATH=.:$STORM_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

    source /etc/profile

    (3)修改storm.yaml配置文件(1台服务器执行)

    Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。

    vim /usr/local/storm/conf/storm.yaml

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

    storm.zookeeper.servers:
        - "storm-cluster-64bit-1"
        - "storm-cluster-64bit-2"
        - "storm-cluster-64bit-3"

    如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项

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

    如:mkdir -p /usr/local/storm/data

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

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

    nimbus.seeds: ["storm-cluster-64bit-1","storm-cluster-64bit-2"]

    注意:nimbus.seeds指定的时候最好指定主机名,否则在webui界面查询的时候会重复显示节点信息。

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

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

    【注意:yaml文件的格式,属性必须顶格,缩进只能使用空格,一点不能使用制表符。】

    5)把修改后的storm目录拷贝到其他所有主从节点【主从节点配置完全一样】
    scp -rq /usr/local/storm 192.168.137.181:/usr/local
    scp -rq /usr/local/storm 192.168.137.182:/usr/local

    6)修改/etc/hosts文件

    加上下面的设置。

    192.168.137.180 storm-cluster-64bit-1
    192.168.137.181 storm-cluster-64bit-2
    192.168.137.182 storm-cluster-64bit-3

    (4)启动storm各个服务进程

    最后一步,启动Storm的所有后台进程。和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。

    192.168.137.180
            nimbus:setsid storm nimbus &
            ui:setsid storm ui &
            logviewer:setsid storm logviewer &

    192.168.137.181
          nimbus:setsid storm nimbus
          logviewer:setsid storm logviewer &
          supervisor:setsid storm supervisor &
    192.168.137.182

          logviewer:setsid storm logviewer &
          supervisor:setsid storm supervisor &

    需要到/usr/local/storm/logs目录下查看各个进程是否成功启动。也可以jps查看。

    (5)访问storm的ui界面来查看集群信息

    http://192.168.137.180:8080

    注意:如果8080端口被占用,可以修改storm.yaml文件。最完整的属性配置在storm-core.jar中的defaults.yaml文件中。
    ui.port: 8081
    image

    需要在本地windows配置hosts文件,不然无法查询logs。

    C:WindowsSystem32driversetchosts

    192.168.137.180 storm-cluster-64bit-1
    192.168.137.181 storm-cluster-64bit-2
    192.168.137.182 storm-cluster-64bit-3

    image

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

    参考:

    http://www.bigdata1024.com/?p=26

  • 相关阅读:
    单片机基础
    EM310_AT收到的短信分析
    [原]改动CImage以实现以指定的质量保存Jpeg图像
    [原创]巧用DOS命令改子目录中的文件名
    二个月零七天,我女儿会翻身了
    [原]用正则得到HTML中所有的图片路径
    新文章:把程序放在相册中
    [原]用三行代码实现对音量的控制,实现增大,减小,静音
    BIOS中隐藏Telnet后门
    CoolChm 注册机的编写
  • 原文地址:https://www.cnblogs.com/hd3013779515/p/6961293.html
Copyright © 2011-2022 走看看