Apache Storm 官方文档 —— 配置开发环境
本文详细讲解了配置 Storm 开发环境的相关信息。简单地说,配置过程包含以下几个步骤:
- 下载 Storm 发行版,将其解压缩并复制到你的
PATH
环境变量的bin
目录中(也可以根据需要自定义安装目录 —— 译者注); - 如果需要在远程集群中运行拓扑,则需要在
~/.storm/storm.yaml
文件中配置好集群的相关信息。
上述几步的详细内容如下。
什么是开发环境?
Storm 包含两种操作模式:本地模式与远程模式(即集群模式 —— 译者注)。在本地模式下,你可以在本地机器上的一个进程中完成所有的开发、测试拓扑的工作。而在远程模式下,为了运行拓扑,你需要先向服务器集群提交该拓扑。
Storm 的开发环境已经为你准备好了一切,因此,你可以在本地模式下完成开发、测试拓扑的工作,将拓扑打包并提交到远程服务器,并在远程服务器集群上运行或者终止拓扑。
我们再来回顾一下本地机器与远程集群之间的关系。Storm 集群是由一个称为 “Nimbus” 的主节点管理的。本地机器通过与 Nimbus 通信来提交代码(代码已经打包为 jar 格式),这样代码文件中包含的拓扑就可以在集群中运行。Nimbus 会小心地维护着代码在集群中的分布式结构,并为待运行的拓扑分配 worker。本地机器可以使用一个称为 storm
的命令行客户端来与 Nimbus 进行通信。不过,storm
客户端仅用于远程模式,不能用于本地模式下开发、测试拓扑。
在本地机器上安装 Storm
如果要从本地机器上直接向远程集群提交拓扑,你需要在本地机器上安装 Storm 程序。本地的 Storm 程序可以提供与远程集群交互的 storm
客户端。在安装本地 Storm 之前,你需要从这里下载一个 Storm 安装程序并将其解压到你的电脑的某个位置。然后将 Storm 的 bin/
目录添加到你的 PATH
环境变量中,确保 bin/storm
脚本可以直接运行。
在本地机器上安装的 Storm 仅能用于与远程集群的交互。对于本地模式下的开发、测试拓扑,推荐使用 Maven 来将 Storm 添加到你的项目的开发依赖中。关于 Maven 的使用请参考此文。
在远程集群上开始/终止拓扑的运行
在上一步中我们已经安装好了本地的 storm
客户端。接下来就需要告诉客户端需要连接哪一个 Storm 集群。这可以通过在 ~/.storm/storm.yaml
文件中填写 Storm 集群的主节点的 host 地址来实现:
nimbus.host: "123.45.678.890"
另外,如果你在 AWS 上应用 storm-deploy 项目来配置 Storm 集群,它会自动配置好你的 ~/.storm/storm.yaml
文件。你也可以使用 attach
命令手动配置附属的 Storm 集群(或者在多个集群之间切换):
lein run :deploy --attach --name mystormcluster
更多内容请参考 storm-deploy 项目的 wiki。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Storm 官方文档 —— 常用模式
本文列出了 Storm 拓扑中使用的一些常见模式,包括: 数据流的 join 批处理 BasicBolt 内存缓存与域分组的结合 Top N 流式计算 TimeCacheMap CoordinatedBolt 与 KeyedFairBolt Joins 数据流的 join 一般指的是通过共有的域来聚合两个或多个数据流的过程。与一般的数据库中 join 操作要求有限的输入与清晰的语义不同,数据流 join 的输入往往是无限的数据集,而且并不具备明确的语义。 join 的类型一般是由应用的需求决定的。有些应用需要将两个流在某个固定时间内的所有 tuple 进行 join,另外一些应用却可能要求对每个 join 域的 join 操作过程的两侧只保留一个 tuple,而其他的应用也许还有一些其他需求。不过这些 join 类型一般都会有一个基本的模式,那就是将多个输入流进行分区。Storm 可以很容易地使用域分组的方法将多个输入流聚集到一个联结 bolt 中,比如下面这样: builder.setBolt("join", new MyJoiner(), parallelism) .fieldsG...
- 下一篇
Apache Storm 官方文档 —— 序列化
本文阐述了 Storm 0.6.0 以上版本的序列化机制。在低于 0.6.0 版本的 Storm 中使用了另一种序列化系统,详细信息可以参考Serialization (prior to 0.6.0)一文。 Storm 中的 tuple 可以包含任何类型的对象。由于 Storm 是一个分布式系统,所以在不同的任务之间传递消息时 Storm 必须知道怎样序列化、反序列化消息对象。 Storm 使用Kryo对对象进行序列化。Kryo 是一个生成小序列的灵活、快速的序列化库。 Storm 本身支持基础类型、字符串、字节数组、ArrayList、HashMap、HashSet 以及 Clojure 的集合类型的序列化。如果你需要在 tuple 中使用其他的对象类型,你就需要注册一个自定义的序列化器。 动态类型 在 tuple 中没有对各个域(field)的直接类型声明。你需要将对象放入对应的域中,然后 Storm 可以动态地实现对象的序列化。在学习序列化接口之前,我们先来了解一下为什么 Storm 的 tuple 是动态类型化的。 为 tuple 的 fields 增加静态类型会大幅增加 St...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题