storm_伪集群安装

创建linux虚拟机,用户名密码都为gary,ip为192.168.32.131。

关闭防火墙:

service iptables stop

chkconfig iptables off

查看防火墙状态:

service iptables status

  1. 安装jdk

下载并解压jdk:

在linux下创建/opt/java目录,将将jdk中的文件复制过去。

然后添加环境变量,在/etc/profile中最后添加如下两行:

export JAVA_HOME=/opt/java

export PATH=$PATH:$JAVA_HOME/bin

 

source /etc/profile

使其立即生效

查看java版本,java –version如果输出版本则jdk安装成功。

2.Zookeeper伪集群

2.1下载复制zookeeper

在/opt/zookeeper目录下创建三个目录:

zookeeper1、zookeeper2、zookeeper3

然后将文件夹zookeeper-3.5.1-alpha中的内容复制到这三个目录

2.2 修改各配置文件

如/opt/zookeeper/zookeeper1/conf/zoo.cfg

initLimit=5

syncLimit=2

clientPort=2181

tickTime=2000

dataDir=/opt/zookeeper/zookeeper1/data

dataLogDir=/opt/zookeeper/zookeeper1/log

server.1=localhost:4181:5181

server.2=localhost:4182:5182

server.3=localhost:4183:5183

其他两个配置文件只需要将端口分别改为2182和2183。对应目录改为自己的目录即可。

注:因为伪集群是在同一台电脑上,因此各端口不能重。

在各自的dataDir目录下创建myid文件。对应内容分别为1、2、3.

echo 1 > /opt/zookeeper/zookeeper1/data/myid

2.3启动zookeeper:

进入bin目录,输入zkServer.sh start

查看进程,jps

发现多了一个QuorumPeerMain,说明进程起来了,再查看启动成功还是失败:zkServer.sh status

因为是集群,有三个节点,才起一个肯定会失败。直接再把另两个也启动起来。

此时再查看进程,会发现启了三个:

在zookeeper1的bin下查看状态:

3.Storm伪集群

3.1下载复制storm

下载apache-storm-0.9.5。

在目录/opt/storm下创建三个目录storm1、storm2、storm3.

将apache-storm-0.9.5复制过去。

3.2 修改各配置文件

Storm1下storm.yaml内容如下:

storm.zookeeper.servers:

    - "localhost"

 storm.zookeeper.port: 2181

 nimbus.host: "localhost"

 # drpc.servers: "localhost"

 ui.port: 8085

 supervisor.slots.ports:

    - 6700

    - 6701

    - 6702

    - 6703

 storm.local.dir: "/opt/storm/storm1/workdir"

 storm.messaging.transport: "backtype.storm.messaging.netty.Context"

 storm.messaging.netty.server_worker_threads: 1

 storm.messaging.netty.client_worker_threads: 1

 storm.messaging.netty.buffer_size: 5343880

 storm.messaging.netty.max_retries: 100

 storm.messaging.netty.max_wait_ms: 1000

 storm.messaging.netty.min_wait_ms: 100

 

storm2下的配置文件如下:

storm.zookeeper.servers:

    - "localhost"

 storm.zookeeper.port: 2182

 nimbus.host: "localhost"

ui.port: 8085

 supervisor.slots.ports:

    - 7700

    - 7701

    - 7702

    - 7703

 storm.local.dir: "/opt/storm/storm2/workdir"

 storm.messaging.transport: "backtype.storm.messaging.netty.Context"

 storm.messaging.netty.server_worker_threads: 1

 storm.messaging.netty.client_worker_threads: 1

 storm.messaging.netty.buffer_size: 5343880

 storm.messaging.netty.max_retries: 100

 storm.messaging.netty.max_wait_ms: 1000

 storm.messaging.netty.min_wait_ms: 100

 

注:其中zookeeper的端口号不改为2182,就用2181也行,反正都在一个集群里,而且地址都是localhost。

 

storm3下的配置文件如下:

storm.zookeeper.servers:

    - "localhost"

 storm.zookeeper.port: 2183

 nimbus.host: "localhost"

ui.port: 8085

 supervisor.slots.ports:

    - 8700

    - 8701

    - 8702

    - 8703

 storm.local.dir: "/opt/storm/storm3/workdir"

 storm.messaging.transport: "backtype.storm.messaging.netty.Context"

 storm.messaging.netty.server_worker_threads: 1

 storm.messaging.netty.client_worker_threads: 1

 storm.messaging.netty.buffer_size: 5343880

 storm.messaging.netty.max_retries: 100

 storm.messaging.netty.max_wait_ms: 1000

 storm.messaging.netty.min_wait_ms: 100

 

3.3启动守护者进程

启动nimbus

使用jps查看多了一个nimbus进程

启动ui

进程中多了一个core进程

启动supervisor

进程中多了一个supervisor

启动另一个supervisor

在页面中查看storm状态:

http://192.168.32.132:8085/index.html

可见启了两个工作节点,都叫localhost。

4.发布storm应用

以hellostorm程序为例,它的spout是从{"one", "two", "three", "four", "five"}中随机获取一个单词发给第一组bolt,第一组bolt将每个单词添加!!!后发给下一组bolt,第二组bolt统计各单词出现的次数,并打印。

builder.setSpout("word", new WordSpout(), 1);

builder.setBolt("ExclamationBolt", new ExclamationBolt(), 4).shuffleGrouping("word");

builder.setBolt("MergeBolt", new MergeBolt(), 4).globalGrouping("ExclamationBolt");

单机运行时在后台输出内容如下:

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

four!!! : 1

6998 [Thread-25-word] INFO  backtype.storm.daemon.task - Emitting: word default [four]

6998 [Thread-13-ExclamationBolt] INFO  backtype.storm.daemon.executor - Processing received message source: word:10, stream: default, id: {}, [four]

6998 [Thread-13-ExclamationBolt] INFO  backtype.storm.daemon.task - Emitting: ExclamationBolt default [four!!!]

6998 [Thread-15-MergeBolt] INFO  backtype.storm.daemon.executor - Processing received message source: ExclamationBolt:4, stream: default, id: {}, [four!!!]

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

four!!! : 2

8008 [Thread-25-word] INFO  backtype.storm.daemon.task - Emitting: word default [three]

8008 [Thread-9-ExclamationBolt] INFO  backtype.storm.daemon.executor - Processing received message source: word:10, stream: default, id: {}, [three]

8008 [Thread-9-ExclamationBolt] INFO  backtype.storm.daemon.task - Emitting: ExclamationBolt default [three!!!]

8009 [Thread-15-MergeBolt] INFO  backtype.storm.daemon.executor - Processing received message source: ExclamationBolt:2, stream: default, id: {}, [three!!!]

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

three!!! : 1

four!!! : 2

 

  1. 打包

将程序打包为hellostorm.jar包。放到/opt/storm/storm1/topologylib目录。

打包过程如下:

1.在hellostorm项目上右键新建一个MANIFEST.MF文件。

文件内容如下:

Manifest-Version: 1.0

Class-Path:

 

 

 

Main-Class: com.glodon.topology.WordTopology

 

 

其中Class-Path:为使用的包名,因为目前需要的包在storm中全有,因此不需要写包名。Main-Class:为main函数所在的类名。

2.导出jar包

不选lib选项,不选classpath和project。指定目录,下一步:

选择刚添加的文件。

将导出的hellostorm.jar包复制到storm1/topologylib中。

2.启动storm

[root@localhost toplogylib]# /opt/storm/storm1/bin/storm jar /opt/storm/storm1/topologylib/hellostorm.jar com.gary.topology.WordTopology hellotest admin admin

第一段/opt/storm/storm1/bin/storm表示使用主控节点的storm。

第二段jar 表示将要启动一个jar程序

第三段/opt/storm/storm1/topologylib/hellostorm.jar指定包路径

第四段com.gary.topology.WordTopology指定包中的main函数所在类

第五段为三个参数,第一个参数将作为storm启动名,后两个参数没有使用(见程序代码)

 

启动后stormUI 中就多了一个topology

运行一小会儿后查看两个节点的日志:

如:storm3下的日志在logs的worker-8702.log中。

 

 

3.关闭storm

关闭storm有两种方法:

1.在页面中

点进去后有个kill按钮。可直接关闭。弹框选择延迟多少秒关闭。

2.使用命令

在启动时指定了storm的名称:

[root@localhost topologylib]# /opt/storm/storm1/bin/storm jar /opt/storm/storm1/topologylib/hellostorm.jar com.gary.topology.WordTopology hellotest admin admin

关闭时:

[root@localhost topologylib]# /opt/storm/storm1/bin/storm kill hellotest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值