在《 Kafka实战-实时日志统计流程 》一文中,谈到了Storm的相关问题,在完成实时日志统计时,我们需要用到Storm去消费Kafka Cluster中的数据,所以,这里我单独给大家分享一篇Storm Cluster的搭建部署。以下是今天的分享目录:
下面开始今天的内容分享。
Twitter将Storm开源了,这是一个分布式的、容错的实时计算系统,已被贡献到Apache基金会,下载地址如下所示:
http://storm.apache.org/downloads.html
Storm的主要特点如下:
Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节 点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无 状态的,这样一来它们就变得十分健壮,两者的协调工作是由Apache的ZooKeeper来完成的。
Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Spout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。在Storm Concepts页面里对这些术语有更详细的描述。
在搭建Storm集群时,我们需要有Storm安装包,这里我采用的是Apache 版本的Storm安装包,下载链接如下所示:
Storm安装包 《 下载地址 》
ZooKeeper安装包 《 下载地址 》
在下载完成相关依赖基础软件后,下面我们开始安装部署Storm集群。
首先,我们解压相关依赖基础软件,关于ZK的安装环节,这里不做介绍,大家可以参考我写的《 配置高可用的Hadoop平台 》,里面有详细介绍如何安装ZK的步骤,下面重点介绍Storm集群搭建详情。
[hadoop@dn1 ~]$ tar -zxvf apache-storm-0.9.4.tar.gz
export STORM_HOME=/home/hadoop/storm-0.9.4 export PATH=$PATH:$STORM_HOME/bin
########### These MUST be filled in for a storm configuration storm.zookeeper.servers: - "dn1" - "dn2" - "dn3" storm.zookeeper.port: 2181 nimbus.host: "dn1" supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 storm.local.dir: "/home/hadoop/data/storm"
下面我们来看Storm的角色分配,如下图所示:
在配置完成相关文件后,我们使用scp命令将文件分发到各个节点,命令如下所示:
[hadoop@dn1 ~]$ scp -r storm-0.9.4/ hadoop@dn2:~/ [hadoop@dn1 ~]$ scp -r storm-0.9.4/ hadoop@dn3:~/
# 分别在三个节点依次启动zk的服务 [hadoop@dn1 ~]$ zkServer.sh start [hadoop@dn2 ~]$ zkServer.sh start [hadoop@dn3 ~]$ zkServer.sh start
# 在nimbus节点启动nimbus服务
[hadoop@dn1 ~]$ storm nimbus &
#在supervisor节点分别启动supervisor服务 [hadoop@dn2 ~]$ storm supervisor & [hadoop@dn3 ~]$ storm supervisor &
[hadoop@dn1 ~]$ storm ui &
[hadoop@dn1 storm-0.9.4]$ jps 2098 Jps 1983 core 1893 QuorumPeerMain 1930 nimbus
[hadoop@dn2 storm-0.9.4]$ jps 1763 worker 1762 worker 1662 QuorumPeerMain 1765 worker 1692 supervisor 1891 Jps
[hadoop@dn3 storm-0.9.4]$ jps 2016 QuorumPeerMain 2057 supervisor 2213 Jps
由于,集群我做过测试,提交过Topology,所以截图中会有提交记录,从上面的dn2节点的进程中也可以看出,有相应的worker进程,若是首次安装,未提交任务是不会有对应的显示的,下面附上Storm UI中相关的截图预览,如下图所示:
这就是本篇为大家介绍的Storm Cluster的搭建部署,从上面的Storm的分布图中我们可以细心的发现,Storm的分布存在单点问题,国外已经有Storm HA版本,不过这个非官方版本,目前Storm提供了一些机制来保证即使在节点挂了或者消息被丢失的情况下也能正确的进行数据处理,可以参考官方给出的解决方案,地址如下所示:
http://storm.apache.org/documentation/Guaranteeing-message-processing.html
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!