初识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)”专门用于描述所谓的并行度暗示,表示一个组件的执行器(线程)的初始数量

例:
重新配置 topology "mytopology" 以使用 5 个 worker 进程,
该 spout "blue-spout" 要使用 3 个 executors(执行器)并且
该 bolt "yellow-bolt" 要使用 10 executors(执行器).
$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10

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

流分组(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的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值