关键词:
Apache Strom 实时计算系统
Storm简介
Apache Storm
是一个分布式大数据实时计算系统,Storm
设计用于在容错和水平可拓展方法中实时处理大数据,是一个数据流框架,可以使用Storm
并行的对实时数据执行各种操作。相比于Hadoop
的批量处理机制,Storm
的实时处理机制更适合实时性要求比较高的场景。
Storm
具有以下特点:
- 支撑各种实时类项目场景,实时处理消息以及更新数据库,基于最基础的实时计算语义,对实时数据进行计算。
- 高度的可伸缩性,如果需要扩容,直接添加机器即可,调整计算拓扑的并行度就可以了。无缝快速扩容。
- 高容错性,如果某台机器宕机了,重启后也不会影响作业,保证消息都不丢失。
- 高健壮性,从历史经验来看,
storm
比hadoop
,spark
等大数据类系统都健壮,因为元数据都保存在zookeeper
中 - 对用户友好,核心语义非常简单,开发起来效率很高,并且支持多种变成语言。
Storm的集群架构
接下来看看Strom
的集群架构,Strom
的集群拓扑如下图:
各种组件的解释如下:
Nimbus
:Storm
集群主节点,集群中的其他节点成为工作节点,主节点主要负责在工作节点之间分发数据,向工作节点分配任何和监视故障。Supervisor
:工作节点叫做Supervisor
,工作节点有多个工作进程,管理工作进程以完成由Numbus
分配的任务。Worker
:工作进程,工作进程会创建执行器,让执行器执行特定的任务,工作进程将有多个执行器。Executor
:执行器是工作进程产生的单个线程,执行器运行多个任务。Task
:任务执行实际的数据处理,主要输是运行一个计算。所以他是一个Spouts
或者Bots
Zookeeper framework
:Strom
利用Zookeeper
维护共享数据之间的协调服务,依赖于Zookeeper
来监控工作节点的状态。
Storm核心概念
Storm
处理数据的过程是从一端读取实时数据的输入流,并将其通过一系列小处理待援,并在另一端输出信息。在Storm
中有以下概念:
Spouts
:数据输入源,通过我们需要实现一个Spouts
的接口,尝试在数据源读取数据,比如说在kafka
中消费数据。Bolts
:Bolts
是逻辑处理单元,数据是Spouts
中读取,然后会将数据传递到Bolts
中处理,处理之后会把数据传递到另外的一个或多个的Bolts
处理。Tuple
: 在代码中的一条数据的数据结构,在Spouts
和Bolts
中传递。Steam
:数据流的概念,是一个抽象的概念,可以想象为多个Tuple
组成一个数据流Topplogy
:拓扑,Spouts
和多个Bolts
连接在一起,组成一个拓扑。拓扑是有向图,定点是计算,边缘是数据流,简单的拓扑从Spouts
开始,将数据发射到一个或多个Bolts
处理,Bolts
表示据欧最小处理逻辑的节点,Bolts
的输出可以发射到另一个Bolts
作为输入。Strom
的工作主要是运行拓扑,开发Storm
的工作其实也是开发拓扑。
一个简单拓扑的结构如下:
流分组
上面说到,数据可以从Spouts
中流到Bolts
,也可以从一个Bolts
流到另一个Bolts
,其中Spouts
和Bolts
都是独立运行在某一个Task
中的,所以说Task
的数量就是你Storm
集群的并行度,而在这种情况下,怎么决定一个Bolts
或者Spouts
处理出来的结果,流向另一个Bolts
的规则呢?此时需要使用到流分组。流分组是控制数据流向规则的一个东西。Storm
中有4个内置的分组:
- 随机分组(
Shuffle Grouping
),表示数据随机达到,负载均衡的效果。比如BoltA
运行在task1/task2/task3
中,而Bolt2
运行在task4/task5/task6
中,而BoltsA
的数据要流向BoltB
,则他们的流向为task1->task4/task2->task5/task3->task6
- 字段分组(
Fields Grouping
),表示数据按照字段来区分,具有相同字符串的元组将会流向相同的Bolts
中处理 - 全局分组(
Global Grouping
),所有流可以分组并向前到一个Bolts
。此分组将源的所有实例生成的元组发送到单个目标实例(具体来说,选择具有最低ID的工作程序) - 所有分组(
All Grouping
),所有分组将每个元组的单个副本发送到接收Bolts
的所有实例。这种分组用于向Bolts
发送信号。所有分组对于连接操作都很有用。相当于广播。 None Grouping
,不分组,目前等同于Shuffle Grouping
。Direct Grouping
直接分组,由Tuple
的发射单元直接决定Tuple
将发射给那个Bolts
,一般情况下是由接收Tuple
的Bolts
决定接收哪个Bolts
发射的Tuple
。这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个Task
处理这个消息。 只有被声明为Direct Stream
的消息流可以声明这种分组方法。而且这种消息Tuple
必须使用emitDirect
方法来发射。消息处理者可以通过TopologyContext
来获取处理它的消息的taskid
(OutputCollector.emit
方法也会返回taskid
)。
总结
本篇文章主要介绍了Storm
的一些基本知识,包括集群架构,Storm
的核心概念,以及并行度和流分组的相关概念。
concurrentihawk—实时并行计算机仿真系统(代码片段)
Concurrent公司的iHawk并行计算机仿真系统是具有高实时特性的实时仿真系统,该仿真系统包含对称多处理器计算机平台、实时操作系统、实时开发工具以及应用软件。系统以MATLAB?/Simulink?软件作为前端建模工具,并可兼容C/C++、Ada... 查看详情
实时系统概念(代码片段)
实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。有两种类型的实时系统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多... 查看详情
实时监控:基于流计算oceanus(flink)实现系统和应用级实时监控(代码片段)
...高级工程师本文描述了如何使用腾讯云大数据组件来完成实时监控系统的设计和实现,通过实时采集并分析云服务器(CVM)及其App应用的CPU和内存等资源消耗数据,以短信、电话、微信消息等方式实时反馈监控告... 查看详情
apachestorm简单实践(代码片段)
...rm的一些基础知识以及核心架构。ApacheStorm集群安装配置\\ApacheStrom实时计算系统本篇文章介绍一些Storm的简单实践场景。创建一个Storm项目实践场景为,基于Storm开发出一个实时统计句子中的单词个数的拓扑,实时数据我们... 查看详情
实时流计算(代码片段)
总结自——吃透实时流计算文章目录1.流计算通用架构数据采集模块数据传输模块数据处理模块数据存储模块2.流计算本质:NIO+异步NIO如何优化IO和CPU都密集的任务异步编程3.反压机制4.死锁:为什么流计算应用突然卡... 查看详情
spark实践——基于sparkstreaming的实时日志分析系统(代码片段)
Spark实践——基于SparkStreaming的实时日志分析系统本文基于《Spark最佳实践》第6章Spark流式计算。我们知道网站用户访问流量是不间断的,基于网站的访问日志,即Weblog分析是典型的流式实时计算应用场景。比如百度统计,它可以... 查看详情
storm流式计算框架(代码片段)
...:storm的简介:1.1storm是什么:1.Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等... 查看详情
深入理解计算机操作系统(笔记)(代码片段)
深入理解计算机系统1.实时系统概念2.编译连接3.AT&T汇编指令学习(GCC)4.内存对齐5.Big-Endian大端模式和Little-Endian小端模式6.过程调用1.实时系统概念前后台系统后台是各种面向硬件的程序,如中断,定时器,gpio等。前... 查看详情
基于apachehudi和apachesparksql的近实时数仓架构分享(代码片段)
...据数据的延迟情况,数据的时效性一般分为离线、准实时、实时。离线计算一般是以天(T)为界限,比如离线场景最多的就是T-1计算,也就是今天计算昨天产生的数据。准实时计算一般以小时(H)为... 查看详情
嵌入式实时操作系统10——系统时钟节拍(代码片段)
1.系统节拍是什么时间管理在操作系统内核中占有非常重要的地位,操作系统内核中有大量基于时间驱动的功能。有些任务是需要周期执行,比如一个软件定时器需要一秒钟周期性运行100次;有些功能任务需要延时一... 查看详情
基于希尔伯特变换的光反馈自混合干涉位移实时跟踪测量系统的瞬时相位计算matlab仿真(代码片段)
目录一、理论基础二、案例背景 三、MATLAB程序四、仿真结论分析一、理论基础 光学干涉测量技术是以光波干涉原理为基础进行测量的技术,其区别于其它光学成像测量技术的特点除了具有更高的测量灵敏度和精确度... 查看详情
操作系统(代码片段)
...带存储和批处理系统 多道程序系统 分时系统 实时系统 通用操作系统 操作系统的进一步发展 操作系统的作用手工操作——穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工... 查看详情
《大话实时计算》(代码片段)
...f;不知道大数据技术生态圈长啥样?香菇?不知道实时计算到底是什么鬼?淘宝双11实时交易金额统计背后的故事?。。。。。。噢特啦!金融中心大数据特种部队低调推出《开讲啦》系列培训,喊你一起... 查看详情
text实时音频系统服务(代码片段)
「实时视频流分析的边缘计算技术」最新2022研究综述(代码片段)
清华大学最新《面向实时视频流分析的边缘计算技术》综述实时视频流分析在智能监控、智慧城市、自动驾驶等场景中具有重要价值.然而计算负载高、带宽需求大、延迟要求严等特点使得实时视频流分析难以通过传统的云计算... 查看详情
操作系统介绍(代码片段)
...带存储和批处理系统 多道程序系统 分时系统 实时系统 通用操作系统 操作系统的进一步发展 操作系统的作用手工操作——穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工... 查看详情
flink实时计算pvuv的几种方法(代码片段)
本文首发于:Java大数据与数据仓库,Flink实时计算pv、uv的几种方法实时统计pv、uv是再常见不过的大数据统计需求了,前面出过一篇SparkStreaming实时统计pv,uv的案例,这里用Flink实时计算pv,uv。我们需要统计不同数据类型每天的pv,... 查看详情
sparkstreaming实时计算框架学习01(代码片段)
文章目录初探SparkStreaming掌握DStream编程模型DStream转换操作DStream窗口操作DStream输出操作使用foreachPartition,将处理结果写到MySQL数据库中初探SparkStreaming从hadoop102的8888端口接受一行或者多行文本内容,并对接收到的内容以... 查看详情