storm ’ 目录归档

理解Storm的内部消息缓冲机制

原文链接 作者:Michael G. Noll  译者:lendo

这篇文章是Apache Kafka的作者之一Michael G. Noll写的,他的博客地址在[这里]

优化Storm计算拓扑性能的过程有助于我们理解Storm内部消息队列的配置和使用,在这篇简短的文章中,我将向大家解释并说明Storm(0.8或0.9版本)的一个工作进程(worker process)和与其相关的多个执行器线程是如何完成内部通信的。

阅读全文

Yahoo的流计算引擎基准测试

原文链接  译者:andy huang

 Yahoo的流计算引擎对比测试

(雅虎Storm团队排名不分先后 Sanket ChintapalliDerek DagitBobby EvansReza FarivarTom Graves, Mark Holderbaugh, Zhuo LiuKyle NusbaumKishorkumar PatilBoyang Jerry Peng and Paul Poulosky

免责声明:2015年12月17日的数据,数据团队已经给我们指出,我们不小心在Flink基准测试中留下的一些调试代码。 所以Flink基准测试应该不能直接与Storm和Spark比较。 我们在重新运行和重新发布报告时已经解决了这个问题。

阅读全文

Apache Storm 官方文档中文版

原文链接    译者:魏勇

About

本项目是 Apache Storm 官方文档的中文翻译版,致力于为有实时流计算项目需求和对 Apache Storm 感兴趣的同学提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

虽然 Storm 的正式推出已经有好几个年头了,发行版也已经到了 1.0.x,但是目前网络上靠谱的学习资料仍然不多,很多比较有价值的资料都过时了(甚至官方网站自己的资料都没有及时更新,这大概也是发展太快的社区的通病),而较新的资料大多比较零碎,在关键内容的描述上也有些模棱两可,给初学者带来了很大的困扰。本人自己在初学 Storm 的阶段就非常痛苦,一直想有一份较系统、实用的资源来方便学习。最近借着整理工作的机会,就下定决心通过官方文档的翻译梳理出 Storm 的技术路线,于是就有了这个翻译项目。非常感谢并发编程网对本项目的支持,由于本人水平有限,翻译中仍然存在不少问题,还请大家不吝斧正。如果对本项目有任何问题,欢迎在评论中或者本项目的 Github 页面中(https://github.com/weyo/Storm-Documents)提出,另外也可以直接给本人发邮件(ivicoco at gmail.com),谢谢。

阅读全文

Apache Storm 官方文档 —— 内部技术实现

原文链接    译者:魏勇

这部分的 wiki 是为了说明 Storm 是怎样实现的。在阅读本章之前你需要先了解怎样使用 Storm。

阅读全文

Apache Storm 官方文档 —— Ack 框架的实现

原文链接    译者:魏勇

Storm 的 acker 使用哈希校验和来跟踪每个 tuple 树的完成情况:每个 tuple 在被发送出的时候,它的值会与校验和进行异或运算,然后在 tuple 被 ack 的时候这个值又会再次与校验和进行异或运算。这样,一旦所有的 tuple 都被成功 ack,校验和就会变为 0(随机生成的校验和为 0 的概率极小,可以忽略不计)。

阅读全文

Apache Storm 官方文档 —— 源码组织结构

原文链接    译者:魏勇

Strom 的代码有三个层次:

第一,Storm 在一开始就是按照兼容多语言的目的来设计的。Nimbus 是一个 Thrift 服务,拓扑也被定义为 Thrift 架构。Thrift 的使用使得 Storm 可以用于任何一种语言。

第二,所有的 Storm 接口都设计为 Java 接口。所以,尽管 Storm 核心代码中有大量的 Clojure 实现,所有的访问都必须经过 Java API。这就意味着 Storm 的每个特性都可以通过 Java 来实现。

第三,Storm 的实现中大量使用了 Clojure。可以说,Storm 的代码结构大概是一半的 Java 代码加上一半的 Clojure 代码。但是由于 Clojure 更具有表现力,所以实际上 Storm 的核心逻辑大多是采用 Clojure 来实现的。

阅读全文

Apache Storm 官方文档 —— 多语言接口协议

原文链接    译者:魏勇

本文描述了 Storm (0.7.1 版本以上)的多语言接口协议。

阅读全文

Apache Storm 官方文档 —— 定义 Storm 的非 JVM 语言 DSL

原文链接    译者:魏勇

实现非 JVM 语言 DSL(Domain Specific Language,领域专用语言)应该从 storm-core/src/storm.thrift 文件开始。由于 Storm 拓扑是 Thrift 结构,而且 Nimbus 是一个 Thrift 后台进程,你可以以任意语言创建并提交拓扑。

阅读全文

Apache Storm 官方文档 —— 使用非 JVM 语言开发

原文链接    译者:魏勇

  • 两个部分:创建拓扑,以及使用其他语言实现 spouts 与 bolts

阅读全文

Apache Storm 官方文档 —— Metrics

原文链接    译者:魏勇

Storm 提供了一个可以获取整个拓扑中所有的统计信息的度量接口。Storm 内部通过该接口可以跟踪各类统计数字:executor 和 acker 的数量、每个 bolt 的平均处理时延、worker 使用的最大堆容量等等,这些信息都可以在 Nimbus 的 UI 界面中看到。

阅读全文

Apache Storm 官方文档 —— Hooks

原文链接    译者:魏勇

Storm 提供了一种 hooks 机制,可以实现在 Storm 的各种事件流中运行自定义代码的功能。可以通过继承 BaseTaskHook类来创建 hook,还可以根据需要在继承的子类中覆写适当的方法来跟踪相关事件。

阅读全文

Apache Storm 官方文档 —— Storm 与 Kestrel

原文链接    译者:魏勇

本文说明了如何使用 Storm 从 Kestrel 集群中消费数据。

阅读全文

Apache Storm 官方文档 —— 分布式 RPC

原文链接    译者:魏勇

分布式 RPC(DRPC)的设计目标是充分利用 Storm 的计算能力实现高密度的并行实时计算。Storm 接收若干个函数参数作为输入流,然后通过 DRPC 输出这些函数调用的结果。严格来说,DRPC 并不能算作是 Storm 的一个特性,因为它只是一种基于 Storm 原语 (Stream、Spout、Bolt、Topology) 实现的计算模式。虽然可以将 DRPC 从 Storm 中打包出来作为一个独立的库,但是与 Storm 集成在一起显然更有用。

阅读全文

Apache Storm 官方文档 —— 常用模式

原文链接    译者:魏勇

本文列出了 Storm 拓扑中使用的一些常见模式,包括:

  1. 数据流的 join
  2. 批处理
  3. BasicBolt
  4. 内存缓存与域分组的结合
  5. Top N 流式计算
  6. TimeCacheMap
  7. CoordinatedBolt 与 KeyedFairBolt

阅读全文

Apache Storm 官方文档 —— 序列化

原文链接    译者:魏勇

本文阐述了 Storm 0.6.0 以上版本的序列化机制。在低于 0.6.0 版本的 Storm 中使用了另一种序列化系统,详细信息可以参考 Serialization (prior to 0.6.0) 一文。

阅读全文

return top