1.引言
1.1 名词解释
Zookeeper:解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
ZeroMQ:Storm0.9.0之前的版本中需要安装ZeroMQ,实现Strom Worker之间的通信;Storm0.9.0版本之后采用Netty替代ZeroMQ使Strom部署分布式环境更方便。
Netty:JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
2.安装
本次安装分三个步聚进行:
1、安装JRE环境,JRE要求1.6及以上(略)
2、安装Zookeeper,本次使用Zookeeper-3.4.6为例
3、安装Storm,使用0.9.0及以上版即可
2.1 Zookeeper
Zookeeper安装分单机模式和分布式模式,单机模式安装如下:
下载并解压Zookeeper:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
Zookeeper配置项:
1.tickTime:CS通信心跳数
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
2.initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
3.syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
5.dataLogDir:日志文件目录
Zookeeper保存日志文件的目录。
dataLogDir=/home/michael/opt/zookeeper/log
6.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
7.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
server.N其中N表示服务器编号(可以为1,2,3…),YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪分布时,IP地址都一样,只能时A端口和B端口不一样。
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B
伪分布:
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
分布式:
server.1=192.168.1.2:2888:3888
server.2=192.168.1.3:2888:3888
server.3=192.168.1.4:2888:3888
单机版:
1)重命名 Zoo_sample.cfg文件
Windows下直接重命名为zoo.cfg
Linux:
mv ../zoo_sample.cfg zoo.cfg
2)配置Zoo.cfg
dataDir=…/data,data目录不存,则手工创建。
如下:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=D:\\server1\\data
3)启动Zookeeper
../zookeeper-3.4.6/bin/zkServer.sh start
4)测试Zookeeper
../zookeeper-3.4.6/bin/zkCli.sh 或 echo stat|nc localhost 2181
分布式:
1)重命名 Zoo_sample.cfg文件
Windows下直接重命名为zoo.cfg
Linux:
mv ../zoo_sample.cfg zoo.cfg
2)配置Zoo.cfg
dataDir=…/data,data目录不存,则手工创建。在本机模拟三个节点(伪分布)
tickTime=2000
initLimit=5
syncLimit=2
dataDir=D:\\server1\\data
dataLogDir=D:\\server1\\dataLog
clientPort=2181
//伪分布配置实例
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
3)创建标识Server ID
在…/zookeeper-3.4.6/data目录中创建文件 myid 文件,每个文件中分别写入当前机器的server id,例如1.2.3.4这个机器,在…/zookeeper-3.4.6/data目录的myid文件中写入数字1
注意:windows中新建myid文件是不能有后缀
4)启动Zookeeper
../zookeeper-3.4.6/bin/zkServer.sh start
5)测试Zookeeper
../zookeeper-3.4.6/bin/zkCli.sh 或 echo stat|nc localhost 2181
2.2 Storm
主要介绍Storm分布式集群环境的搭建,单机模式(又称本地集群、伪分布式)
1)搭建一个Zookeeper集群(参考上述2.1节)
2)安装JRE(略)
3)在nimbus、supervisor节点下载并解压缩Storm包
4)修改nimbus、supervisor节点的配置文件(storm.yaml)
5)使用storm脚本启动守护进程(包括nimbus、supervisor、ui)
在自己的win2008服务器上安装如下三台虚拟机(普通PC机上也行):
①cluster01:
用户名 / 密码:nimbus / nimbus
ip:192.168.170.128
②cluster02:
用户名 / 密码:zookeeper / zookeeper
ip:192.168.170.129
③cluster03:
用户名 / 密码:supervisor / supervisor
ip:192.168.170.130
此三台虚拟机分别用作Storm集群中的nimbus节点、Zookeeper集群、supervisor节点,因此后面说的在nimbus节点上的操作实际上就是在cluster01这台虚拟机上进行操作,其他类推。
1、搭建Zookeeper集群
参考上述2.1节,在cluster02虚拟机安装Zookeeper集群。
2、安装JRE
略
3、下载并解压Storm到nimbus、supervisor节点
采用Storm0.9.0及以上
4、修改nimbus、supervisor节点的配置文件(storm.yaml)
Storm的配置文件位于storm主目录下的conf/storm.yaml,有四处强制需要指定,分别是:
①storm.zookeeper.servers:指定zookeeper集群中的主机列表,本例中zookeeper集群只有一台主机,配置如下:
storm.zookeeper.servers:
- “192.168.170.129”
②storm.local.dir: nimbus和supervisor进程需要一个本地磁盘上的目录去存储一些jar包、配置文件,需要注意此目录的权限。
nimbus节点上的配置:
storm.local.dir: "/home/nimbus/storm"
supervisor节点上的配置:
storm.local.dir: "/home/supervisor/storm"
③nimbus.host:指定nimbus节点对应的主机,配置如下:
nimbus.host: "192.168.170.128"
④supervisor.slots.ports:对于每个supervisor节点,需要指定一些端口,来运行相应数目的JVM进程。下面的配置开发了四个端口,即在supervisor节点上运行了四个JVM进程(4个worker、此处涉及到Storm中的并行化机制)。
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
注:nimbus节点和supervisor节点上的storm.yaml均需要配置。
⑤使用storm脚本启动守护进程(包括nimbus、supervisor、ui)
1) nimbus:在nimbus节点上运行storm nimbus命令
在Storm主控节点上运行”bin/storm nimbus >/dev/null 2>&1 &”启动Nimbus后台程序,并放到后台执行;
2) supervisor:在supervisor节点上运行 storm supervisor命令
Supervisor: 在Storm各个工作节点上运行”bin/storm supervisor >/dev/null 2>&1 &”启动Supervisor后台程序,并放到后台执行
3)ui:在nimbus节点上运行storm ui命令
UI: 在Storm主控节点上运行”bin/storm ui >/dev/null 2>&1 &”启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。
注意事项:
启动Storm后台进程时,需要对conf/storm.yaml配置文件中设置的storm.local.dir目录具有写权限。
Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
为了方便使用,可以将bin/storm加入到系统环境变量中。
2.3 项目部署
①启动Storm Topology:
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为org.me.MyTopology执行时需要传入的参数。
②停止Storm Topology:
storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
相关推荐
Apache Storm 是一个开源的分布式实时计算系统,它能够处理大规模的数据流并进行实时分析。在单节点部署中,所有的 Storm 组件,包括 Nimbus、Supervisor 和 UI,都将运行在同一台机器上,适合于开发环境或简单测试...
这意味着Storm能够在数据产生的瞬间立即进行处理,而不是像Hadoop那样等待整个数据集准备好后再进行批处理。 #### Storm 架构概述 Storm 的架构主要包括三个组件:Nimbus、Zookeeper 和 Supervisor。 - **Nimbus**...
Storm 0.9.0 是一个流行的开源分布式实时计算系统,由Twitter开发并维护,它在大数据处理领域具有广泛的应用...在实际应用中,考虑到社区支持和性能优化,建议使用更现代的Storm版本或考虑迁移至其他更新的流处理框架。
随着大数据处理框架的发展,除了最初的Hadoop MapReduce,出现了许多其他选择,如Spark、Flink、Storm等。Apache Spark以其内存计算的优势,提供更快的迭代计算和流处理能力,适合交互式分析和实时计算。Apache ...
Apache Storm作为一款成熟的实时数据流处理框架,在大数据领域有着广泛的应用前景。通过深入理解Storm的工作原理和开发流程,可以帮助我们更好地利用其强大的功能解决实际问题。无论是对于数据工程师还是开发人员来...
Apache Storm作为一款强大的实时计算框架,能够处理大规模流式数据,而Zookeeper则是Apache开源项目中的协调服务,它在分布式环境中提供配置管理、命名服务、集群同步等功能。本方案结合统信UOS操作系统,详细介绍...
在构建Storm与Kafka的集成应用时,为了确保数据流处理的正常运行,我们需要准备一系列的JAR包。以下是对这些关键组件的详细说明: 1. **Kafka JAR包**: Kafka是Apache开发的一个分布式流处理平台,用于创建实时的...
大数据挖掘技术在近年来已经成为了信息技术领域的重要研究方向,而Apache Storm作为一个实时计算框架,在这个领域中扮演着至关重要的角色。本篇主要探讨基于Storm的大数据挖掘技术,包括其核心概念、工作原理以及在...
在IT领域,Apache Storm是一个分布式实时计算系统,用于处理大规模数据流。Storm集群的搭建是大数据处理中的一个...通过不断实践和学习,我们可以熟练地利用Storm处理大规模实时数据流,为业务提供强大的实时分析能力。
Apache Storm是一个开源的分布式实时计算系统,用于处理无界数据流,具有高吞吐量和容错性。 【描述】"简单的storm例子.rar"表明这个压缩包可能包含了演示如何在Storm上构建和运行基本数据流处理程序的源代码和配置...
1. **Topology(拓扑)**:是Storm处理数据流的逻辑结构,由Spouts(数据源)和Bolts(处理逻辑)组成。 2. **Spout(喷口)**:是拓扑中的数据源,负责产生数据流。在这个例子中,我们可以创建一个简单的Spout来...
《基于Storm流计算天猫双十一作战室项目实战》的课程涵盖了多个关键技术和实战环节,旨在让学员深入了解并熟练应用Storm流计算框架,同时强化其在大数据处理领域的综合能力。以下是课程内容的详细阐述: 1. **Storm...
与Hadoop等批处理系统不同,Storm处理的是连续不断的数据流,适合实时分析、在线学习等场景。 2. **Job提交流程** - **编写源码**:首先,你需要使用Java或Clojure编写Storm拓扑结构(Topology),定义数据流的...
【大数据与云计算教程课件】中的“31.Strom”部分详细介绍了实时数据处理框架Storm。Storm是由Twitter开源的,旨在解决随着互联网急剧发展而产生的海量数据实时处理需求。相较于传统的Hadoop,Storm在实时计算方面...
- **定义**: 一些框架如Storm能够实现实时数据处理,满足对实时性有较高要求的应用场景。 - **意义**: 对于需要及时响应的数据处理任务,如实时监控、流数据分析等,提供了技术支持。 **1.4 安全性与容错性** - **...
通过JPMML,你可以将各种机器学习库(如Weka、R、Python的scikit-learn等)训练出的模型转换为PMML,然后在任何支持PMML的平台上执行,如Java应用、Web服务、大数据处理框架等。 **Apache Storm** Apache Storm是一...
例如,Twitter自身就使用Storm处理其平台上的实时信息流,提供实时趋势分析。 8. **最佳实践** 开发Storm应用时,需要注意优化数据传输效率,合理选择Stream Grouping策略,以及充分考虑容错和资源调度。同时,...
通过编译和安装jzmq,我们可以确保Storm能够正确地与ZeroMQ进行交互,从而实现高效的实时数据处理。 要搭建Storm环境,我们需要完成以下步骤: 1. **环境准备**:确保你的系统已安装Java开发环境(JDK),并设置...
4. 实时性要求:实时数据处理是流计算框架的主要应用之一。在迁移过程中,开发者需要评估Flink是否能更好满足实时性的需求。 5. 生态系统和社区支持:了解Flink的生态系统和社区活跃度对于未来系统的维护和升级非常...