Apache storm 是一个由twitter开源的大数据处理系统,与其他系统不同的是,storm旨在用于分布式实时处理并且与语言无关。笔者所认知的storm使用场景诸如 实时日志分析、网站用户行为实时分析、实时计算等,目前很多公司也都把storm作为自己的大数据架构的一部分,来实现一些实时业务的处理。
相信大家都和我有一样的认知,那就是现在的技术都是项目驱动模式,没有最好的技术,只有最适合自己项目的技术。下面先跟大家分享一下我对storm的一些简单了解:
storm的优点:
1.简单的编程模型,类似于MapReduce降低了并行批处理的复杂性,storm降低了进行实时处理的复杂性。
2.支持各种语言,你可以在storm上使用Java、Ruby、Clojure和Python,如果想增加一个新的语言支持,你只需要实现一个简单的storm通信协议即可。
3.容错性,storm会管理工作进程和节点的故障。
4.水平拓展,计算是在多个线程,进程和服务器之间并行进行的。
5.可靠的消息处理,storm保证每个消息至少得到一次完整的处理,任务失败时,storm会尝试从消息源重新发射。
6.快速,系统的设计保证了消息能够快得到快速处理,storm使用的ZeroMQ作为其底层的消息队列。
7.本地模式,这个对开发者来说无疑是方便了很多,可以在本地模拟集群环境进行开发和测试。
storm目前存在的问题:
1.目前的开源版本中只有单节点的Nimbus,挂掉之后只能自动去重启,对系统来说有一定的风险,可以考虑双节点nimbus布局。
2.Storm的一部分核心代码是由Clojure编写,clojure是一个在JVM上运行的动态函数式编程语言,优势在于流程计算,虽然性能上提高不少但是同时也提升了维护成本。
介绍说了一大堆,下面就简单的搭建一个storm的集群环境:
准备环境: 至少三台Linux server(笔者用了5台 cloud server for linux redhat edition)
集群搭建:
第一步:安装JDK/JRE
第二步:安装 zookeeper ,可以参考我的另一篇博文:
http://bigcat2013.iteye.com/blog/2175538
第三步:下载apache storm : http://apache.arvixe.com/storm/
之前的项目用过0.9.1版的,现在由于需要用到kafka,所以选择了最新版0.9.3
第四步: 把下载好的压缩包上传到服务器(可以通过WinSCP等)
第五步:使用"tar -xzvf apache-storm-0.9.3.tar.gz" 解压压缩包
解压后的目录结构:
第六步:修改storm配置文件(/conf/storm.yaml)
基本的需要配置 storm.zookeeper.servers、nimbus.host、storm.local.dir、ui.port、supervisor.slots.ports几个属性,这里需要注意的是nimbus不需要配置supervisor.slots.ports属性,supervisor不需要配置ui.port属性,因为nimbus是主节点,有ui没有worker,supervisor是工作节点,没有ui只有worker:
common:
nimbus:
supervisor(每个supervisor的worker数目可以通过增减slots的数量调整):
注:配置信息不要顶格写,不然启动的时候会报错找不到属性值。
第七步:通过”scp -r“把配置好的storm目录copy到其他的server上(注:如果你当前的server配置为nimbus,其他的server就都按照上述的supervisor配置方法配置storm.yaml)
第八步:在集群的服务器上分别创建storm的本地目录(对应storm.yaml中的storm.local.dir配置)
第九步:启动zookeeper集群,然后启动storm集群
启动storm nimbus : sudo nohup ./bin/storm nimbus > /dev/null &
启动storm UI :sudo nohup ./bin/storm ui > /dev/null &
启动supervisor: sudo nohup ./bin/storm supervisor > /dev/null &
通过配置的nimbus地址+ui.port的属性值可以访问storm的UI,监测storm的运行状态。
按照上述简单的配置之后,storm集群就可以搭建起来了,读者可以根据自己的项目需要做额外的配置,另外可以在/logback/cluster.xml中配置log4j,日志输出和自动清理规则~
相关推荐
本文将详细介绍Storm集群环境搭建的步骤,包括集群规划、前置条件、集群搭建、安装包分发、启动集群和高可用验证等方面。 一、集群规划 Storm集群环境搭建需要考虑多台服务器的规划,以确保高可用和负载均衡。在...
ApacheStorm集群搭建[整理].pdf
【Storm集群搭建】是关于构建分布式实时计算系统Storm的集群过程。Storm是一个开源的、用于处理实时数据流的计算框架,常被用于大数据处理、实时分析等场景。在Storm集群中,主要有两种类型的节点——主控节点...
Storm集群的搭建是大数据处理中的一个重要环节,尤其对于需要实时分析和处理连续数据流的应用场景,如实时日志分析、社交网络分析等。本资料包提供了一个基于Java的示例代码,将帮助我们了解如何在Java环境中配置和...
在本压缩包“storm集群搭建Java客户端测试代码.zip”中,包含了有关Apache Storm集群的搭建教程以及使用Java客户端进行测试的代码示例。Apache Storm是一个分布式实时计算系统,它允许开发者处理无界数据流,常用于...
【描述】:这份资源包含了关于Storm集群搭建的实战课程代码和配套的PPT讲解材料,是学习和掌握Apache Storm分布式流处理系统的重要参考资料。 【标签】:代码 【知识点详解】: 1. **Apache Storm**:Apache ...
本文将详细介绍如何在Linux环境下从零开始搭建一个Storm集群。 #### 二、准备阶段 在开始搭建之前,确保具备以下条件: 1. **Linux虚拟机**:至少三台虚拟机,分别作为Nimbus节点、Supervisor节点以及工作节点。 2....
本篇文章将详细解析如何进行Storm的部署,包括所需的依赖RPM包以及集群搭建步骤。 首先,Storm部署前需要准备的依赖RPM包主要包括Java开发环境(JDK)、Zookeeper、Nimbus、Supervisor和UI等组件。JDK是运行Storm的...
在搭建Storm集群时,我们需要安装Java环境,配置Zookeeper,然后部署Storm。运行示例通常会创建一个简单的拓扑,例如“WordCount”例子,它从文本源读取数据,分割单词,然后统计每个单词出现的次数。 总结来说,这...
6. **配置优化**:在搭建环境中,可能需要对Storm的配置参数进行调整,如worker数量、executor线程数、心跳间隔等,以适应不同的性能需求。 7. **监控和调试**:Storm提供了一套监控工具,包括Web UI,可以查看拓扑...
5. **本地集群搭建**:在本地机器上,你可以使用`storm local`命令快速启动一个本地模式的Storm集群,以便于调试。首先,确保已下载并安装了Storm,然后在Storm的bin目录下运行: ``` storm local ``` 这将在...
搭建Storm集群首先要搭建ZooKeeper集群,因为Storm依赖ZooKeeper进行集群管理。ZooKeeper是一个分布式应用程序协调服务,可以为分布式环境中的配置信息提供集中化的管理,保证配置信息的一致性和可靠性。在搭建Storm...
### Storm集群部署知识点 #### 一、Storm集群简介 Apache Storm 是一款开源...通过以上步骤,可以成功地搭建一个Storm集群,并进行实时数据分析处理。Storm的灵活性和强大的功能使其成为处理大量实时数据的理想选择。
2. **Apache Storm集群搭建部署**: - Apache Storm是一个开源的实时计算系统,用于处理大规模的数据流,常用于实时数据分析和处理。 - 部署Storm需要下载最新版本的Storm,同样需要JDK支持。 - 配置`storm.yaml`...
本文档主要介绍如何在多台服务器上部署一个完整的Storm集群,其中包括JDK安装、Zookeeper集群安装以及Storm集群的搭建。整个过程分为三个主要部分:Java环境(JDK)的安装、Zookeeper集群的配置以及Storm集群的具体...
描述中提到的"使用zookeeper-3.4.10.tar.gz"表明在搭建Storm集群时还依赖了ZooKeeper的3.4.10版本。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据...
- `conf/`:包含默认配置文件,用户可以在这里修改以适应自己的集群环境。 - `lib/`:存放 Storm 的依赖库文件,用于运行 Storm 服务。 - `bin/`:包含启动和管理 Storm 服务的脚本,如 `storm` 命令行工具。 - `...
综上所述,"storm DRPC简单例程"是一个关于如何在Apache Storm集群上搭建和使用DRPC服务的教程,它涵盖了实时计算、分布式调用和集群部署等多个重要概念,对于理解和实践Storm的实时处理能力具有很高的价值。...
Apache Storm是一个分布式实时计算系统,它允许...使用这个压缩包,你可以参考已有的生产环境配置,为自己的Storm集群搭建提供基础。同时,学习如何根据业务需求调整和优化这些配置,是掌握Apache Storm的关键步骤。
在描述中提到的"storm环境搭建"是一个关键步骤,这通常包括以下几个方面: 1. **系统要求**:Apache Storm可以在Linux系统上运行,所以首先需要一个兼容的Linux环境。系统应具有足够的硬件资源,如CPU、内存和磁盘...