Twitter Storm 系统集群搭建

运维 系统运维
Storm是Twitter开源的一个分布式的实时计算系统,Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。本文分享了Twitter Storm 集群的搭建方法,希望给您带来一些帮助。

Storm是什么?

Storm是Twitter开源的一个分布式的实时计算系统

使用场景:

数据的实时分析、持续计算、分布式RPC等等。

Storm特点(Storm类似手扶电梯,不出故障就会一直运行,hadoop类似升降电梯,到达一定程度会停止。):

  • 分布式
  • 可扩展
  • 高可靠性
  • 编程模型简单
  • 高效实时

常用的类:

  • BaseRichSpout(消息生产者)
  • BaseBasicBolt(消息处理者)
  • TopologyBuilder(拓扑的构建器)
  • Config(配置)
  • StormSubmitter/LocalCluster(拓扑提交器)

Storm集群部署

Storm集群架构:

如图: 

在Storm的集群里面有两种节点:控制节点和工作节点。

控制节点上面运行一个叫Nimbus进程,Nimbus负责在集群里面

分发代码,分配计算任务,并且监控状态。

每一个工作节点上面运行一个叫做Supervisor进程。

Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。

Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群完成。

集群规划:(根据具体需求规划)

linux主机名    Storm角色    Zookeeper
master         Nimubus      单节点zk
slave01        Supervisor
slave02        Supervisor

准备工作:

环境:centos6.4

软件:

jzmq-master
storm-0.8.2
zeromq-2.1.7
zookeeper-3.4.5

环境配置:(参见前几篇博客)

Linux基本配置:

  • 修改主机名
  • 修改IP
  • 修改主机和IP的映射关系
  • 关闭防火墙

安装步骤:

1.安装jdk

2.搭建Zookeeper集群(这里我们只安装一个zk在主节点上)

  • 解压

进入zk的conf目录下,cp zoo_sample.cfg zoo.cfg(修改一下名字),其它的暂时都不变

3.安装Storm依赖(zeromq、jzmq、python)

3.1安装zeromq,然后进入到zeromq-2.1.7/目录下

检测环境:./configure
cd zeromq-2.1.7
./configure

#编译可能会出错:

configure: error: Unable to find a working C++ compiler

#安装一下依赖的rpm包:

libstdc++-devel gcc-c++

虚拟机可以上网的情况下:(建议使用此方法)

yum install gcc-c++

虚拟机不能上网情况:

首先到http://mirrors.163.com/centos/6.4/os/x86_64/Packages/(下载的版本一定要和系统对应)

rpm -i libstdc++-devel-4.4.7-3.el6.x86_64.rpm
rpm -i gcc-c++-4.4.7-3.el6.x86_64.rpm
rpm -i libuuid-devel-2.17.2-12.9.el6.x86_64.rpm

然后运行./configure

make(编译)

make install(这个才彻底安装)

3.2.编译安装JZMQ:

cd jzmq

执行./autogen.sh(是为了让它产生配置文件,默认没有配置文件的),

#报错:autogen.sh: error: could not find libtool.
libtool is required to run autogen.sh.
缺少libtool

同样,可上网情况下:

yum install libtool(readhat企业版不会出现这些报错)

或者手动安装:

rpm -i autoconf-2.63-5.1.el6.noarch.rpm
rpm -i automake-1.11.1-4.el6.noarch.rpm
rpm -i libtool-2.2.6-15.5.el6.x86_64.rpm
./configure
make
make install

3.33.编译安装Python(先确定你系统自带的版本,如果是2.6.6或者之上的不需要安装)

tar –zxvf Python-2.6.6.tgz
cd Python-2.6.6
./configure
make
make install

3.4安装storm

修改storm.yaml配置文件(子节点上也得修改)
修改zk对应的主机名
修改主节点对应的主机名

PS:

3.41 Storm发行版本解压目录下有一个

conf/storm.yaml文件:

用于配置Storm。默认配置在这里可以查看conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。

以下配置选项是必须在conf/storm.yaml中进行配置的:

storm.zookeeper.servers:

Storm集群使用的Zookeeper集群地址,

其格式如下:

storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"

如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项。

3.42 storm.local.dir: Nimbus和Supervisor进程

用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。

然后在storm.yaml中配置该目录,如:

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

分别启动三台机器,master:到storm的bin目录下:

./storm nimbus > /dev/null 2>&1 &

slave01:到storm的bin目录下:

./storm supervisor > ../logs/su.log 2>&1 &

slave02:到storm的bin目录下:

./storm supervisor > ../logs/su.log 2>&1 &

(启动后台进程,并把正确和错误的信息输出到该文件中)

在master上启动UI管理界面

./storm ui > /dev/null 2>&1 &

通过浏览器观察:(主节点的ip:8080),观察集群的worker资源使用情况、Topologies的运行状态等信息。

至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

责任编辑:黄丹 来源: oschina
相关推荐

2013-09-05 09:47:35

TwitterSummingbird开源

2012-12-06 10:59:51

大数据

2014-04-15 11:24:53

Twitter Sto

2016-10-27 09:37:10

Hadoop集群配置

2011-12-07 16:11:50

Hadoop集群搭建

2015-07-16 10:11:38

TwitterHadoop集群优化

2020-12-14 12:48:51

Kafka集群节点

2014-01-13 09:36:37

Twitter开源软件

2015-05-06 13:34:14

MySQL集群搭建

2022-09-15 08:31:11

主从复制模式Docker

2014-02-14 15:49:03

storm安装部署

2021-01-07 10:18:03

Redis数据库环境搭建

2024-03-07 16:03:56

RedisDocker

2019-08-12 16:07:32

Web系统集群

2010-06-03 19:02:31

Hadoop集群搭建

2019-09-18 16:52:58

hyperf微服务php

2010-06-04 18:17:50

Hadoop集群

2014-07-28 10:27:37

linux集群

2013-12-12 13:25:18

2018-06-13 14:42:53

集群虚拟化搭建
点赞
收藏

51CTO技术栈公众号