??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
2018-11-01期 Storm组件概述

转载   JackmaSong   2018-11-02   浏览量:20


一、Storm简介

Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。

Storm 很简单,可用于任意编程语言。Apache Storm 采用 Clojure 开发。Storm 有很多应用场景,包括实时数据分析、联机学习、持续计算、分布式 RPC、ETL 等。

Hadoop(大数据分析领域无可争辩的王者)专注于批处理?这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自高度动态的来源的实时信息?为了解决这个问题,就得借助 Nathan Marz 推出的 storm(现在已经被Apache孵化)storm 不处理静态数据,但它处理连续的流数据。

彩票开奖查询 www.kbyp.net storm特点:

编程简单:开发人员只需要关注应用逻辑,而且跟Hadoop类似,Storm提供的编程原语也很简单

高性能,低延迟:可以应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景。

分布式:可以轻松应对数据量大,单机搞不定的场景

可扩展: 随着业务发展,数据量和计算量越来越大,系统可水平扩展

容错:单个节点挂了不影响应用

消息不丢失:保证消息处理

storm与hadoop的比较:

1.Storm用于实时计算,Hadoop用于离线计算。

2. Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。

3.  Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。

4.  Storm与Hadoop的编程模型相似

结构

Hadoop

Storm

主节点

JobTracker

Nimbus

从节点

TaskTracker

Supervisor

应用程序

Job

Topology

工作进程名称

Child

Worker

计算模型

Map / Reduce

Spout / Bolt

二、Storm组件


Nimbus

Storm集群的Master节点,负责分发用户代码,指派给具体的Supervisor节点上的Worker节点,去运行Topology对应的组件(Spout/Bolt)的Task。

Supervisor

Storm集群的从节点,负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。通过Storm的配置文件中的supervisor.slots.ports配置项,可以指定在一个Supervisor上最大允许多少个Slot,每个Slot通过端口号来唯一标识,一个端口号对应一个Worker进程(如该Worker进程被启动)。

Worker

运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。

Task

worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。

ZooKeeper

用来协调Nimbus和Supervisor,如果Supervisor因故障出现问题而无法运行Topology,Nimbus会第一时间感知到,并重新分配Topology到其它可用的Supervisor上运行。

三、Storm编程模型

Topology:Storm中运行的一个实时应用程序的名称。将 Spout、 Bolt整合起来的拓扑图。定义了 Spout和 Bolt的结合关系、并发数量、配置等等。

Spout:在一个topology中获取源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。

Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。

Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。

Stream:Tuple的集合。表示数据的流向。


四、可靠性

(1)、spout的可靠性

spout会记录它所发射出去的tuple,当下游任意一个bolt处理失败时spout能够重新发射该tuple。在spout的nextTuple()发送一个tuple时,为实现可靠消息处理需要给每个spout发出的tuple带上唯一ID,并将该ID作为参数传递给SpoutOutputCollector的emit()方法:collector.emit(new Values("value1","value2"), tupleID);

实际上Values extends ArrayList<Object>

保障过程中,每个bolt每收到一个tuple,都要向上游应答或报错,在tuple树上的所有bolt都确认应答,spout才会隐式调用ack()方法表明这条消息(一条完整的流)已经处理完毕,将会对编号ID的消息应答确认;处理报错、超时则会调用fail()方法。

(2)、bolt的可靠性

bolt的可靠消息处理机制包含两个步骤:

a、当发射衍生的tuple,需要锚定读入的tuple

b、当处理消息时,需要应答或报错

可以通过OutputCollector中emit()的一个重载函数锚定或tuple:collector.emit(tuple, new Values(word)); 并且需要调用一次this.collector.ack(tuple)应答。

五、概念描述

   1.拓扑(Topology):打包好的实时应用计算任务,同Hadoop的MapReduce任务相似。

   2.元组(Tuple):是Storm提供的一个轻量级的数据格式,可以用来包装你需要实际处理的数据。

   3.流(Streams):数据流(Stream)是Storm中对数据进行的抽象,它是时间上×××的tuple元组序列(无限的元组序列)?

   4.Spout(喷嘴):Storm中流的来源。Spout从外部数据源,如消息队列中读取元组数据并吐到拓扑里。

   5.Bolts:在拓扑中所有的计算逻辑都是在Bolt中实现的。

   6.任务(Tasks):每个Spout和Bolt会以多个任务(Task)的形式在集群上运行。

   7.组件(Component):是对Bolt和Spout的统称。

   8.流分组(Stream groupings):流分组定义了一个流在一个消费它的Bolt内的多个任务(task)之间如何分组。

   9.可靠性(Reliability):Storm保证了拓扑中Spout产生的每个元组都会被处理。

   10.Workers(工作进程):拓扑以一个或多个Worker进程的方式运行。每个Worker进程是一个物理的Java虚拟机,执行拓扑的一部分任务。

   11.Executor(线程):是1个被worker进程启动的单独线程。每个executor只会运行1个topology的1个component。

   12.Nimbus:Storm集群的Master节点,负责分发用户代码,指派给具体的Supervisor节点上的Worker节点,去运行Topology对应的组件(Spout/Bolt)的Task。

   13.Supervisor:Storm集群的从节点,负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。


转载自://blog.51cto.com/2951890/2312024

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



storm部署Topology出现的错误
storm部署Topology出现的错误,当我准备部署ToPology的时候。
使用Docker快速部署Storm环境
准备工作安装DockerEngine,https:docsdockercom安装docker-composehttp:docsdockercomcomposeinstall克隆git项目:gitclonehttps:githubcomziyunhxstorm-mono-docker使用首先将命
Apache Storm 的历史及经验教训——Nathan Marz
HistoryofApacheStormandlessonslearned——项目创建者NathanMarzApacheStorm最近成为了ASF的顶级项目,这对于该项目和我个人而言是一个重大的里程碑。很难想像4年前Storm只是我脑海中的一个
大数据缓存架构和Storm的关系
大数据缓存架构和Storm的关系。有些热点数据相关的实施处理的方案,比如快速预热,热点数据的实时感知和快速降级,全部要用到Storm,因为我们要实时的计算出热点缓存数据,实时计算,高并发的情况。
获取storm与kafka之间的offset差值,写入hbase中,并写入表格中
1、首先设置一个观察者类,方便获取zookeeper中的信息packagecom.topologyauditdemo;importjava.util.List;importorg.apache.zookeeper.WatchedEvent;importorg.apache.zookeeper.Watcher;importorg.apache.zookeeper.ZooKeeper;imp...
Storm基本概念
转载自:  http:blogcsdnnethguisuarticledetails8454368  http:san-yuniteyecomblog2095475Storm基本概念Fields  存储消息的字段名列表,其所需参数是字段名集合。对于同一条消
大数据Storm实战练习WordCount
大数据Storm实战练习WordCount,代码。
Storm:IPartitionedTransactionalSpout和IOpaquePartitionedTransactionalSpout 基于Storm0.9.x
Storm:IPartitionedTransactionalSpout和IOpaquePartitionedTransactionalSpout(基于Storm09x)。IPartitionedTransactionalSpout和IOpaquePartitionedTransactionalSpout都是把tuple封装成batch进行处理,同时可以保证每一个tuple都被完整地处理,都支持消息重发。
Storm:事务主要API 基于Storm0.9.x
Storm:事务主要API(基于Storm09x)。Spout:ITransactionalSpout,同BaseTransactionalSpout,普通事务Spout,IPartitionedTransactionalSpout,同BasePartitionedTransactionalSpout,分区事务Spout。
Storm入门教程之streamgrouping简介
Storm入门教程之streamgrouping简介,streamgrouping就是用来定义一个stream应该如果分配给Bolts上面的多个Tasks。