Storm配置运行

Posted bkxk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Storm配置运行相关的知识,希望对你有一定的参考价值。

Storm核心概念

Nimbus:Storm集群主节点,负责资源分配和任务调度。我们提交任务和截止任务都是在Nimbus上操作的。一个Storm集群只有一个Nimbus节点。

Supervisor:Storm集群工作节点,接受Nimbus分配任务,管理所有Worker。

Worker:工作进程,每个工作进程中都有多个Task。

Task:任务,每个Spout和Bolt都是一个任务,每个任务都是一个线程。

Topology:计算拓扑,包含了应用程序的逻辑。

Stream:消息流,关键抽象,是没有边界的Tuple序列。

Spout:消息流的源头,Topology的消息生产者。

Bolt:消息处理单元,可以过滤、聚合、查询数据库。

Stream grouping:消息分发策略,一共6种,定义每个Bolt接受何种输入。

Reliability:可靠性,Storm保证每个Tuple都会被处理。

                  Storm.yaml常用配置项

配置选项名称

配置选项作用

topology.max.task.parallelism

每个Topology运行时最大的executor数目

topology.workers

每个Topology运行时的worker的默认数目,若在代码中设置,则此选项值被覆盖

storm.zookeeper.servers

zookeeper集群的节点列表

storm.local.dir

Storm用于存储jar包和临时文件的本地存储目录

storm.zookeeper.root

Storm在zookeeper集群中的根目录,默认是“/”

ui.port

Storm集群的UI地址端口号,默认是8080

nimbus.host:

Nimbus节点的host

supervisor.slots.ports

Supervisor 节点的worker占位槽,集群中的所有Topology公用这些槽位数,即使提交时设置了较大数值的槽位数,系统也会按照当前集群中实际剩余的槽位数来 进行分配,当所有的槽位数都分配完时,新提交的Topology只能等待,系统会一直监测是否有空余的槽位空出来,如果有,就再次给新提交的 Topology分配

supervisor.worker.timeout.secs

Worker的超时时间,单位为秒,超时后,Storm认为当前worker进程死掉,会重新分配其运行着的task任务

drpc.servers

在使用drpc服务时,drpc server的服务器列表

drpc.port

在使用drpc服务时,drpc server的服务端口

 

Storm运行依赖zookeeper,需启动zookeeper,在此不做过多介绍可参考:https://www.cnblogs.com/zhaojiankai/p/7126181.html

Zookeeper集群在Storm集群中的作用:

Zookeeper集群负责Nimbus节点和Supervior节点之间的通信,监控各个节点之间的状态。比如通常我们提交任务的时候是在Nimbus节点上执行的,Nimbus节点通过zk集群将任务分发下去,而Supervisor是真正执行任务的地方。Nimbus节点通过zk集群监控各个Supervisor节点的状态,当某个Supervisor节点出现故障的时候,Nimbus节点就会通过zk集群将那个Supervisor节点上的任务重新分发,在其他Supervisor节点上执行。这就意味着Storm集群也是高可用集群,如果Nimbus节点出现故障的时候,整个任务并不会停止,但是任务的管理会出现影响,通常这种情况下我们只需要将Nimbus节点恢复就可以了。Nimbus节点不支持高可用,这也是Storm目前面临的问题之一。不过一般情况下,Nimbus节点的压力不大,通常不会出现问题。

一般情况下,Zookeeper集群的压力并不大,一般只需要部署3台就够了。Zookeeper集群在Storm集群中逻辑上是独立的,但在实际部署的时候,一般会将zk节点部署在Nimbus节点或Supervisor节点上。

 

安装:

1.解压安装文件到制定的目录,并把storm加入到环境变量

wget http://apache.fayea.com/storm/apache-storm-1.0.0/apache-storm-1.0.0.tar.gz
sudo tar -zxvf apache-storm-0.9.6.tar.gz -C /usr/local
cd /usr/local
sudo mv apache-storm-0.9.6 storm
sudo vi /etc/profile
export STORM_HOME=/usr/local/storm
export PATH=$PATH:${STORM_HOME}/bin
sudo source /etc/profile

 

2.配置storm.yaml

技术分享图片

 

storm.zookeeper.servers:
- "node3"

nimbus.seeds: ["node3"]

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

ui.port: 8889 

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

注意:以上配置,凡是有冒号的地方,冒号后都要有个空格。

将配置好的拷贝到其余两台机器上

[[email protected] local]# scp -pr apache-storm-1.0.0 [email protected]:/usr/local/
[[email protected] local]# scp -pr apache-storm-1.0.0 [email protected]:/usr/local/

 启动 nimbus、supervisor、ui

cd /usr/local/storm/bin

./storm nimbus

./storm supervisor

./storm ui

 技术分享图片

 

Storm常用命令

  1、任务提交命令:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】

  storm jar /export/servers/storm/examples/storm-starter/storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology  wordcount

  与hadoop不同的是:不需要指定输入输出路径 如:hadoop jar /usr/local/wordcount.jar /data.txt /wcout

##杀死任务命令格式:storm kill name -w seconds
storm kill wordcount -w 10

##停用任务命令格式:storm deactivte name 
storm deactivte wordcount

##启用任务命令格式:storm activate name
storm activate wordcount

##平衡任务命令格式:storm rebalance name
storm rebalance wordcount





以上是关于Storm配置运行的主要内容,如果未能解决你的问题,请参考以下文章

Storm集群的安装配置

Storm-Flux简介

storm.yaml 配置项

二:Storm的配置项说明

storm性能优化

storm配置