NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

探寻流式计算

  • 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:28931

评论

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

Mac电脑音频修复和增强推荐 iZotope RX 10最新激活版

胖墩儿不胖y

Mac软件 音频修复 音频增强软件

【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

阿里云大数据AI技术

算法

测吧(北京)科技有限公司项目总监王雪冬一行访问计算机学院探讨合作

霍格沃兹测试开发学社

浅谈RabbitMQ的延迟队列

高端章鱼哥

RabbitMQ 延迟队列

行云管家祝各位程序员节日快乐!

行云管家

程序员 程序员节

2023年行云绽放&傲冠股份厨艺比拼团建活动圆满结束

行云管家

行云 团建 傲冠

LLM 新缺陷曝光,自我纠正成功率仅 1%;苹果超 95% 产品仍在中国制造丨 RTE 开发者日报 Vol.72

声网

仅需2分钟 让智慧助手小艺用你的声音时刻陪伴老人

最新动态

ARB链(Arbitrum)ARBT代币合约质押挖矿系统开发(源码技术搭建)

l8l259l3365

2024深圳电子展

AIOTE智博会

电子展 深圳电子展 电子信息展 深圳电子信息展

软件测试|第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕

霍格沃兹测试开发学社

FC红白机游戏600合集 for mac

展初云

Mac 游戏 FC 红白机游戏

一次单据图片处理的优化实践 | 京东物流技术团队

京东科技开发者

性能优化 图片处理 pdfbox 企业号10月PK榜

后 Cookie 时代如何实现精准的用户运营与管理?

Authing

低代码 Idaas 用户管理 Authing 用户运营

合约开发 - DAPP开发 - swap开发

西安链酷科技

swap链游 合约交易所开发 dapp开发 NFT开发

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

OpenI启智社区

开源 大模型 OpenI启智社区 CCF中国开源大会 鹏城·脑海大模型

四川华新学院在“火焰杯”软件测试高校就业选拔赛取得佳绩

测试人

软件测试

美国站群服务器配置指南,帮你轻松管理多个网站

一只扑棱蛾子

站群服务器 美国服务器 美国站群服务器

天翼云以领先云网算力,为工业信息化筑牢算力底座

Geek_2d6073

NFTScan | 10.16~10.22 NFT 市场热点汇总

NFT Research

NFT NFTScan nft工具

文心一言 VS 讯飞星火 VS chatgpt (119)-- 算法导论10.3 4题

福大大架构师每日一题

福大大架构师每日一题

面对“双十一”这样的大促,品牌方还能多做些什么?

博文视点Broadview

自定义MyBatis拦截器更改表名

emanjusaka

Java mybatis

Mac电脑屏幕录像 Iris最新直装激活版

mac大玩家j

录屏软件 Mac软件 Mac好用的屏幕录制软件

手把手|支付宝异步通知如何使用

盐焗代码虾

安全 支付宝 异步通知

OpenHarmony Meetup成都站招募令

OpenHarmony开发者

OpenHarmony

第5期 | GPTSecurity周报

云起无垠

飞码LowCode前端技术系列(一):数据结构设计 | 京东云技术团队

京东科技开发者

低代码 营销 企业号10月PK榜 web页面搭建

IDEA工具第二篇:自定义Java方法注释模板 | 京东云技术团队

京东科技开发者

Java IDEA 参数 注释 企业号10月PK榜

深度学习应用开发示例之“定位编码”

矩视智能

深度学习 机器视觉

Perforce发布《2023游戏开发与设计现状报告》,洞察游戏行业的改变与2023年最令人兴奋的行业动向

龙智—DevSecOps解决方案

游戏开发

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