标签 ‘ Storm

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) 一文。

阅读全文

Apache Storm 官方文档 —— 配置开发环境

原文链接    译者:魏勇

本文详细讲解了配置 Storm 开发环境的相关信息。简单地说,配置过程包含以下几个步骤:

  1. 下载 Storm 发行版,将其解压缩并复制到你的 PATH 环境变量的 bin 目录中(也可以根据需要自定义安装目录 —— 译者注);
  2. 如果需要在远程集群中运行拓扑,则需要在 ~/.storm/storm.yaml 文件中配置好集群的相关信息。

阅读全文

Apache Storm 官方文档 —— 使用 Maven 构建 Storm 应用

原文链接    译者:魏勇

在开发拓扑的时候,你需要在 classpath 中包含 Storm 的相关 jar 包。你可以将各个 jar 包直接包含到你的项目的 classpath 中,也可以使用 Maven 将 Storm 添加到依赖项中。Storm 已经集成到 Maven 的中心仓库中。你可以在项目的 pom.xml 中添加以下依赖来将 Storm 包含进项目中:

阅读全文

return top