目录
一.streaming简介
- 概念
- 特点
二.streaming系统架构
- storm数据处理模型(topology)
- 系统架构
- 运行流程
- task介绍
三.streaming关键特性
- HA
- 消息可靠些
- ACK机制
一.streaming简介
1.概念
streaming:是一个计算框架,基于开源storm
storm:是一个实时处理,流式处理的引擎。它是独立的(spark是基于hadoop的),开源的,免费的。
微批处理:spark 批处理:mapreduce
storm是流式处理的:数据来一条就处理一条(打开后一直运行,手动kill进程,进程才会结束)
2.特点
- 分布式:数据分布给多个节点并行处理
2. 实时:来一条数据处理一条
二.streaming系统架构
1.storm数据处理模型(topology)
- spout:数据产生的源头
- tuple:数据单元
- bolt:数据处理单元,每一个bolt实现不同的处理方式
一个Topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过Stream Groupings进行连接的有向无环图(DAG)
2.系统架构
- nimbus:管理者,进行资源的分配,管理
- supervisor:工作者,实际执行任务的
- worker:进程
- excutor:线程→由task(spout和bolt对tuple进行处理)执行
- zookeeper:监控,主备选举(nimbus),通过心跳线对组件状态进行监控
- stream:topology中的每一条线就是一个stream
3.运行流程
- client提交topology给nimbus
- nimbus在集群中将资源分配给supervisor
- supervisor接受后启动worker中的executor,对executor中的task进行执行
- 通过zookeeper上报状态
4.task介绍
在一个单独的Worker进程中会运行一个或多个Executor线程。,task在excutor中执行
一个bolt/spout可以在多个worker的多个excutor里面运行
默认情况下,一个excutor对应一个task
三.streaming关键特性
1.HA
容灾能力(类似重建副本机制):当一个节点中的拓扑故障时,会自动迁移到别的正常节点进行运行。保证任务不会中断。
2.消息可靠性
在streaming里面一个tuple被完全处理的意思是:这个tuple以及由这个tuple所派生的所有的tuple都被成功处理。如果这个消息在Timeout所指定的时间内没有成功处理,这个tuple就被认为处理失败了。
3.ACK机制
Streaming里面有一类特殊的task称为:acker, 他们负责跟踪spout发出的每一个tuple的tuple树。
spout(数据源)每产生一个tuple都会产生一个随机数1(64位),然后告诉acker(原本校验值为0,每产生一个tuple就会更新校验值)
tuple交给bolt2处理,bolt2也会给acker发送另一个随机数2
acker对随机数1、2进行计算,如果成功的话,校验值最终还是会为0。如果校验值不为0,意味着这个拓扑失败。