数据研发基础 | 什么是流批一体

embedded/2024/11/17 9:57:46/

流批一体的概念是可能出现在大厂的面试题中的,虽然就算大厂实习也没机会实操这样的高级操作,学一点概念,面试多少是能说上一两句的。大致就是希望一套代码能同时在批处理和流处理中运行(同时做离线计算和实时计算)。下面先从流、批两个概念说起:

定义

1.流式处理

流式处理(Stream Processing)是指实时处理数据流的技术。这些数据流可能来源于用户点击、传感器数据、日志文件等。流式处理的特点是数据一到就被处理,能提供实时的结果和响应。常见的流式处理框架有Apache Kafka、Apache Flink、Apache Storm等。

2.批量处理

批量处理(Batch Processing)则是指在一个时间窗口内处理大量数据的技术。它通常处理存储在数据库或文件系统中的大批数据,并生成离线分析报告或结果。批量处理的特点是处理大量数据时性能优越。常见的批量处理框架有Apache Hadoop、Apache Spark等。目前我使用到的数据开发基本都是离线的,实时需要更多的技术储备和开发经验。

3.流批一体的定义

流批一体(Unified Stream and Batch Processing)是将实时数据处理(Stream)和批量数据处理(Batch)的优势结合在一个统一的框架中进行数据处理。具有高效性、灵活性、可扩展性、容错性和实时性等优点。

为什么要做流批一体

在传统的数据处理模式中,实时数据处理和批量数据处理通常是分开的。

  • 在实时数据处理中,数据需要快速地被处理和分析,以便能够及时做出决策。
  • 而在批量数据处理中,则需要对大量的历史数据进行处理和分析,以便能够更好地了解数据的情况。
  • 流批一体通过一个系统同时支持实时数据流处理和离线数据处理,提供更加灵活和高效的数据处理能力。
    其好处:
    1.减少学习成本
    2.减少资源消耗
    3.降低架构复杂性
    4.提升价值产出效率

难点

  • 标准化和规范化不足‌:缺少统一的标准和规范,不同的产品和平台有不同的实现方式和接口,这给用户带来了一定的学习成本和迁移成本。
  • 技术门槛和运维负担‌:系统的实现和维护可能会增加复杂性,需要专业的技术团队进行管理。
  • 架构统一难度大‌:数据架构统一的必要性在于避免数据重复建设带来的混乱低效,但实现的难点是不同场景的性能平衡点不同。例如,批计算重视成本优化,流计算重视数据新鲜度,交互式分析重视查询性能。需要在流处理和批处理之间找到平衡,确保两者都能高效运行。
  • 应用层对接困难‌:流批一体化的实现需要在应用层进行对接,确保数据一致性和完整性是一个关键问题。
  • 用户作业迁移成本高‌:用户原来的Batch作业是用‌Hive SQL撰写的,现在需要替换成‌Flink SQL,这需要解决语言上的UDF的兼容问题。

技术实现

Apache Flink:提供流处理和批处理的统一处理模型。它通过事件时间、状态管理和容错机制,处理流数据,并支持批处理模式。

Apache Spark:Spark的“结构化流处理”功能支持流式和批量数据的统一处理。它将流数据和批量数据看作相同的数据源,提供一致的API进行处理。

应用场景

1.实时数据分析:例如电商网站需要实时分析用户行为,以便动态调整推荐算法和营销策略。流批一体可以同时处理用户的实时点击数据和历史购买数据,提供更全面的分析。

2.金融风控:在金融领域,实时交易监控和历史交易数据分析是至关重要的。流批一体能够实时检测异常交易并结合历史数据进行全面评估。

3.网络安全:流批一体可用于实时监控网络流量和日志,检测潜在的安全威胁,并将实时数据与历史数据结合,以识别复杂的攻击模式。

4.互联网:在物联网应用中,传感器产生的实时数据需要即时处理,同时需要结合历史数据进行深度分析和预测。


http://www.ppmy.cn/embedded/138221.html

相关文章

CSS预编译器:让样式编写更高效的秘密武器(6)

在现代前端开发中,CSS 预编译器是一种非常有用的工具,它通过扩展 CSS 语言的功能,帮助开发者更高效地编写和维护样式代码。本文将介绍 CSS 预编译器的基本原理,并重点讲解 LESS 的安装和使用方法。 1. 基本原理 编写 CSS 时&…

[A-18]ARMv8/ARMv9-Memory-内存空间的属性(Attributes Properties)

ver0.1 [看前序文章有惊喜,关注“浩瀚架构师”,可以解锁全部文章] 前言 在宏伟的ARM的内存世界中VMSA中,属性这个议题算不上最亮的星,就和屏幕前的你和我一样,平凡的活在这个茫茫然的人世间。纵使“丈夫贫践应未足,今日相逢无酒钱。”,也不要灰心面对生活,因为“山重…

ODOO学习笔记(7):模块化架构(按需安装)

一、Odoo模块化架构概述 Odoo是一个功能强大的企业资源规划(ERP)系统,其模块化架构是它的核心优势之一。这种架构允许系统通过添加、移除或修改不同的模块来灵活地适应企业的各种业务需求。 核心模块与自定义模块: Odoo本身带有一…

【JavaScript】

一、概述 JavaScript 是一种机遇对象和事件驱动的,并具有安全性能的脚本语言。 作为Web开发的核心技术之一,它与HTML和CSS共同协作,HTML负责定义网页的内容结构,CSS处理样式和布局,而 JavaScript 则控制网页的行为和…

vue3+ant design vue实现日期等选择器点击右上角叉号默认将值变为null,此时会影响查询等操作~

1、效果图 2、思路&#xff1a;通过监听操作时间绑定的值是否存在&#xff0c;若存在将其改为空数组即可 3、代码&#xff1a; <a-form-item name"beginDate" label"操作日期" labelAlign"left"><a-range-picker v-model:value"…

skywalking各项指标说明

全局指标 all_p99&#xff1a;所有服务响应时间的第99百分位数&#xff08;p99&#xff09;&#xff0c;即99%的请求响应时间都小于这个值。all_p95&#xff1a;所有服务响应时间的第95百分位数&#xff08;p95&#xff09;&#xff0c;即95%的请求响应时间都小于这个值。all_…

adb 如何通过wifi连接手机

1. 电脑通过USB线连接手机 1.1手机开启开发者模式 以小米手机为例&#xff1a;连续点击OS版本系统&#xff08;设置–>我的设备–>全部参数&#xff09; 1.2在开发者模式下&#xff0c;启动允许USB安装与USB调试 操作步骤&#xff1a;设置>更多设置>开发者选项&g…

【Redis】Redis的一些应用场景及使用策略

应用的场景 Redis 是一个高性能的内存数据库&#xff0c;广泛用于各种应用场景&#xff0c;以下是一些常见的应用场景&#xff1a; 缓存&#xff1a;Redis 的高读写性能使其非常适合作为缓存层&#xff0c;存储频繁访问的数据以减少数据库负载和加快响应时间。例如&#xff0c…