【流计算】流计算概论

前言

作者在之前写过一个大数据的专栏,包含GFS、BigTable、MapReduce、HDFS、Hadoop、LSM树、HBase、Spark,专栏地址:

https://blog.csdn.net/joker_zjn/category_12631789.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12631789&sharerefer=PC&sharesource=Joker_ZJN&sharefrom=from_link

流计算和大数据是紧密相关的,现在接那个大数据专栏,继续向下写流计算专栏。这是第一篇。

目录

1.什么是流计算

2.流计算的架构


1.什么是流计算

流计算,就是对流式数据的计算,是专门用来处理流式数据的。因此在聊流计算之前,我们要先明白什么是静态数据和流式数据。

静态数据:

静态数据不是实时产生的,是有一定历史的数据,静态数据一般是用来进行一些统计分析的,比如数据仓库中的数据就是典型的静态数据。再比如MapReduce做统计分析,存在HDFS中的数据也是静态数据。

流式数据:

流式数据其实就是动态数据,是实时产生的,其应用场景对实时性要求很高,基本上是要求需要对其做实时处理的数据。比如:

  • 物联网中的实时监测设备,诸如烟感、PM2.5监测、安防等设备,要对实时的流式数据做实时的分析,从而判断是否触发报警之类的操作。

  • 购物网站上的"可能感兴趣"的推荐,就是基于用户实时点击浏览产生的流式数据来给客户进行推荐的。

上面这样说只是一方面,其实仔细思考就会发现静态数据、动态数据之间没有很明确的边界,静态数据也会有新的数据进来,流式数据的业务场景中也有对历史数据计算的需求。

其实从业务场景上能更好的区分是不是流计算的场景,流计算的场景一句话就能概括:

大量数据实时产生,涌过来,从这些大量实时数据中计算出实时结果。

流式数据的特征:

  • 快速持续的到达

  • 来源众多、格式复杂

  • 数据量大,不太关注存储,一旦经过处理后,要么被丢弃,要么被归档存储。

2.流计算的架构

流数据的量大、产生的速度快、来源和格式杂,这些特点都是会拉低计算速度的点,所以流计算的核心就是要就是要稳定可靠高效的处理流式数据。市面上的各种流计算框架针对这些核心问题,各自给出了自己的解法,常用的流计算框架:

  • twitter storm

  • spark strem

流计算是整个大系统的一环,接下来我们看看引入流计算的系统架构一般长什么样子。

以flink为例,展示一下流计算常见架构:

观察上面系统,可以发现引入流计算的系统架构一般有以下部分组成:

  • 数据采集

  • 数据传输

  • 数据处理

  • 数据存储

  • 数据展现

数据采集:

传感器、各个服务模块上的各个日志代理等。

数据采集在软件层面无非就是从浏览器、手机终端等设备将数据发给采集服务器。

采集服务器要接收数据,在性能上要有所考虑,关于性能无非以下点:

  • 吞吐量(TPS),要在IO模型上有所抉择,阻塞?非阻塞

  • 时延,有时延要求时首先要报时延,再说拉高吞吐量的事儿

  • TCP连接,当有大量连接需要维持时,用非阻塞IO服务器,如netty;当连接数量较少时,用长连接和连接池

数据传输:

负责数据的流转,数据总线,一般用MQ来实现,数据传输要关注的点:

  • 吞吐量,流式数据的量大,吞吐量肯定要跟上,不能造成数据积压,数据才有实时性。
  • 可靠性,可靠性肯定要跟上,数据尽可能不要丢。

数据处理:

流计算的核心,也是流计算框架主要工作的环节,用计算引擎来对流进行:

  • 转化、清洗、转换

  • 计数、求和、均值、标准差、极值、聚合、关联、直方图等

数据存储:

根据自己的业务场景来决定计算出来的结果是否需要存储?如果要存储就要考虑自己业务场景的需求:

  • 数据量大不大?

  • 时延要求如何?

  • 吞吐量大不大?

然后来选择对应的存储介质,内存?关系型数据库?非关系型数据库?分布式文件系统?等等等等

3.常见流计算场景

以下是流式计算的一些典型应用场景:

  • 实时数据分析
    • 金融交易:实时监测市场波动、交易异常和欺诈检测。
    • 物联网(IoT):实时处理传感器数据,监控设备状态,触发警报。
  • 日志处理与监控
    • 系统监控:实时监控服务器日志,快速发现并处理系统故障。
    • 应用性能管理(APM):实时分析应用日志,优化性能瓶颈。
  • 社交媒体分析
    • 趋势分析:实时分析社交媒体上的热点话题和用户情绪。
    • 推荐系统:根据用户实时行为更新推荐内容。
  • 网络安全
    • 入侵检测:实时分析网络流量,识别潜在的安全威胁。
    • 异常检测:监控网络活动,及时发现异常行为。
  • 电子商务
    • 库存管理:实时更新库存信息,避免超卖情况。
    • 订单处理:实时跟踪订单状态,提高客户满意度。
  • 智能制造
    • 生产监控:实时监控生产线状态,提高生产效率。
    • 预测性维护:通过分析机器运行数据,提前预测并预防故障。
  • 交通与物流
    • 交通管理:实时分析交通流量,优化交通信号控制。
    • 物流追踪:实时更新货物位置,提高物流效率。
相关推荐
NiNg_1_23436 分钟前
基于Hadoop的数据清洗
大数据·hadoop·分布式
成长的小牛2332 小时前
es使用knn向量检索中numCandidates和k应该如何配比更合适
大数据·elasticsearch·搜索引擎
goTsHgo2 小时前
在 Spark 上实现 Graph Embedding
大数据·spark·embedding
程序猿小柒2 小时前
【Spark】Spark SQL执行计划-精简版
大数据·sql·spark
隔着天花板看星星2 小时前
Spark-Streaming集成Kafka
大数据·分布式·中间件·spark·kafka
奥顺2 小时前
PHPUnit使用指南:编写高效的单元测试
大数据·mysql·开源·php
小屁孩大帅-杨一凡2 小时前
Flink 简介和简单的demo
大数据·flink
天冬忘忧2 小时前
Flink调优----反压处理
大数据·flink
sinat_307021532 小时前
大数据政策文件——职业道德(山东省大数据职称考试)
大数据·职场和发展
SeaTunnel2 小时前
某医疗行业用户基于Apache SeaTunnel从调研选型到企业数据集成框架的落地实践
大数据