写点什么

探寻流式计算

  • 2020-02-12
  • 本文字数:2676 字

    阅读完需:约 9 分钟

探寻流式计算

一、静态数据和流数据


  • 静态数据:为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。

  • 流数据:以大量、快速、时变的流形式持续到达的数据。(例如:实时产生的日志、用户实时交易信息)


流数据具有以下特点:


(1)、数据快速持续到达,潜在大小也许是无穷无尽的。


(2)、数据来源众多,格式复杂。


(3)、数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储(存储于数据仓库)。


(4)、注重数据的整体价值,不过分关注个别数据。


(5)、数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。


在传统的数据处理流程中,总是先收集数据,然后将数据放到 DB 中。然后对 DB 中的数据进行处理。


流计算:为了实现数据的时效性,实时消费获取的数据。


二、批量计算和流计算


  • 批量计算:充裕时间处理静态数据,如 Hadoop。实时性要求不高。

  • 流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息(实时、多数据结构、海量)。


流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。流数据数据格式复杂、来源众多、数据量巨大,不适合采用批量计算,必须采用实时计算,响应时间为秒级,实时性要求高。批量计算关注吞吐量,流计算关注实时性。


流计算的特点:


1、实时(realtime)且无界(unbounded)的数据流。流计算面对计算的 是实时且流式的,流数据是按照时间发生顺序地被流计算订阅和消费。且由于数据发生的持续性,数据流将长久且持续地集成进入流计算系统。例如,对于网站的访问点击日志流,只要网站不关闭其点击日志流将一直不停产生并进入流计算系统。因此,对于流系统而言,数据是实时且不终止(无界)的。


2、持续(continuos)且高效的计算。流计算是一种”事件触发”的计算模式,触发源就是上述的无界流式数据。一旦有新的流数据进入流计算,流计算立刻发起并进行一次计算任务,因此整个流计算是持续进行的计算。


3、流式(streaming)且实时的数据集成。流数据触发一次流计算的计算结果,可以被直接写入目的数据存储,例如将计算后的报表数据直接写入 RDS 进行报表展示。因此流数据的计算结果可以类似流式数据一样持续写入目的数据存储。


三、流计算框架


为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎。对于一个流计算系统来说,它应达到如下需求:


  • 高性能:处理大数据的基本要求,如每秒处理几十万条数据。

  • 海量式:支持 TB 级甚至是 PB 级的数据规模。

  • 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别。

  • 分布式:支持大数据的基本架构,必须能够平滑扩展。

  • 易用性:能够快速进行开发和部署。

  • 可靠性:能可靠地处理流数据。


目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架。


(1)商业级: InfoSphere Streams(IBM)和 StreamBase(IBM)。


(2)开源流计算框架,代表如下:Storm(Twitter)、 S4(Yahoo)。


(3)公司为支持自身业务开发的流计算框架:Puma(Facebook)、Dstream(百度)、银河流数据处理平台(淘宝)。


四、流计算框架 Storm


Storm 是 Twitter 开源的分布式实时大数据处理框架,随着流计算的应用日趋广泛, Storm 的知名度和作用日益提高。接下来介绍 Storm 的核心组件以及性能对比。


Storm 的核心组件


· Nimbus:即 Storm 的 Master,负责资源分配和任务调度。一个 Storm 集群只有一个 Nimbus。


· Supervisor:即 Storm 的 Slave,负责接收 Nimbus 分配的任务,管理所有 Worker,一个 Supervisor 节点中包含多个 Worker 进程。


· Worker:工作进程,每个工作进程中都有多个 Task。


· Task:任务,在 Storm 集群中每个 Spout 和 Bolt 都由若干个任务(tasks)来执行。每个任务都与一个执行线程相对应。


· Topology:计算拓扑,Storm 的拓扑是对实时计算应用逻辑的封装,它的作用与 MapReduce 的任务(Job)很相似,区别在于 MapReduce 的一个 Job 在得到结果之后总会结束,而拓扑会一直在集群中运行,直到你手动去终止它。拓扑还可以理解成由一系列通过数据流(Stream Grouping)相互关联的 Spout 和 Bolt 组成的的拓扑结构。


· Stream:数据流(Streams)是 Storm 中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。数据流可以由一种能够表述数据流中元组的域(fields)的模式来定义。


· Spout:数据源(Spout)是拓扑中数据流的来源。一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中。根据需求的不同,Spout 既可以定义为可靠的数据源,也可以定义为不可靠的数据源。一个可靠的 Spout 能够在它发送的元组处理失败时重新发送该元组,以确保所有的元组都能得到正确的处理;相对应的,不可靠的 Spout 就不会在元组发送之后对元组进行任何其他的处理。一个 Spout 可以发送多个数据流。


· Bolt:拓扑中所有的数据处理均是由 Bolt 完成的。通过数据过滤(filtering)、函数处理(functions)、聚合(aggregations)、联结(joins)、数据库交互等功能,Bolt 几乎能够完成任何一种数据处理需求。一个 Bolt 可以实现简单的数据流转换,而更复杂的数据流变换通常需要使用多个 Bolt 并通过多个步骤完成。


· Stream grouping:为拓扑中的每个 Bolt 的确定输入数据流是定义一个拓扑的重要环节。数据流分组定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。在 Storm 中有八种内置的数据流分组方式。


· Reliability:可靠性。Storm 可以通过拓扑来确保每个发送的元组都能得到正确处理。通过跟踪由 Spout 发出的每个元组构成的元组树可以确定元组是否已经完成处理。每个拓扑都有一个“消息延时”参数,如果 Storm 在延时时间内没有检测到元组是否处理完成,就会将该元组标记为处理失败,并会在稍后重新发送该元组。


1544611881082012146.png


图 1:Storm 核心组件


1544611910785026399.png


图 2:Storm 编程模型


主流计算引擎的对比


目前比较流行的实时处理引擎有 Storm,Spark Streaming,Flink。每个引擎都有各自的特点和应用场景。 下表是对这三个引擎的简单对比。


1544611943609012616.png


图 3:主流引擎性能对比


总结:流计算的出现拓宽了我们应对复杂实时计算需求能力。Storm 作为流计算的利器,极大方便了我们的应用。流计算引擎还在不断发展,基于 Storm 和 Flink 开发的 JStorm,Blink 等计算引擎在性能各方面都有极大的提高。流计算值得我们继续关注。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/197


2020-02-12 15:281077

评论

发布
暂无评论
发现更多内容

Keka for Mac(文件压缩解压工具)

Mac相关知识分享

Premiere Pro 2024 for mac(pr2024 视频编辑器)

Mac相关知识分享

AutoMQ热招岗位,等你来投!

AutoMQ

Java 云计算 招聘 岗位 AutoMQ

DCommander for Mac(两窗格文件管理器)

Mac相关知识分享

Cookie for Mac(浏览器缓存清理工具)v7.4.6免激活版

小玖_苹果Mac软件

作业帮T30和步步高S7的区别

妙龙

作业帮 学习机 步步高

跬智信息(Kyligence)获评钛媒体2024“年度 AI 应用”

Kyligence

#人工智能 企业 AI 应用

大模型安全 | “创造未来,安全同行” 北京站·第九期「度安讲」 技术沙龙开放报名

百度安全

Steinberg WaveLab 12 Pro for Mac(母带制作工具) v12.0.50激活版

小玖_苹果Mac软件

重塑未来:Cloud Studio引领云端开发与学习的新纪元

代码忍者

Axure RP 10 for Mac(交互式原型设计)

Mac相关知识分享

AI英语作文练习APP的功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语作文

唯品会Vip商品详情 API 接口:开发应用与收益深度剖析

科普小能手

API 接口 API 测试 唯品会商品数据接口 唯品会 唯品会商品数据采集

iTubeGo YouTube Downloader for Mac(YouTube 下载器)v9.2.4激活版

小玖_苹果Mac软件

SwitchResX for Mac(显示器屏幕分辨率修改工具)

Mac相关知识分享

AI智能体的开发流程

北京木奇移动技术有限公司

AI教育 AI智能体 软件外包公司

LLM 分布式训练六大关键技术介绍

Baihai IDP

AI gpu LLMs Baihai IDP

WinX HD Video Converter for Mac(高清视频转换软件)v6.8.3激活版

小玖_苹果Mac软件

Screen Wonders for Mac(3D壁纸屏保软件)v3.2.0激活版

小玖_苹果Mac软件

RapidClick for Mac(鼠标自动点击工具)

Mac相关知识分享

杭州乘云联合中国信通院等单位正式发布《云计算智能化可观测性能力成熟度模型》标准

乘云数字DataBuff

云计算 可观测性 智能运维

Steinberg SpectraLayers Pro for mac(Mac音频频谱编辑器)v11.0.50激活版

小玖_苹果Mac软件

Audio Hijack for Mac(强大的音频录制软件)v4.4.5直装版

小玖_苹果Mac软件

YT Saver for Mac(视频下载和转换器)v9.2.4激活版

小玖_苹果Mac软件

BBEdit for Mac v15.1.3 多功能代码编辑器

小玖_苹果Mac软件

ACDSee Photo Studio 11 for Mac(苹果电脑数字图像处理软件)

小玖_苹果Mac软件

淘宝买家秀数据接口(taobao.item_review_show)丨淘宝API实时接口指南

tbapi

淘宝API接口 淘宝买家秀接口

Axure RP 11 for Mac(快速原型设计工具)

Mac相关知识分享

Final Cut Pro for Mac(fcpx视频剪辑)

Mac相关知识分享

【YashanDB知识库】要有好的跑批性能,有哪些参数要注意

YashanDB

数据库 yashandb

Native Instruments Komplete Kontrol for mac(音源制作软件)v3.3.4免激活版

小玖_苹果Mac软件

探寻流式计算_语言 & 开发_姚远_InfoQ精选文章