【Storm集群简单介绍】

1、 Storm集群中的概念

(1) 概述
Storm集群遵循主/从结构。
Storm集群由一个主节点(nimbus)和一个或者多个工作节点(supervisor)组成。
除此之外Storm集群还需要一个Zookeeper来进行集群协调。
(2) nimbus
nimbus守护进程主要的责任是管理,协调和监控在集群上运行的topology。主要的任务包括topology的发布,任务的指派,事件处理失败时重新指派任务。
将topology发布到Storm集群,将预先打包成jar文件的topology和配置信息提交到nimbus服务器上,一旦imbus接收到topology的压缩包,会将jar包分发到足够数量的supervisor节点上,当supervisor节点接收到了topology压缩文件,nimbus就会指派task到每个supervisor并且发送信号指示supervisor生成足够的worker来执行指派的task。
nimbus记录所有的supervisor节点的状态和分配给他们的task,如果nimbus发现某个supervisor没有上报心跳或者已经不可达了,他将会将故障supervisor分配的task重新分配到集群中的其他supervisor节点。
nimbus并不参与topology的数据处理过程,只是负责topology的初始化、任务分发和进程监控。因此,即使nimbus守护进程在topology运行时停止了,只要分配的supervisor和worker健康运行,topology会一直继续处理数据,所以称之为半容错机制。

(3) supervisor
supervisor守护进程等待nimbus分配任务后生成并监控workers执行任务。
supervisor和worker都是运行在不同的JVM进程上,如果supervisor启动的worker进程因为错误异常退出,supervisor将会尝试重新生成新的worker进程。

2、 Storm集群安装配置

(1) 下载storm
http://storm.apache.org/ 下载安装包
(2) 安装前提
JDK Zookeeper
(3) 安装storm
上传storm安装包到Linux,进行解压
(4) 配置Storm
配置conf/storm.yaml文件
必须修改的项:
1) storm.zookeeper.services
配置zookeeper集群的主机名称。
2) nimbus.host
指定了集群中nimbus的节点。
3) supervisor.slots.ports
配置控制每个supervisor节点运行多少个worker进程。
这个配置定义为worker监听的端口的列表,监听端口的个数控制了supervisor节点上有多少个worker的插槽。
默认的storm使用6700~6703端口,每个supervisor节点上有4个worker插槽。
4) storm.local.dir
storm工作时产生的工作文件存放的位置,注意,要避免配置到/tmp下。
5) Storm默认的ui端口是8080,但是8080端口容易被Tomcat占用,所以我在Storm配置文件strom.yaml里把端口改成9090
ui.port: 9090
在这里插入图片描述
可选的常用修改项:
1) nimbus.childopts(default: -Xms1024m)
这项JVM配置会添加在启动nimbs守护进程的java命令行中。
2) ui.port(default:8080)
这项配置指定了Storm UI的Web服务器监听的端口。
3) ui.childopts(default:-Xms1024m)
这项JVM配置会添加在StormUI服务启动的Java命令行中。
4) supervisor.childopts(default:-Xms768m)
这项JVM配置会添加Supervisor服务启动的Java命令行中。
5) worker.childopts(default:-Xms768m)
这项JVM配置会添加worker服务启动的Java命令行中。
6) topology.message.timeout.secs(default:30)
这个配置项定义了一个tuple树需要应答最大时间秒数限制,超过这个时间则认为超时失败。
7) topology.max.spout.pending(default:null)
在默认值null的情况下,spout每当产生新的tuple时会立即向后端发送,由于下游bolt执行可能具有延迟,可能导致topology过载,从而导致消息处理超时。如果手动将该值改为非null正整数时,会通过暂停spout发送数据来限制同时处理的tuple不能超过这个数,从而达到为Spout限速的作用。
8) topology.enable.message.timeouts(default:true):
这个选项用来锚定的tuple的超时时间。如果设置为false,则锚定的tuple不会超时。
(5) 拷贝storm到集群中足够多的节点
scp -r apache-storm-0.9.3 root@linux02:/home/software
scp -r apache-storm-0.9.3 root@linux03:/home/software

3、 Storm集群的使用

(1) 启动命令
在启动storm之前确保storm使用的zookeeper已经启动且可以使用

  1. storm nimbus
    启动nimbus守护进程
  2. storm supervisor
    启动supervisor守护进程
  3. storm ui
    启动stormui的守护进程,从而可以通过webUI界面来监控storm运行过程。http://linux01:9090
  4. storm drpc
    启动一个DRPC服务守护进程
    (2) 管理命令
  5. storm jar [path of jar] [class of topology] [arguments…]
    向集群提交topology。
    此命令会上传topology_jar文件到nimbus以分发到整个集群。
    提交后,Storm集群会激活并且开始运行topology。
  6. storm kill [topology_name] [-w wait_time]
    用来关闭已经部署的topology。
  7. storm deactivate [topology_name]
    暂停指定topology的spout发送tuple
  8. storm activate [topology_name]
    恢复指定topology的spout发送tuple。
  9. storm rebalance [topology_name][-w wait_time][-n worker_count][-e component_name=executor_count]
    指定storm在集群的worker之间重新平均地分配任务,不需要关闭或者重新提交现有的topology。当执行rebalance命令时,Storm会先取消激活topology,等待配置的的时间使剩余的tuple处理完成,然后再supervisor节点中均匀的重新分配worker。重新分配后,Storm会将topology恢复到之前的激活状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值