Storm 集群

  Apache Storm
Storm是一个分布式的,可靠的,容错的数据流处理系统。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。

1、Storm组件
在Storm集群中、有两类节点:主节点master node和工作节点worker nodes。

主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。

一个Storm拓扑结构在不同的机器上运行着众多的工作节点。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。

2、Zookeeper
Zookeeper是完成Supervisor和Nimbus之间协调的服务。

而应用程序实现实时的逻辑则被封装进Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。

3、Spout
Spout从来源处读取数据并放入topology。

Spout分成可靠和不可靠两种;当Storm接收失败时,可靠的Spout会对tuple(元组,数据项组成的列表)进行重发;而不可靠的Spout不会考虑接收成功与否只发射一次。而Spout中最主要的方法就是nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回。

4、Bolt
Topology中所有的处理都由Bolt完成。Bolt从Spout中接收数据并进行处理,如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。而Bolt中最重要的方法是execute(),以新的tuple作为参数接收。不管是Spout还是Bolt,如果将tuple发射成多个流,这些流都可以通过declareStream()来声明。

5、Stream Groupings
Stream Grouping定义了一个流在Bolt任务中如何被切分。

Shuffle grouping:
//  随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。
Fields grouping
//  根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。
Partial Key grouping
//  根据指定字段分割数据流,并分组。类似Fields grouping。
All grouping
//  tuple被复制到bolt的所有任务。这种类型需要谨慎使用。
Global grouping
//  全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。
None grouping
//  无需关心流是如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。
Direct grouping
//  这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。
Local or shuffle grouping
//  如果目标bolt有一个或多个任务在同一工作进程,tuples 会打乱这些进程内的任务。否则,这就像一个正常的 Shuffle grouping。    

  Apache-strom 必须要求Python 2.6以上
  1、升级 Python 官方下载地址:
https://www.python.org/ftp/python/

wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
# tar -xf Python-3.6.0.tgz
# mv Python-3.6.0 /usr/local/python
# cd /usr/local/python
# ./configure --prefix=/usr/local/python
# make
# make install
# mv /usr/bin/python /usr/bin/python_old
# ln -s /usr/local/python/bin/python3.6 /usr/bin/python
# python -V

2、如发现yum 异常则, 查看编辑 /usr/bin/yum 文件

将文件头部的
#!/usr/bin/python
改为以下:(因为系统默认是2.6)
#!/usr/bin/python2.6

  

三、storm 安集群配置;(具体根据线上环境资源进行设置)

系统:Centos6.7
内核:2.6.32-573.el6.x86_64
安装目录:/opt/storm
数据日志目录:/opt/storm/{data,logs}
用户组权限:deploy
机器 hostname 需要在 hosts 里面配置关系映射:
zks1 - 192.168.1.101
zks2 - 192.168.1.102zks3 - 192.168.1.103
zoo1 - 192.168.1.101 - myid1
zoo2 - 192.168.1.102 - myid2zoo3 - 192.168.1.103 - myid2

四、集群说明

主节点 (nimbus)  zks1
任务节点 (supervisor)   zks2   zks3 等
注:storm主节点、任务节点安装配置完全一致。

1、下载安装配置:官方下载地址:
http://mirrors.hust.edu.cn/apache/storm/

http://www-eu.apache.org/dist/storm/apache-storm-1.0.3/apache-storm-1.0.3.tar.gz
http://mirrors.hust.edu.cn/apache/storm/apache-storm-1.0.2/apache-storm-1.0.2.tar.gz
# tar -xf apache-storm-1.0.2.tar.gz
# cd apache-storm
# cat apache-storm-0.9.6/conf/storm.yaml |grep -v ^# |grep -v ^$
// ********** //storm.zookeeper.servers:
- "192.168.1.101"
- "192.168.1.102"
- "192.168.1.103"
nimbus.host: "192.168.1.101"
storm.zookeeper.port: 2181
ui.port: 8090
storm.local.dir: "/opt/apache-storm-0.9.6/data"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704
worker.childopts: "-Xmx2g"# worker.heap.memory.mb: 2048# // 调整分配给每个 worker 的内存 //
logviewer.port: 18090
topology.max.spout.pending: 1000
topology.message.timeout.secs: 300
storm.messaging.netty.server_worker_threads: 10// ********** //

2、主节点启动测验:

启动 nimbus
# nohup ./bin/storm nimbus >/dev/null 2>&1 &
启动 UI
# nohup ./bin/storm ui >/dev/null 2>&1 &

3、任务节点启动脚步

# cat supervisor_logviewer.sh
nohup ./bin/storm supervisor >/dev/null 2>&1 &
nohup ./bin/storm logviewer >/dev/null 2>&1 &

4、进程检测

# ps -ef|grep storm
# netstat -ano |grep 8090
时间: 2024-10-10 08:47:38

Storm 集群的相关文章

Storm集群上的开发 ,Topology任务的编写 之 WordCount程序的编写(六)

由之前的学习,Storm的程序构成有Topology,Spout.Blot组成. 构建工程第一步 :引入jar,把storm集群中的/usr/local/apps/apache-storm-1.0.3/lib目录jar包全部引入 程序项目架构 :

安装storm集群

手工安装Storm集群 注:最新的Storm已不再必须依赖ZeroMQ,各种依赖的库和软件也已经有更新的版本. 要手工安装Storm,需要先安装以下软件 Zookeeper集群(安装方法详见管理向导) Java6.0 Python2.6.6 Unzip命令 NOTE: Nimbus和管理进程将要依赖Java.Python和unzip命令 安装本地库: 安装ZeroMQ: 1 wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz

Storm集群安装部署步骤【详细版】

作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1. Storm集群组件 Storm集群中包含两

1.1 Storm集群安装部署步骤

安装storm集群,需要依赖以下组件: Zookeeper Python Zeromq Storm JDK JZMQ 故安装过程根据上面的组件分为以下几步: 安装JDK 安装Zookeeper集群 安装Python及依赖 安装Storm 另外,操作系统环境为:Centos6.4,安装用户为:root. 1. 安装JDK 安装jdk有很多方法,可以参考文博客使用yum安装CDH Hadoop集群中的jdk安装步骤,需要说明的是下面的zookeeper集群安装方法也可以参考此文. 不管你用什么方法,

Storm集群搭建及测试

安装Storm 步骤: A.搭建ZooKeeper集群 B.安装storm依赖的软件 C.安装及配置Storm 1.搭建ZooKeeper集群 2.安装storm依赖的软件 ZeroMQ 2.1.7 是一个消息处理队列库,可在多个线程.内核和主机盒之间弹性伸缩. JZMQ   底层消息队列 Java 6 Python 2.6.6 unzip //用于解压可以不安装 ZeroMQ安装: wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar

Storm集群的搭建

集群结构 Storm集群表面类似Hadoop集群.但在Hadoop上你运行的是”MapReduce jobs”,在Storm上你运行的是”topologies”.”Jobs”和”topologies”是大不同的,一个关键不同是一个MapReduce的Job最终会结束,而一个topology永远处理消息(或直到你kill它). Storm集群有两种节点:控制(master)节点和工作者(worker)节点. 控制节点运行一个称之为”Nimbus”的后台程序,它类似于Haddop的”JobTrack

storm文档(11)----搭建storm集群

转载请注明出处:http://blog.csdn.net/beitiandijun/article/details/41684717 源地址:http://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html 本文叙述了storm集群搭建和运行步骤.如果你打算在AWS上进行的话,可以使用storm-deploy项目.storm-deploy在EC2上完全自动进行下载.配置.以及storm集群的安装等步骤.它也为你配置了Gan

一:Storm集群环境搭建

第一:storm集群环境准备及部署[1]硬件环境准备--->机器数量>=3--->网卡>=1--->内存:尽可能大--->硬盘:无额外需求[2]软件环境准备--->CentOS-6.0-x86_64系统环境--->三台地址--->zookeeper和storm公用物理环境 第二:节点环境查看 第三:节点之间用ip-->别名绑定/etc/hosts,然后用ping 别名 进行测试 第四:zookeeper集群环境搭建第五:Storm集群环境搭建[1

Storm集群部署

一. 说明 Storm是一个分布式实时计算系统,Storm对于实时计算的意义就相当于Hadoop对于批量计算的意义.对于实时性较高的系统Storm是不错的选择.Hadoop提供了map, reduce原语,使批处理程序变得非常地简单和优美.同样,storm也为实时计算提供了一些简单优美的原语. 涉及的术语说明: Nimbus:Storm集群的主控节点,负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态.其进程名为nimbus. Supervisor:Supervisor

Storm集群的DRPC模式

storm的DRPC模式的作用是实现从远程调用storm集群的计算资源,而不需要连接到集群的某一个节点.OK.那么storm实现DRPC主要是使用LinearDRPCTopologyBuilder这个类.下面就先来看看一个简单的例子,它的源码的github上. import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.LocalDRPC; import backtype.stor