美文网首页
Storm集群部署与单词计数程序

Storm集群部署与单词计数程序

作者: 数据萌新 | 来源:发表于2018-10-10 16:47 被阅读0次

    要搭建storm集群首先需要由zookeeper,这里使用三台机器,一台做做nimbus(mini1机器),两台做supervisor(mini2和mini3机器)。
    三台hosts文件如下

    [root@mini1 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 localhost.jinbm
    192.168.25.127 mini1
    192.168.25.129 mini2
    192.168.25.130 mini3
    
    

    这里还是使用root用户来搭建
    按照一般集群部署流程
    集群部署的流程:下载安装包、解压安装包、修改配置文件、分发安装包、启动集群。
    1、下载storm,我这里下载的是apache-storm-0.9.5.tar.gz,传到mini1机器上。
    2、解压storm安装包到apps文件夹下(如果没有该文件夹需要创建,我这里以前将zookeeper,hadoop等都解压到了这个文件夹方便统一管理),解压后,修改名字为storm(一来为了方便,但主要是为了配置环境变量方便,即使以后换了storm版本只要改名为storm那么环境变量已然有效)。

    [root@mini1 ~]# tar -zxvf apache-storm-0.9.5.tar.gz -C apps/
    [root@mini1 ~]# cd apps/
    [root@mini1 apps]# ll
    总用量 24
    drwxr-xr-x.  8 root   root   4096 10月 19 15:15 apache-flume-1.6.0-bin
    drwxr-xr-x.  9 root   root   4096 10月 30 15:24 apache-storm-0.9.5
    drwxrwxr-x. 10 hadoop hadoop 4096 9月  30 22:04 hadoop-2.6.4
    drwxr-xr-x.  7 root   root   4096 10月 30 00:20 hbase
    drwxr-xr-x.  8 root   root   4096 10月 17 12:38 hive
    drwxr-xr-x. 10 root   root   4096 10月 29 23:21 zookeeper-3.4.6
    [root@mini1 apps]# mv apache-storm-0.9.5/ storm
    

    3、修改环境变量(三台机器都一样)
    最后添加2两信息

    [root@mini1 storm]# vi /etc/profile
    ...
    export STORM_HOME=/root/apps/storm
    export PATH=$PATH:$STORM_HOME/bin
    
    [root@mini1 storm]# source /etc/profile
    
    

    4、修改配置文件,进入strom目录的conf目录下,修改配置文件storm.yaml。添加内容如下:

    [root@mini1 conf]# vi storm.yaml 
    #指定storm使用的zk集群
    storm.zookeeper.servers:
    - "mini1"
    - "mini2"
    - "mini3"
    #指定storm集群中的nimbus节点所在的服务器
    nimbus.host: "mini1"
    #指定nimbus启动JVM最大可用内存大小
    nimbus.childopts: "-Xmx1024m"
    #指定supervisor启动JVM最大可用内存大小
    supervisor.childopts: "-Xmx1024m"
    #指定supervisor节点上,每个worker启动JVM最大可用内存大小
    worker.childopts: "-Xmx768m"
    #指定ui启动JVM最大可用内存大小,ui服务一般与nimbus同在一个节点上。
    ui.childopts: "-Xmx768m"
    #指定supervisor节点上,启动worker时对应的端口号,每个端口对应槽,每个槽位对应一个worker,这里是4个worker
    supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
    

    5、将配置好的storm安装包分发到mini2和mini3机器上/root/apps目录下

    [root@mini1 apps]# scp -r storm/ mini2:/root/apps/
    [root@mini1 apps]# scp -r storm/ mini3:/root/apps/
    

    6、启动集群
    mini1机器上进入storm的bin目录下启动nimbus和ui
    可以使用nuhub指令启动但是如果没安装的话就按照我下面的,无非多开两个窗口

    启动nimbus
    [root@mini1 bin]# ./storm nimbus
    换个窗口启动ui
    [root@mini1 bin]# ./storm ui
    [root@mini1 ~]# jps
    14783 Jps
    4550 QuorumPeerMain
    14648 nimbus
    14714 core
    
    在mini2和mini3上分别启动supervisor
    [root@mini2 bin]# ./storm supervisor 
    [root@mini3 bin]# ./storm supervisor
    [root@mini3 ~]# jps
    3466 QuorumPeerMain
    8912 Jps
    8826 supervisor
    
    

    查看集群是否启动起来
    浏览器输入mini1:8080


    image.png

    Cluster Summary中能看到Supervisor的个数为2,对应的物理机mini2和mini3各启了一个。空闲的槽有8个,总共有8个槽(即worker数,配置文件中配了4个端口也就是4个worker,mini2和mini3个四个所以就是8个)

    Topology summary没有内容是因为还没有跑storm程序
    后面还有Supervisor summary与Nimbus Configuration的相关信息。
    现在使用storm命令来跑个wordcount程序。
    在mini3机器上(随意)

    [root@mini3 storm]# storm jar examples/storm-starter/storm-starter-topologies-0.9.5.jar storm.starter.WordCountTopology wordcount
    ...
    File 'examples/storm-starter/storm-starter-topologies-0.9.5.jar' uploaded to 'storm-local/nimbus/inbox/stormjar-dfed4e29-132b-45d8-9e5a-f5cbb87c4927.jar' (3248678 bytes)
    487  [main] INFO  backtype.storm.StormSubmitter - Successfully uploaded topology jar to assigned location: storm-local/nimbus/inbox/stormjar-dfed4e29-132b-45d8-9e5a-f5cbb87c4927.jar
    488  [main] INFO  backtype.storm.StormSubmitter - Submitting topology wordcount in distributed mode with conf {"topology.workers":3,"topology.debug":true}
    825  [main] INFO  backtype.storm.StormSubmitter - Finished submitting topology: wordcount
    
    

    再次查看页面


    image.png

    看到了使用了三个Worker,共28个executor(28个task,默认情况下executor=task=thread数)有个wordcount程序在跑。点击
    Topology summary下的wordcount,查看拓扑详情


    image.png

    能看到一个Spout2个Bolt,id也列出来了。各自使用的线程数已经发射数据转换数据。要看具体的spout和bolt信息,点击进去即可,这里查看下split


    image.png

    线程的id,使用了那台机器的哪个端口(槽,即worker),发射数据都有。

    查看日志
    在nimbus上查看ui日志信息(别的自行查看)

    [root@mini1 storm]# tail -100f logs/ui.log 
    2017-10-30T15:36:06.293+0800 o.m.log [INFO] Logging to Logger[org.mortbay.log] via org.mortbay.log.Slf4jLog
    2017-10-30T15:36:06.304+0800 o.m.log [INFO] jetty-6.1.26
    2017-10-30T15:36:06.339+0800 o.m.log [INFO] Started SocketConnector@0.0.0.0:8080
    2017-10-30T15:36:08.779+0800 b.s.thrift [INFO] Connecting to Nimbus at mini1:6627
    2017-10-30T15:36:08.779+0800 b.s.thrift [INFO] Connecting to Nimbus at mini1:6627
    ...
    

    在mini2或者mini3查看worker信息

    [root@mini3 logs]# ll
    总用量 48812
    -rw-r--r--. 1 root root        0 10月 30 15:37 access.log
    -rw-r--r--. 1 root root        0 10月 30 15:37 metrics.log
    -rw-r--r--. 1 root root    18284 10月 30 16:23 supervisor.log
    -rw-r--r--. 1 root root 49961204 10月 30 16:43 worker-6703.log
    [root@mini3 logs]#  tail -100f worker-6703.log 
    
    

    一些总结
    Worker与topology
    一个worker只属于一个topology,每个worker中运行的task只能属于这个topology。
    反之,一个topology包含多个worker,其实就是这个topology运行在多个worker上。
    一个topology要求的worker数量如果不被满足,集群在任务分配时,根据现有的worker先运行topology。
    如果当前集群中worker数量为0,那么最新提交的topology将只会被标识active,不会运行,
    只有当集群有了空闲资源之后,才会被运行。

    相关文章

      网友评论

          本文标题:Storm集群部署与单词计数程序

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