大数据 流数据流计算框架简介

静态数据和流数据

  • 新的数据密集型应用——流数据,即数据以大量、快速、时变的流形式持续到达

流数据具有如下特征:

  • 数据快速持续到达,潜在大小也许是无穷无尽的
  • 数据来源众多,格式复杂
  • 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
  • 注重数据的整体价值,不过分关注个别数据
  • 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序

批量计算和实时计算

  • 对静态数据和流数据的处理,对应两种不同的计算模式:
  • 批量计算
    • 以静态数据为对象,可以利用充裕时间处理海量数据,如hadoop
    • 不能处理流数据,因为流数据不适合用传统的关系模型建模
  • 实时计算
    • 以流数据为对象,要求能够实时得到计算结果,响应时间为秒级

流计算概念

基本概念: 数据的价值随着时间的流失而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎

对于一个流计算系统来说,它应达到如下需求:

  • 高性能: 处理大数据的基本要求,如每秒处理几十万条数据
  • 海量式: 支持TB级别甚至PB级别数据规模
  • 实时性: 保证较低的延迟时间,达到秒级别甚至毫秒级别
  • 分布式: 支持大数据的基本架构,必须能够平滑扩展
  • 易用性: 能够快速进行开发和部署
  • 可靠性: 能可靠地处理流数据

流计算与hadoop

  • hadoop设计的初衷时面向大规模数据的批量处理,每台及其并行运行MapReduce任务,最后对结果进行汇总输出
  • MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据

hadoop擅长批处理,不适合流计算

流计算框架

业界诞生了许多专门的流数据实时计算系统来满足各自需求
商业级

  • IBM InfoSphere Streams 和 IBM StreamBase

开源流计算框架:

  • Twitter Storm: 免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据;阿里JStorm
  • Yahoo! S4(Simple Scalable Streaming System): 通用的、分布式、可扩展、分区容错、可插拔的开源流计算平台

公司为支持自身业务开发的流计算框架:

  • Facebook Puma
  • Dstream
  • 银河流数据处理平台
  • Super Mario

流计算的处理流程一般包含三个阶段

  • 数据实时采集
  • 数据实时计算
  • 实时查询服务

数据实时采集

  • 数据实时采集阶段通常采集多个数据源的海量数据,需要保证实时性、

实时查询服务

实时查询服务: 经由流计算框架得出的结果可供用户进行实时查询、展式或储存

传统的数据处理流程。用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户

虽然通过对传统的数据处理系统进行定时查询,也可以实现不断地更新结果和结果推送,但通过这样的方式获取的结果,仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别。

流处理系统与传统的数据处理系统有关键区别:

  • 流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据
  • 用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统,获取的是过去某一时刻的结果
  • 流处理系统无需用户主动发出查询,实时查询服务可以主动将实时结果推送给用户

开源流计算框架Storm

  • Yahoo! S4和Twitter Storm

Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等。

Storm特点:

  • 整合性
  • 简易的API
  • 可扩展性
  • 容错性
  • 可靠的消息处理
  • 支持各种编程语言
  • 快速部署
  • 免费、开源

Storm的主要概念:

  • Streams
  • Spout
  • Bolt
  • Topology

Storm集群采用"Master-Worker"的节点方式:

  • Master节点运行名为"Nimbus"的后台程序(类似Hadoop中的"JobTracker"), 负责在集群范围内分发代码、为Worker分配任务

Spark Streaming流计算框架

  • Spark Streaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字
  • Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似

流处理架构

Flink流计算框架

  • Apache Flink是一个分布式流处理框架,用于在无边界和有边界数据流上进行有状态的计算,支持在所有常见集群环境中运行,并能以内存速度和任意规模进行计算
Flink的特点
  • 无界和有界流数据融合处理
  • 支持任意规模应用
  • 事件驱动型应用
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值