Twitter Storm(
https://github.com/nathanmarz/storm)是一个分布式实时计算系统,作者使用clojure和java来编写系统;因此storm默认支持使用clojure和java来编写计算任务。但在系统设计和实现上,作者考虑到了各种跨语言的场景,因此也提供了使用其他非JVM语言编写storm任务的机制。
使用其他语言,如c++,python来编写storm计算任务的主要方法可以参见Storm wiki上的说明(
https://github.com/nathanmarz/storm/wiki/Using-non-JVM-languages-with-Storm)。这篇wiki说的有点饶,据我理解其基本流程如下:
- 使用A语言实现多语言协议 https://github.com/nathanmarz/storm/wiki/Multilang-protocol; 其实是实现一些消息收发和解析的方法,可以参考官方已经实现的python版本和ruby版本;
- 使用A语言编写spout和bolt,实现计算逻辑;(如一些特定的语言可能得预先在服务器上装环境,或者能将运行时所需的lib都打包到可执行文件中)
- 使用A语言实现topology (参考storm.thrift中的topology设定); spout和bolt可以和topology写到一个文件里
- 使用storm shell(这个命令在shell command wiki里都没详细介绍)将资源文件和代码文件打包并提交,如对于python语言,
storm shell resources/ python topology.py arg1 arg2
这条命令首先将 resources/下的文件打成jar包传到nimubs服务器上,然后再调用:
python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location} 命令启动topology。
因此你需要在topology实现topo的组装和提交,即组装一个StormTopology,并且使用这个thrift函数来提交topology到nimbus:
void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology)
throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
分享到:
相关推荐
### Twitter Storm:实时计算系统详解 #### 背景与定义 Twitter Storm 是一款由Apache基金会维护的开源分布式实时计算系统。它最初由BackType公司开发,并于2011年开源,随后被Twitter收购并进一步发展。Storm 的...
标题"基于Java的实例源码-开放实时数据处理平台 Twitter Storm.zip"揭示了我们讨论的主题是Twitter Storm,一个用于实时数据处理的开源平台,其核心实现是用Java编程语言编写的。这个压缩包包含了Nathan Marz开发的...
4. **拓扑结构**:在Storm中,数据处理逻辑被组织成拓扑结构(topology),由多个“bolt”(处理组件)和“spout”(数据源)组成。Spouts负责生成数据流,bolts则对数据进行处理、聚合或转发。 5. **容错与持久化*...
【描述】"基于Java的开放实时数据处理平台Twitter Storm"强调了其编程语言基础和实时处理能力。Java作为企业级应用的首选语言,为Storm提供了强大的跨平台能力和丰富的库支持。Storm的设计使得它可以处理无界数据流...
在Storm的架构中,数据流被分成多个** bolts **(处理组件),这些组件通过** spouts **(数据源)接收数据,然后进行一系列处理。Bolts可以执行复杂的业务逻辑,如过滤、聚合、Join操作等,而Spouts则负责从外部...
1. 分布式:它可以在多台机器上分布式执行。 2. 可靠性:能够保证每个消息至少被处理一次。 3. 容错性:当工作节点失败时,任务可以自动重新分配。 4. 实时性:可以对流式数据进行实时处理。 5. 易于扩展:可以灵活...
7. **编程语言**:Twitter Storm支持多种编程语言,包括Java、Clojure和Python,这使得开发人员可以根据自己的熟悉程度选择合适的语言进行开发。 8. **社区与生态**:作为开源项目,Twitter Storm拥有活跃的社区,...
6. 编程语言无关:Storm支持使用任何编程语言来定义拓扑和处理组件,这为不同背景的开发人员提供了便利。 在架构上,Storm使用ZooKeeper进行集群协调,支持分布式消息队列和数据库技术。Storm中的Topology负责消耗...
未来,Storm将进一步优化其性能和可靠性,增强对更多编程语言的支持,并与其他大数据生态系统更好地集成。 #### 二、Storm安装 **2.1 版本选择** 在安装之前,应先了解所需的Storm版本及其兼容性。通常建议使用...
- Storm 提供了多语言支持,开发者可以选择适合项目的编程语言。 - **3.10.1 支持的非 Java 语言** - 包括 Python、Ruby、Go 等多种语言。 - **3.10.2 对 Storm 使用非 Java 语言** - 使用非 Java 语言编写组件时...
Apache Storm的工作原理基于一个由多个节点组成的集群,其中包含Supervisor、Nimbus和Worker节点。Supervisor负责管理物理机器上的worker进程,Nimbus是主控节点,负责任务调度和分配,而Worker则执行实际的计算任务...
1. Spout:Spout是Apache Storm的数据输入组件,负责从外部数据源(如Kafka、Twitter或数据库)读取数据并生成数据流。在源码中,`backtype.storm.spout`包包含了各种Spout的实现,如`KafkaSpout`用于从Kafka消费...
6. 编程语言无关:Storm支持使用任何编程语言定义拓扑和处理组件,目前主要使用Java和Clojure,其中Java用于定义骨架,Clojure编写核心逻辑。Python也是Storm的常用语言之一。 Storm的架构设计允许它处理消息和更新...
- **Spout**:数据源,负责从外部源(如Kafka、Twitter等)拉取或接收数据,并将数据发布到Storm的各个工作节点。 - **Bolt**:处理组件,执行数据清洗、聚合、过滤等操作。 2. **实时处理**:Storm的强项在于...
- 多语言支持:开发者可以用Java、Python、Ruby等多种语言编写Storm应用。 - 快速部署:快速启动和运行,使得开发和测试流程更加高效。 - 开源免费:遵循Apache许可证,用户可以自由使用和修改源代码。 2. Storm...
Storm是一个开源的分布式实时计算系统,起源于Twitter的内部项目,后来在2011年开源,极大地推动了实时流处理的发展。它的主要特点是编程模型简单、可扩展、高可靠性和高容错性。Storm在实时分析、在线机器学习、...
5. **多语言支持**:Storm支持Clojure、Java、Ruby、Python等编程语言,方便开发者根据需求选择合适的工具。 Storm的编程模型简单,借鉴了MapReduce的思想,使得实时处理变得更加容易。Spout和Bolt是核心组件,其中...
第一部分介绍了Storm的基础知识,包括Storm诞生之前的数据处理背景,Storm的关键特性,如低延迟、容错和水平可扩展性,以及Storm的集群模式,开发者模式、单机模式和多机模式的介绍。此外,书中还涉及到了Storm集群...