初识Storm

从零开始学Storm
学习自apache_storm_tutorial

Storm简介

什么是Storm
Storm是一个免费开源的分布式实时计算系统,主要使用Clojure与Java语言编写。
Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。

Apache Storm vs Hadoop
基本上Storm和Hadoop都是用于分析大数据。在某些方面有所不同,两者互补。
Storm的优势在于实时计算,而Hadoop在批量处理上更有优势。
这里写图片描述


Strom核心概念

核心概念
Storm从一端读取实时数据的原始流,通过一系列有序的的小处理单元传递,并在另一端输出 已处理/有用的 数据。
下图描述了Apache Storm的核心概念。
这里写图片描述
根据下面图表进一步认识上述组件:
这里写图片描述

Spout:也被形象的称为水龙头(数据源)。Bolt: 也被形象称为转接头(数据处理单元).

示例:“Twitter Analysis
这里写图片描述

拓扑(Topology)
拓扑(Topology)是Storm中运行的一个实时应用程序,因为各个组件间的消息流动而形成逻辑上的拓扑结构。一个拓扑就是一个有向图的计算。
要使用Storm做实时计算,首先需要创建拓扑。可以通过把实时应用程序的运行逻辑打成jar包后提交到Storm的拓扑。

工作进程(Worker)
Worker是Spout和Bolt中运行具体处理逻辑的进程。拓扑跨一个或多个Worker进程执行。Storm尝试在所有的Worker上均匀的分布任务。

执行线程(Executor)
在Strom0.8之后,Task不再与物理线程对应,同一个Spout或Bolt的Task可能会共享一个物理线程,这个线程称之为Executor运行期间可修改,rebalance.

Storm术语“并行度(parallelism)”专门用于描述所谓的并行度暗示,表示一个组件的执行器(线程)的初始数量

任务(Task)
简单来说,任务是每一个Spouts或Bolts的实例,它将由执行线程(executor)执行处理。运行期间不可修改.

扫描二维码关注公众号,回复: 3630534 查看本文章

流分组(Stream grouping)
流分组,是拓扑定义中的一部分,为每个Bolt指定应该接收哪个流作为输入。流分组定义了流/元组如何在Bolt的任务之间进行分发。常用流分组有:

  • 随机分组(Shuffle Grouping):是最常用的流分组方式,它随机分发元组到Bolt上的任务,这样能保证每个任务得到相同的元组。
  • 字段分组(Fileds Grouping):根据指定字段对流进行分组。指定字段值相同的元组由同一个Bolt处理。
  • 广播分组(All Grouping):流被发送到所有的Bolt任务中。每一个Bolt都会收到一个元组的副本。
  • 全局分组(Global Grouping): 是指全部流都发送到Bolt的同一个任务中(具有最小值task_id的bolt(汇集))。
  • 无分组:即不关心如何分组,这种方式和随机分组是一样的效果,有点不同的是Strom会把这个Bolt放到Bolt订阅者的同一个线程中执行
  • 直接分组(Direct Grouping):一种特殊的分组。这种方式意味着元组的生产者决定元组消费者的接收元组任务。直接分组只能在已经声明为直接流(Direct Stream)中使用
    • 自定义分组:必须实现CustomStreamGrouping,Serializable接口

集群架构

Storm的一大亮点是:它是一个容错,快速,没有“单点故障”(SPOF)分布式应用程序。我们可以根据需要在多个系统中安装Apache Storm,以增加应用程序的容量。
下图描述了集群设计。
这里写图片描述

Apache Storm有两种类型的节点,

  • 主控节点(Master Node)

  • 主控节点只有一个。

  • 主控节点运行在一个称为Nimbus的守护进程。

  • Nimbus的主要工作是运行Storm拓扑、分析拓扑并收集要执行的任务。然后,它将任务分配给可用的supervisor。

  • 工作节点(Worker Node)

  • 工作节点有多个。

  • 每个工作节点工作运行在一个称为Supervisor的守护进程。

  • Supervisor将任务委派给工作进程。

ZooKeeper
Nimbus是无状态的,所以它依赖于ZooKeeper来监视工作节点的状态。ZooKeeper的帮助Supervisor与Nimbus交互。它负责维持Nimbus,Supervisor的状态。

猜你喜欢

转载自blog.csdn.net/it_freshman/article/details/81946115