`
yangyangmyself
  • 浏览: 232422 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

STORM实时处理框架之安装准备

阅读更多

1.引言

1.1     名词解释

Zookeeper:解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

ZeroMQStorm0.9.0之前的版本中需要安装ZeroMQ,实现Strom Worker之间的通信;Storm0.9.0版本之后采用Netty替代ZeroMQ使Strom部署分布式环境更方便。

NettyJBOSS提供的一个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.tickTimeCS通信心跳数

Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。

2.initLimitLF初始通信时限

集群中的follower服务器(F)leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

3.syncLimitLF同步通信时限
集群中的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地址,ALF通信端口,表示该服务器与集群中的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)在nimbussupervisor节点下载并解压缩Storm

4)修改nimbussupervisor节点的配置文件(storm.yaml

5)使用storm脚本启动守护进程(包括nimbussupervisorui

在自己的win2008服务器上安装如下三台虚拟机(普通PC机上也行):

 

cluster01

用户名 / 密码:nimbus / nimbus

ip192.168.170.128

cluster02

用户名 / 密码:zookeeper / zookeeper

ip192.168.170.129

cluster03

用户名 / 密码:supervisor / supervisor

ip192.168.170.130

此三台虚拟机分别用作Storm集群中的nimbus节点、Zookeeper集群、supervisor节点,因此后面说的在nimbus节点上的操作实际上就是在cluster01这台虚拟机上进行操作,其他类推。

1、搭建Zookeeper集群

   参考上述2.1节,在cluster02虚拟机安装Zookeeper集群。

2、安装JRE

  

3、下载并解压Stormnimbussupervisor节点

   采用Storm0.9.0及以上

4、修改nimbussupervisor节点的配置文件(storm.yaml

   Storm的配置文件位于storm主目录下的conf/storm.yaml,有四处强制需要指定,分别是:

①storm.zookeeper.servers:指定zookeeper集群中的主机列表,本例中zookeeper集群只有一台主机,配置如下:

storm.zookeeper.servers:

-  “192.168.170.129”

②storm.local.dir: nimbussupervisor进程需要一个本地磁盘上的目录去存储一些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进程(4worker、此处涉及到Storm中的并行化机制)。

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

注:nimbus节点和supervisor节点上的storm.yaml均需要配置。

使用storm脚本启动守护进程(包括nimbussupervisorui

 

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后台程序,并放到后台执行

3ui:在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.MyTopologymain方法是Topology的入口,arg1arg2arg3org.me.MyTopology执行时需要传入的参数。

停止Storm Topology

storm kill {toponame}

其中,{toponame}Topology提交到Storm集群时指定的Topology任务名称。

 

0
0
分享到:
评论

相关推荐

    storm1.1.0版本单节点部署

    Apache Storm 是一个开源的分布式实时计算系统,它能够处理大规模的数据流并进行实时分析。在单节点部署中,所有的 Storm 组件,包括 Nimbus、Supervisor 和 UI,都将运行在同一台机器上,适合于开发环境或简单测试...

    Twitter storm

    这意味着Storm能够在数据产生的瞬间立即进行处理,而不是像Hadoop那样等待整个数据集准备好后再进行批处理。 #### Storm 架构概述 Storm 的架构主要包括三个组件:Nimbus、Zookeeper 和 Supervisor。 - **Nimbus**...

    storm0.9.0 linux安装包

    Storm 0.9.0 是一个流行的开源分布式实时计算系统,由Twitter开发并维护,它在大数据处理领域具有广泛的应用...在实际应用中,考虑到社区支持和性能优化,建议使用更现代的Storm版本或考虑迁移至其他更新的流处理框架。

    大数据处理框架选型分析.docx

    随着大数据处理框架的发展,除了最初的Hadoop MapReduce,出现了许多其他选择,如Spark、Flink、Storm等。Apache Spark以其内存计算的优势,提供更快的迭代计算和流处理能力,适合交互式分析和实时计算。Apache ...

    Storm实战构建大数据实时计算

    Apache Storm作为一款成熟的实时数据流处理框架,在大数据领域有着广泛的应用前景。通过深入理解Storm的工作原理和开发流程,可以帮助我们更好地利用其强大的功能解决实际问题。无论是对于数据工程师还是开发人员来...

    Storm+Zookeeper 流模式大数据处理部署手册

    Apache Storm作为一款强大的实时计算框架,能够处理大规模流式数据,而Zookeeper则是Apache开源项目中的协调服务,它在分布式环境中提供配置管理、命名服务、集群同步等功能。本方案结合统信UOS操作系统,详细介绍...

    storm链接kafka时需要的jar包

    在构建Storm与Kafka的集成应用时,为了确保数据流处理的正常运行,我们需要准备一系列的JAR包。以下是对这些关键组件的详细说明: 1. **Kafka JAR包**: Kafka是Apache开发的一个分布式流处理平台,用于创建实时的...

    基于Storm的大数据挖掘技术.zip

    大数据挖掘技术在近年来已经成为了信息技术领域的重要研究方向,而Apache Storm作为一个实时计算框架,在这个领域中扮演着至关重要的角色。本篇主要探讨基于Storm的大数据挖掘技术,包括其核心概念、工作原理以及在...

    storm集群的搭建-java示例代码.zip

    在IT领域,Apache Storm是一个分布式实时计算系统,用于处理大规模数据流。Storm集群的搭建是大数据处理中的一个...通过不断实践和学习,我们可以熟练地利用Storm处理大规模实时数据流,为业务提供强大的实时分析能力。

    简单的storm例子.rar

    Apache Storm是一个开源的分布式实时计算系统,用于处理无界数据流,具有高吞吐量和容错性。 【描述】"简单的storm例子.rar"表明这个压缩包可能包含了演示如何在Storm上构建和运行基本数据流处理程序的源代码和配置...

    Storm本地模式WordCount亲测可用

    1. **Topology(拓扑)**:是Storm处理数据流的逻辑结构,由Spouts(数据源)和Bolts(处理逻辑)组成。 2. **Spout(喷口)**:是拓扑中的数据源,负责产生数据流。在这个例子中,我们可以创建一个简单的Spout来...

    基于Storm流计算天猫双十一作战室项目实战.docx

    《基于Storm流计算天猫双十一作战室项目实战》的课程涵盖了多个关键技术和实战环节,旨在让学员深入了解并熟练应用Storm流计算框架,同时强化其在大数据处理领域的综合能力。以下是课程内容的详细阐述: 1. **Storm...

    storm job 提交集群测试 注意事项

    与Hadoop等批处理系统不同,Storm处理的是连续不断的数据流,适合实时分析、在线学习等场景。 2. **Job提交流程** - **编写源码**:首先,你需要使用Java或Clojure编写Storm拓扑结构(Topology),定义数据流的...

    大数据与云计算教程课件 优质大数据课程 31.Strom(共14页).pptx

    【大数据与云计算教程课件】中的“31.Strom”部分详细介绍了实时数据处理框架Storm。Storm是由Twitter开源的,旨在解决随着互联网急剧发展而产生的海量数据实时处理需求。相较于传统的Hadoop,Storm在实时计算方面...

    大数据之分析系统框架各功能模块建设要求

    - **定义**: 一些框架如Storm能够实现实时数据处理,满足对实时性有较高要求的应用场景。 - **意义**: 对于需要及时响应的数据处理任务,如实时监控、流数据分析等,提供了技术支持。 **1.4 安全性与容错性** - **...

    jpmml-storm:在 Apache Storm 中使用 JPMML 模型

    通过JPMML,你可以将各种机器学习库(如Weka、R、Python的scikit-learn等)训练出的模型转换为PMML,然后在任何支持PMML的平台上执行,如Java应用、Web服务、大数据处理框架等。 **Apache Storm** Apache Storm是一...

    my-own-storm:学习Storm

    例如,Twitter自身就使用Storm处理其平台上的实时信息流,提供实时趋势分析。 8. **最佳实践** 开发Storm应用时,需要注意优化数据传输效率,合理选择Stream Grouping策略,以及充分考虑容错和资源调度。同时,...

    jzmq-master.zip

    通过编译和安装jzmq,我们可以确保Storm能够正确地与ZeroMQ进行交互,从而实现高效的实时数据处理。 要搭建Storm环境,我们需要完成以下步骤: 1. **环境准备**:确保你的系统已安装Java开发环境(JDK),并设置...

    【04 张光辉】Jstorm-_Flink 迁移实践

    4. 实时性要求:实时数据处理是流计算框架的主要应用之一。在迁移过程中,开发者需要评估Flink是否能更好满足实时性的需求。 5. 生态系统和社区支持:了解Flink的生态系统和社区活跃度对于未来系统的维护和升级非常...

Global site tag (gtag.js) - Google Analytics