静态数据和流数据
·近年来,在Web应用、网络监控、传感监测等领域,兴起了一种新的数据密集型应用——流数据,
即数据以大量、快速、时变的流形式持续到达
流数据具有如下特征:
·数据快速持续到达,潜在大小也许是无穷无尽的
·数据来源众多,格式复杂
·数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
·注重数据的整体价值,不过分关注个别数据
·数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序
针对于静态数据(hadoop)和流数据的计算分为批量计算(sparkStreaming)和实时计算(Storm)
Flink是一个批处理和流处理结合的统一计算框架
批量计算和实时计算
----对静态数据和流数据的处理,对应着两种截然不同的计算模式:
- 批量计算:充裕时间处理静态数据,如Hadoop(满足块大小进行计算)
- 流数据不适合采用批量计算,因为流数据不适合用传统的关系模型建模 流数据必须采用实时计算,响应时间为秒级,,数据量少时,不是问题
- 但是,在大数据时代,数据格式复杂、来源众多、数据量巨大,对实时计算提出了很大的挑战。 因此,针对流数据的实时计算一流计算,应运而生
流计算概念:
·流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,
如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理
为了及时处理流数据,就需要一个低延迟可扩展、高可靠的处理引擎。
对于一个流计算系统来说,它应达到如下需求:
- 高性能:处理大数据的基本要求,如每秒处理几十万条数据
- 海量式:支持TB级甚至是PB级的数据规模
- 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
- 分布式:支持大数据的基本架构,必须能够平滑扩展
- 易用性:能够快速进行开发和部署
- 可靠性:能可靠地处理流数据
流计算与Hadoop:
- Hadoop设计的初衷是面向大规模数据的批量处理,每台机器并行运行MapReduce任务,最后对结果进行汇总输出
- MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据。
- 可能会想到一种“变通”的方案来降低批处理的时间延迟,将基于MapReduce的批量处理转为小批量处理,将输入数据切成小的片段,每隔一个周期就启动一次MapReduce作业,但这种方式也无法有效处理流数据。切分成小片段,可以降低延迟,但是也增加了附加开销,还要处理片段之间依赖关系
- SparkStreimng:准实时(小批量处理)
SPARK学习分为三大块:spark核心 RDD 、Spark SQL 、 SparkStreimng
官网:
Spark Streaming提供两类内置流媒体