Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Uber 如何为近实时特性构建可伸缩流管道?

Uber 如何为近实时特性构建可伸缩流管道?

作者头像
深度学习与Python
发布于 2021-10-13 06:34:19
发布于 2021-10-13 06:34:19
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

作者 | Uber 工程博客

译者 | Sambodhi

策划 | 赵钰莹

背 景

Uber 致力于为全球客户提供可靠的服务。要达到这个目标,我们很大程度上依靠机器学习来作出明智的决定,如预测和增益。所以,用来产生机器学习数据和特征的实时流管道已经越来越受到重视。

Uber 公司使用了 Apache Flink 来建立实时流管道,并建立像 Gairos 和 AthenaX 这样的平台来简化开发过程。但是,由于计算的复杂性或需要处理的实时数据量,仍有很多挑战,如扩展性。

本文中,我们将以生产需求和供应特征为例,介绍我们所面临的一些挑战以及如何应对这些挑战。尤其要说明的是,如何使用性能调整框架来优化实时管道。

架 构

下图显示了 Apache Flink 中的流管道负责特征计算和提取的架构。我们将在下文详细讨论这些管道。

图 1:简化的架构概述

特征计算

本节详细介绍了如何通过地理空间和时间维度以及全局产品(UberX 等)对任何给定的六边形的原始事件,例如需求和供应事件进行聚合。以下是简化的计算算法:

在一分钟窗口内,按六边形和全局产品类型计算出不同乘客和司机所发生的原始事件数量。在一分钟窗口内,将 Kring Smooth 应用多个环,最多 20 个环(稍后进行讨论)。将每一环的平滑值聚合在多个滑动窗口大小上,最长可达 32 分钟。

总的来说,一条实时管道每分钟为一个六边形生成 54 个特征,使用 9 个环(0,1,2,3,4,5,10,15,20)和 6 个窗口大小(1,2,4,8,16,32)的组合。

接下来,我们讨论算法的第二步。

Kring Smooth

Kring Smooth 过程通过向其 Kring 邻居广播一个六边形的事件计数来计算地理空间聚合。换句话说,某一特定环的六边形的特征值考虑到了该环内所有六边形的事件计数。

为了计算给定六边形 h 在环 r 上聚合的特征值,公式为:

其中, 是环 的六边形数量; 是环 的第 个六边形; 是来自六边形 的事件数。

因此,让我们看看下面的例子,看看如何计算这三个特征的值:六边形 A 的第 0 环、第 1 环和第 2 环,公式如下:

图 2:六边形 A 的第 0 环、第 1 环、第 2 环

该管道按照方程式计算出多个环形尺寸的特征值,最多可达 20。

时间聚合

在一分钟窗口的 Kring Smooth 完成后,算法的第 3 步是将平滑的事件计数在更大的窗口上聚合,最长可达 32 分钟。要计算给定的六边形 H 在更大窗口上的聚集,公式如下:

其中, 是一个窗口的起始时间戳; 是窗口的大小,以分钟为单位; 是来自 Kring Smooth 的平滑事件计数。

下图 3 展示了如何计算 2 分钟窗口的六边形 A 的特征值:

  • 和 数学公式: 窗口的 Kring Smooth 的平滑事件计数分别为 1.0 和 3.0,分别在 分钟和 分钟发出;
  • 2 分钟窗口的特征值为 2.0,通过使用平滑的事件计数,按照上述方程计算,其时间范围为 ( 分钟)。

图 3:六边形 A 的 2 分钟窗口的聚合

流实现与优化

本节以需求管道为例,说明如何在 Apache Kafka 和 Apache Flink 中实现特征计算算法,以及如何调整实时管道。

逻辑作业拓扑

下图 4 说明了计算需求特征的流管道的逻辑 DAG。对于所有尺寸大于 1 分钟的窗口来说,它们是滑动窗口,这些窗口将以 1 分钟为单位滑动,这意味着一个输入事件可能包含在 63 个窗口内:32 + 16 + 8 + 4 + 2 + 1。

图 4:需求管道的逻辑 DAG

下表列出了逻辑 DAG 中主要运算符的功能:

表 1:需求管道的逻辑运算符

流管道的数据量

本节列出了需求管道的数据量:

  • Kafka 主题的平均输入速率:120k/s
  • 六角形的计数:5M
  • 城市的数量:1500
  • 每个城市的六边形平均数和最大数:4000 和 76000
  • 1 分钟内六边形需求事件的平均计数:45
  • 环 20 的六边形计数:1261

显然,该管道具有高容量、密集的计算和大的状态需要管理。第一版实际上是按照逻辑 DAG 构建的,由于包括背压和 OOM 等问题,无法稳定运行(如下图仪表板所示)。由于我们的目标是接近实时的延迟(小于 5 分钟), 因此我们面临的真正挑战是如何建立稳定的工作通道。

内存监视器:

图 5:已用内存的仪表板

延迟监视器:

图 6:延迟的仪表板

如何优化

本节讨论如何调整流管道。Uber 已开发出一种流程管道性能调优框架,并提供端到端集成测试框架。在启动实际调整之前,Uber 就已经开发了专门的集成测试,使我们能够重构或优化流管道,并确信管道仍将产生正确的结果,类似于单元测试,保护我们免受回归。在整个优化过程中,这些集成测试变得非常有价值。

下面,我们将介绍性能调优框架。

性能调优框架

从下面的内三角可以看出,我们的框架集中在三个领域。通过 Uber uMonitor 系统提供的度量标准对网络、 CPU 和内存进行测量和监控。外五边形的顶点表示可以探索主要优化领域。

图 7:性能调优框架

下表简要解释了每个领域的技术和潜在影响:

表 2:性能调优的领域

接下来,我们讨论如何优化管道。

优化

我们对流管道进行了许多优化,一些优化技术对上述多个领域都有影响。其中一项特别的技术:自定义滑动窗口,对所有三个领域都有重大影响,所以我们有一个专门的章节来讨论它,还有一个章节讨论存储。

网络优化

主要的优化技术列于下表:

表 3:网络优化技术

正如上文所详述的,关键的改进是既提供较少的信息,也提供较小的信息。

内存优化

下表列出了内存技术:

表 4:内存优化技术

注:还包括一些用于网络优化的技术。

CPU 优化

应用于 CPU 优化的技术如下:

自定义滑动窗口

仅通过上面的调整,管道仍无法顺利运行,因为它需要数个滑动窗口 (2、4、8、16、32)进行聚合。由于需要按一个键划分事件,窗口聚合的开销如下:

  • 从上游向窗口运算符传递消息时的 De/Ser;
  • 通过网络传输消息;
  • 反序列化时正在创建的对象;
  • 窗口管理所需的状态管理和元数据,如窗口触发器。

这样的开销会对垃圾收集器、CPU 和网络造成巨大压力。更有甚者,滑动窗口比翻滚或固定尺寸的窗口需要更多的状态,因为一个事件需要保存在一系列滑动窗口中。就拿一个 4 分钟的滑动窗口来说:给定一个事件发生在 2021-01-01 T1:15:01 Z,此事件保存在下面的 4 分钟窗口中:

  • 2021-01-01T01:12:00Z ~ 2021-01-01T01:16:00Z
  • 2021-01-01T01:13:00Z ~ 2021-01-01T01:17:00Z
  • 2021-01-01T01:14:00Z ~ 2021-01-01T01:18:00Z
  • 2021-01-01T01:15:00Z ~ 2021-01-01T01:19:00Z

因为滑动窗口的扇出效应,给管道的状态管理带来很大的压力。针对这些问题,我们采用 FlatMap 运算符手工实现了滑动窗口逻辑,其特点如下:

  • 如果允许重用对象,则向上游运算符传递并重用事件,从而避免分区和相关开销。
  • 该状态在内存中被管理,因此每个事件实际上只能复制一份数据。

对于在内存中保存状态所需的最大内存,我们估计如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Total Memory = Count(Hexagon)  Count(Product)  Max(window size) * sizeof(event)

        = 3M  6  32 * 237b

                = 136G

对于 128 的并行性,每个容器的内存约为 1G,这是可管理的。在生产中,实际的内存远远低于最大值,因为不是所有的六边形都有时间范围的事件。

这个自定义滑动窗口的效率非常显著,所以我们已经成功地将这个运算符重新用于超过 5 个不同的用例,这些用例需要在多个大型滑动窗口上进行聚合。

优化后的最终作业 DAG

图 8:需求管道的最终 DAG

通过对其进行优化,最终得到了一个更简单的作业 DAG,其中自定义滑动窗口代替了较大的窗口运算符。

如下面的 24 小时仪表板所示,管道始终可靠地运行:

延迟监视器:

图 9:优化后显示延迟的仪表板

容器内存监视器:

图 10:优化后显示内存使用情况的仪表板

存储

为简化管道维护和重新使用 sink,我们对管道 DAG 进行了进一步重构,在 Flink 中将 sink 运算符分离为专门的发布器作业,并将计算和发布器作业与 Kafka 连接起来。此部分主要关注此发布器作业的细节:

而在服务模型中,它会根据地理、时间和产品的要求查询供应信息。我们选择了 Docstore (Uber 的内部 KV 商店解决方案)作为存储。

我们从一个 docstore 集群开始,它由许多用例共享。

下面是每个 API 调用插入一行的结果。写入的 QPS 在 13000 左右达到峰值,但大多数时候都是几百的数量级。

图 11:如果每个 API 调用只有一行,那么编写 QPS 就不稳定

批处理

我们尝试对这些行进行批处理写入,看看能否增加吞吐量。为使批处理更高效,我们基于 Docstore 中的分片号来划分数据。但是,应用批处理后,写入的 QPS 较低。经过深入的研究,我们发现这是因为流作业中所发出的一种度量的一个维度基数过大。我们将这一维改为常数字符串,而非随机的 UUID。写入的 QPS 可以达到 16000 左右。

在写到 Docstore 之前,我们先把数据写到 Kafka 主题。在禁用 Kafka sink 后,我们可以看到写入 QPS 增加了 10% 左右。

在我们把每个分片的批处理量改为 50 后,写的 QPS 增加了一倍,达到 34000。我们还尝试了批处理规模为 100 和 200。对于批处理大小为 100,写 QPS 增加到 37000(大约增加 20%)。

将批处理大小改为 200 后,没有发现有太大的差别。

在下表中,我们列出了不同配置下的 QPS:

表 6:不同批处理大小下的吞吐量

并行性

Flink 作业的并行性是我们为提高 QPS 而调整的另一个参数。

在将发布器作业的并行性更新为 256 后,写入的 QPS 约为 75000,增加了一倍多。批处理小为 200,在并行度为 1024 时,我们看到 QPS 达到 112000。但是,我们发现存在大量的超时错误。将批处理改为 50 后,写 QPS 约为 120000。

表 7:不同作业并行性下的吞吐量

线程池

对于每个 Flink 作业,我们也尝试使用线程池来提高写 QPS,结果如下:

表 8:不同线程池大小下的吞吐量

如果我们使用线程池大小为 16,峰值 QPS 约为 120000,但是这并不太稳定。

经过对共享集群所能想到的所有优化之后,它仍然不能达到写 QPS 的要求。为了进行测试,我们要求一个特殊的集群。

分区调优

移除 Docstoresink,仅保留 FlatMap。没有对分区器的调用,那么 64 个容器就能处理超过 200000 的输入消息率,而不会延迟。

在 FlatMap 之前,我们添加了自定义分区策略。

对于 384 个容器,延迟时间大约是 12 分钟。分区器的延迟范围为 0.2~5 毫秒。当增加到 512 个容器时,延迟降低到 3 分钟。随后,我们发现每个分区器调用的 0.2 毫秒成为瓶颈。在 flatmap 中,我们添加了本地分区器调用缓存。20 分钟后,缓存的点击率类似于输入信息率。

但是,延迟性仍在增加:

图 12:作业延迟现象持续增加

背压处于自定义分区阶段。

图 13:作业和背压的拓扑处于自定义分区阶段

将并行性更新为 128,有效地消除了管道中的任何延迟性。每个 DC 都可以写入 300000 QPS,没有任何问题。

数据大小

我们尝试了 3 种不同的模式来观察数据大小的差异。第一种模式为每个(环的大小,时间桶,供应 / 需求)元组使用一个列。第二种模式为需求和供应各使用一张地图。第三种是将颗粒度为 9 级的 7 个六边形分组为一行。

通过 6 天的数据,我们得到的数据大小如下:

表 9:不同数据模式下的压缩

在启用压缩之后,我们可以看到 3 个表可以节省大约 60% 的磁盘。

服务

在测试过程中,我们发现了一些延迟问题。P99 大约有 150 毫秒的延迟。在我们的定价工作流程中,这是不能接受的。经过调试,我们发现每个分区键都有许多行——大约 6000。这就是说,数据库引擎需要扫描至少 6000 行,然后在查询中应用传递的过滤。当分区键大小增加时,就会周期性地出现 200 毫秒的峰值。但我们知道 TTL 也是为这个表设置的,因此我们所做的就是在 Query 中部署一个热补丁,将结果限制在只有未过期的行上,然后应用查询中传递的过滤。这样降低了对底层引擎的扫描,而 P99 延迟降低到 10 毫秒。

图 14:优化之后,服务延迟从 150 毫秒下降到 10 毫秒

结 论

考虑到计算逻辑的复杂性、写吞吐量、服务 SLA 等因素,为具有近实时特性的机器学习模型提供性能非常具有挑战性。通过本文,我们介绍了我们所面临的问题和解决方法,希望对类似用例的同行们有所帮助。

作者介绍:

Feng Xu,Uber 高级软件工程师,领导 Gairos、uMetric 的流计算框架。

Gang Zhao,Uber 前高级软件工程师,负责 Gairos 优化、UMetric 消费,同时专注于存储层 Elasticsearch、Apache Pinot、Apache Cassandra、Docstore 和查询层优化。

原文链接:

https://eng.uber.com/building-scalable-streaming-pipelines/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Uber 如何为近实时特性构建可伸缩流管道?
Uber 致力于为全球客户提供可靠的服务。要达到这个目标,我们很大程度上依靠机器学习来作出明智的决定,如预测和增益。所以,用来产生机器学习数据和特征的实时流管道已经越来越受到重视。
Spark学习技巧
2022/01/13
8590
Uber 如何为近实时特性构建可伸缩流管道?
用近乎实时的分析来衡量Uber货运公司的指标
◆ 简介 虽然大多数人都熟悉Uber,但并非所有人都熟悉优步货运, 自2016年以来一直致力于提供一个平台,将托运人与承运人无缝连接。我们正在简化卡车运输公司的生活,为承运人提供一个平台,使其能够浏览所有可用的货运机会,并通过点击一个按钮进行预订,同时使履行过程更加可扩展和高效。 为托运人提供可靠的服务是优步货运获得他们信任的关键。由于承运人的表现可能会大大影响货运公司服务的可靠性,我们需要对承运人透明,让他们知道我们对他们负责的程度,让他们清楚地了解他们的表现,如果需要,他们可以在哪些方面改进。 为了实现
IT大咖说
2022/09/28
5870
用近乎实时的分析来衡量Uber货运公司的指标
Uber 大规模运行 Apache Pinot实践
Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。使用它实现低延迟可伸缩的实时分析。Pinot 从脱机数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中获取数据进行分析。Pinot 被设计成可进行水平扩展。Pinot 特别适合这样的数据分析场景:查询具有大量维度和指标的时间序列数据、分析模型固定、数据只追加以及低延迟,以及分析结果可查询。本文介绍了 Pinot 在 Uber 的应用情况。
深度学习与Python
2020/11/06
9580
Uber 大规模运行 Apache Pinot实践
Structured Streaming | Apache Spark中处理实时数据的声明式API
随着实时数据的日渐普及,企业需要流式计算系统满足可扩展、易用以及易整合进业务系统。Structured Streaming是一个高度抽象的API基于Spark Streaming的经验。Structured Streaming在两点上不同于其他的Streaming API比如Google DataFlow。 第一,不同于要求用户构造物理执行计划的API,Structured Streaming是一个基于静态关系查询(使用SQL或DataFrames表示)的完全自动递增的声明性API。 第二,Structured Streaming旨在支持端到端实时的应用,将流处理与批处理以及交互式分析结合起来。 我们发现,在实践中这种结合通常是关键的挑战。Structured Streaming的性能是Apache Flink的2倍,是Apacha Kafka 的90倍,这源于它使用的是Spark SQL的代码生成引擎。它也提供了丰富的操作特性,如回滚、代码更新、混合流\批处理执行。 我们通过实际数据库上百个生产部署的案例来描述系统的设计和使用,其中最大的每个月处理超过1PB的数据。
王知无-import_bigdata
2020/01/14
2K0
Structured Streaming | Apache Spark中处理实时数据的声明式API
Flink流式处理概念简介
一,抽象层次 Flink提供不同级别的抽象来开发流/批处理应用程序。 1,stateful streaming 最底层。它通过Process Function嵌入到DataStream API中。它允
Spark学习技巧
2018/01/30
2K0
Flink流式处理概念简介
Apache Kafka - 流式处理
Kafka被广泛认为是一种强大的消息总线,可以可靠地传递事件流,是流式处理系统的理想数据来源。流式处理系统通常是指一种处理实时数据流的计算系统,能够对数据进行实时的处理和分析,并根据需要进行相应的响应和操作。与传统的批处理系统不同,流式处理系统能够在数据到达时立即进行处理,这使得它们特别适合需要实时响应的应用程序,例如实时监控和警报、实时推荐、实时广告投放等。
小小工匠
2023/06/10
7350
Apache Kafka - 流式处理
Flink 如何现实新的流处理应用第一部分:事件时间与无序处理
流数据处理正处于蓬勃发展中,可以提供更实时的数据以实现更好的数据洞察,同时从数据中进行分析的流程更加简化。在现实世界中数据生产是一个连续不断的过程(例如,Web服务器日志,移动应用程序中的用户活跃,数据库事务或者传感器读取的数据)。正如其他人所指出的,到目前为止,大部分数据架构都是建立在数据是有限的、静态的这样的基本假设之上。为了缩减连续数据生产和旧”批处理”系统局限性之间的这一根本差距,引入了复杂而脆弱(fragile)的端到端管道。现代流处理技术通过以现实世界事件产生的形式对数据进行建模和处理,从而减轻了对复杂解决方案的依赖。
smartsi
2022/01/18
9550
Flink 如何现实新的流处理应用第一部分:事件时间与无序处理
Apache Hudi | 统一批和近实时分析的增量处理框架
随着Apache Parquet和Apache ORC等存储格式以及Presto和Apache Impala等查询引擎的发展,Hadoop生态系统有潜力作为面向分钟级延时场景的通用统一服务层。然而,为了实现这一点,这需要在HDFS中实现高效且低延迟的数据摄取及数据准备。
王知无-import_bigdata
2020/02/10
3K0
穿梭时空的实时计算框架——Flink对时间的处理
Flink对于流处理架构的意义十分重要,Kafka让消息具有了持久化的能力,而处理数据,甚至穿越时间的能力都要靠Flink来完成。
用户6070864
2019/09/04
7940
穿梭时空的实时计算框架——Flink对时间的处理
Uber基于Apache Hudi构建PB级数据湖实践
从确保准确预计到达时间到预测最佳交通路线,在Uber平台上提供安全、无缝的运输和交付体验需要可靠、高性能的大规模数据存储和分析。2016年,Uber开发了增量处理框架Apache Hudi,以低延迟和高效率为关键业务数据管道赋能。一年后,我们开源了该解决方案,以使得其他有需要的组织也可以利用Hudi的优势。接着在2019年,我们履行承诺,进一步将其捐赠给了Apache Software Foundation,差不多一年半之后,Apache Hudi毕业成为Apache Software Foundation顶级项目。为纪念这一里程碑,我们想分享Apache Hudi的构建、发布、优化和毕业之旅,以使更大的大数据社区受益。
ApacheHudi
2021/04/13
1K0
五万字 | Flink知识体系保姆级总结
一、Flink简介 二、Flink 部署及启动 三、Flink 运行架构 四、Flink 算子大全 五、流处理中的 Time 与 Window 六、Flink 状态管理 七、Flink 容错 八、Flink SQL 九、Flink CEP 十、Flink CDC 十一、基于 Flink 构建全场景实时数仓 十二、Flink 大厂面试题
五分钟学大数据
2021/09/22
4.6K0
Flink 使用Flink进行高吞吐,低延迟和Exactly-Once语义流处理
在本文中,我们将深入探讨Flink新颖的检查点机制是如何工作的,以及它是如何取代旧架构以实现流容错和恢复。我们在各种类型的流处理应用程序上对Flink性能进行测试,并通过在Apache Storm(一种广泛使用的低延迟流处理器)上运行相同的实验来进行对比。
smartsi
2019/08/07
6K0
Flink 使用Flink进行高吞吐,低延迟和Exactly-Once语义流处理
Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)
流式:就是数据源源不断的流进来,也就是数据没有边界,但是我们计算的时候必须在一个有边界的范围内进行,所以这里面就有一个问题,边界怎么确定? 无非就两种方式,根据时间段或者数据量进行确定,根据时间段就是每隔多长时间就划分一个边界,根据数据量就是每来多少条数据划分一个边界,Flink 中就是这么划分边界的,本文会详细讲解。
五分钟学大数据
2021/01/25
1.5K0
Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)
实时计算大数据处理的基石-Google Dataflow
此文选自Google大神Tyler Akidau的另一篇文章:Streaming 102: The world beyond batch
用户6070864
2019/08/27
1.2K0
实时计算大数据处理的基石-Google Dataflow
超越批处理的世界:流计算
今日,流式数据处理是大数据里的很重要一环。原因有不少,其中包括: 商业(竞争)极度渴望更快的数据,而转换成流计算则是一个好的方法来降低延迟。 海量的、无穷数据集在现在的商业环境里变的越来越常见,而用专门设计来处理这样数据的系统来应对这些数据则更为容易。 在数据到达时就对他们进行处理能够更加平均地把负载进行均衡,取得更好的一致性和更可预测的计算资源消耗。 尽管业务驱动带来了对流计算兴趣的猛增,但绝大部分现有的流计算系统相比于批处理还不够成熟,而后者已经产生了很多令人激动的、多产的应用。 作为从事海量大规模流计
大数据文摘
2018/05/24
1K0
Flink基础教程
第 1 章 为何选择 Flink 许多情况下,人们希望用低延迟或者实时的流处理来获得数据的高时效性,前提是流处理本身是准确且高效的 优秀的流处理技术可以容错,而且能保证exactlyonce2 Storm提供了低延迟的流处理,但是它为实时性付出了一些代价:很难实现高吞吐,并且其正确性没能达到通常所需的水平。换句话说,它并不能保证exactlyonce;即便是它能够保证的正确性级别,其开销也相当大 图12:Flink的一个优势是,它拥有诸多重要的流式计算功能。其他项目为了实现这些功能,都不得不付出代价。比如,
yeedomliu
2021/12/01
1.2K0
Flink基础教程
基于Hadoop的统一数据服务层演进与Hudi技术的前世今生
随着Apache Parquet和Apache ORC等存储格式以及Presto和Apache Impala等查询引擎的发展,Hadoop生态系统有潜力成为容忍几分钟延迟的通用统一服务层。然而,这需要Hadoop分布式文件系统(HDFS)实现高效低延迟的数据摄入和准备。
用户9421738
2025/03/28
490
基于Hadoop的统一数据服务层演进与Hudi技术的前世今生
Apache Flink:数据流编程模型
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
王小雷
2019/09/18
1.4K0
Apache Flink:数据流编程模型
大数据架构模式
大数据架构的目的是处理传统数据库系统无法处理的过大或复杂的数据的摄取、处理和分析。
35岁程序员那些事
2020/02/24
1.5K0
Flink 入门教程
大数据是近些年才出现的吗,人们是近些年才发现大数据的利用价值的吗?其实不然,早在几十年前,数学分析就已经涉猎金融行业了,人们依托于金融和数学知识来建立数学模型,利用金融市场所产的数据来预测金融市场产品收益同风险波动的关系。 到如今,互联网也发展了好些年了,越来越多的数据产生(用户浏览数据、搜索记录、出行记录、消费记录;农作物的成长观察记录;病人的医疗记录等),各行业也开始慢慢的重视起这些数据记录,希望通过对这些数据的分析处理从而得到相应的利益和研究价值。
全栈程序员站长
2022/07/21
9650
Flink 入门教程
相关推荐
Uber 如何为近实时特性构建可伸缩流管道?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验