Storm基础:基本概念
2017-03-06 23:35
267 查看
Apache Storm是一个免费开源的分布式实时计算系统。Storm能够轻松可靠地处理无界的数据流,就像Hadoop对数据进行批处理。Storm主要使用Clojure与Java语言编写,最初是由Nathan Marz带领BackType公司的团队创建,在Backtype公司被Twitter公司收购后开源。2013年9月,Apache基金会开始接管并孵化Storm项目。
Storm能用到很多场景中,包括:实时分析、在线机器学习、连续计算、分布式RPC、ETL等。
Storm中的基本概念如下:
Topology
一个Topology就是一个计算节点所组成的图。Topology里面的每个处理节点都包含处理逻辑, 而节点之间的连接则表示数据流动的方向。
Stream
Stream是Storm里面的关键抽象。一个Stream是一个无界的Tuple序列。Tuple可以包含整形、长整型、短整型、字节、字符、双精度数、浮点数、布尔值和字节数组。用户可以定义字节的序列化器以在Tuple中使用自定义类型。
Tips:
Storm使用Tuple来作为它的数据模型。每个Tuple是一堆值,每个值有一个名字,并且每个值可以是任何类型。一个没有边界的、源源不断的、连续的Tuple序列就组成了Stream。
Spout
Spout是Topology流的来源。通常Spout会从外部数据源(队列、数据库等)读取数据,然后封装成Tuple形式,之后发送到Stream中。Spout负责从数据源拉取数据,相当于整个系统的生产者。
Bolt
Bolt负责消费数据并将tuple发送给下一个计算单元。Bolt处理输入的Stream,并产生新的输出Stream。Bolt可以执行过滤、函数操作、Join、操作数据库等任何操作。
Tips:
Spout 发射数据; Bolt 处理数据。可以实现Spout和Bolt对应的接口以处理你的应用的逻辑。Spout和Bolt所组成的网络会被打包成Topology, 可以把Topology提交给Storm的集群来运行。
Stream Grouping
Stream Grouping用于在Bolt的任务中定义流应该如何分组。Storm总的流分组有8种:Shuffle grouping、Fields grouping、Partial Key grouping、All grouping、Global grouping、None grouping、Direct grouping、Local or shuffle grouping。
Task
每个Spout或者Bolt在集群执行许多任务。每个任务对应一个线程的执行,流分组定义如何从一个任务集到另一个任务集发送Tuple。可通过TopologyBuilder类的setSpout()和setBolt方法来设置每个Spout或者Bolt的并行度。
Worker
Topology跨一个或多个Worker节点的进程执行。每个Worker节点的进程是一个物理的JVM和Topology执行所有任务的一个子集。
相关文章推荐
- VF语言基础(一)数据库的基本概念
- osworkflow基础入门部分汇总(基本概念,包用途分析及代码片断,表结构分析,主要优势,核心概念)
- C/C++基础知识:函数指针和指针函数的基本概念
- C#基础知识—基本概念
- FreeMaker基础-基本概念
- 数据库技术基础之基本概念
- Java基础:需掌握的30个基本概念
- 线程基本概念(基础)
- MFC 基础(VC环境,Windows基本概念)
- Java基础:初学入门需掌握的30个基本概念
- MS SQL入门基础:数据转换服务基本概念
- MS SQL入门基础:数据转换服务基本概念
- c++基础:C++的一些基本概念
- JSP基础中的基本概念
- [陆续添加]计算机网络最最基础的基本概念
- 数据库数据基础--基本概念
- Java初学者需掌握的30个基本概念-Java基础-Java-编程开发
- WPF基础:基本概念和功能
- Web开发基础--一些基本概念
- Subversion基础:概念、安装、配置和基本操作