活动介绍

使用ApacheFlink创建运营洞察

立即解锁
发布时间: 2025-08-30 01:42:07 阅读量: 3 订阅数: 11 AIGC
### 使用 Apache Flink 创建运营洞察 Amazon Kinesis Data Analytics for Apache Flink 使我们能够超越 SQL,使用 Java 或 Scala 作为编程语言,并利用数据流 API 构建分析应用程序。接下来我们将重点介绍 KDA for Flink。 如果您不熟悉 Apache Flink,建议您先阅读 Flink 概述:[https://ci.apache.org/projects/flink/flink-docs-release-1.11/learn-flink/](https://ci.apache.org/projects/flink/flink-docs-release-1.11/learn-flink/)。 #### KDA SQL 与 KDA Flink 的比较 创建 KDA for Flink 应用程序时,与 KDA SQL 有相同之处,也有一些不同,如下表所示: | 对比项 | KDA SQL | KDA Flink | | --- | --- | --- | | 编程语言 | SQL | Java 或 Scala | | 跨账户功能 | 不支持 | 支持多种方式实现 | | 数据源 | - | 可处理非 AWS 数据源,如 Kafka | | 语义支持 | - | 支持 Exactly-once 语义 | | 灵活性 | 相对较低 | 更高,有更多选项 | KDA Flink 应用程序具有更多选项和灵活性,这在选择使用哪个引擎时可能是一个决定性因素。例如,公司通常有多个 AWS 账户,数据流会跨越这些账户。在 AWS 跨账户共享和数据流消费方面,基于 SQL 的 Kinesis Data Analytics 应用程序目前不支持该功能。假设我们有两个 AWS 账户 Account01 和 Account02,实现跨账户功能有以下三种选择: 1. **Java 应用程序**:设置一个 Java 应用程序,从 Account01 的 Kinesis 数据流中读取数据,然后写入 Account02 的 Kinesis 数据流。SQL KDA 应用程序将在 Account02 中运行,并处理该账户中 Kinesis 数据流的数据。示例可参考:[https://docs.aws.amazon.com/kinesisanalytics/latest/java/get-started-exercise.html#get-started-exercise-5](https://docs.aws.amazon.com/kinesisanalytics/latest/java/get-started-exercise.html#get-started-exercise-5)。 2. **AWS Lambda**:使用 AWS Lambda 将数据从 Account01 数据流移动到 Account02 数据流。该解决方案与第一个类似,关键区别在于使用 Lambda 而不是编写 Java KDA 应用程序。解决方案可参考:[https://github.com/awslabs/kinesis-aggregation/blob/master/java/KinesisLambdaForwarder/README.md](https://github.com/awslabs/kinesis-aggregation/blob/master/java/KinesisLambdaForwarder/README.md)。 3. **Flink 应用程序**:不使用 SQL KDA,而是切换到基于 Flink 的应用程序:[https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html)。 #### KDA Flink 处理非 AWS 数据源 KDA for Flink 应用程序可以调用 Kafka 或其他 Flink 连接器支持的非 AWS 部署的数据源,这些数据源可以是本地的,也可以来自不同的云提供商。这些资源必须对 KDA 可访问,我们需要正确配置防火墙和安全性。 Kinesis 数据流本身不提供 Exactly-once 语义。有一些解决方法,例如在消费者应用程序中使用 DynamoDB、S3 或 ElasticCache 来检查和避免重复数据。我们可以使用 KDA for Flink 实现 Exactly-once 语义,因为 Flink 本身支持该功能。KDA 会开启 Flink 的 Exactly-once 检查点配置,确保检查点持久化到 S3 等持久存储中。Exactly-once 处理会带来一定开销,无论在 EKS 还是 KDA 上运行 Flink 都是如此。在使用 Exactly-once 交付功能之前,请确保了解其对应用程序的影响。有关 Flink 的 Exactly-once 语义的详细信息,请参考:[https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html](https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html)。 #### 在 AWS 云中运行 Flink 应用程序的选项 除了在 KDA 上运行 Flink 应用程序外,在 AWS 云中还有其他一些选项,这取决于我们想要的灵活程度。以下是不同方法运行 Flink 应用程序的责任划分: | 运行方式 | 灵活性 | 自动缩放 | 管理难度 | | --- | --- | --- | --- | | 自建 EC2 实例 | 最高 | 需自行实现 | 高 | | Amazon EKS | 较高 | 内置,可通过 CLI 或控制台设置阈值 | 中 | | Amazon EMR | 较高 | 内置,可通过 CLI 或控制台设置阈值 | 中 | | KDA for Flink | 低 | 可配置,自动缩放会覆盖部分并行度设置 | 低 | 运行自己的 EC2 实例并为 Flink 应用程序提供自己的运行时,提供了最大程度的灵活性,但也需要我们付出最多的努力。对于 EC2 实例,自动缩放需要我们自己实现,即输出 Flink 指标,创建阈值和缩放策略。而 Amazon EKS 和 Amazon EMR 为底层资源内置了自动缩放功能,我们可以通过 CLI 或控制台设置阈值。 EMR 最近宣布能够在 EKS 上运行大数据作业,现在我们可以使用 EMR 而无需担心管理底层 Kubernetes 集群。 KDA for Flink 则由 AWS 完全管理,从我们的角度来看是完全无服务器的(无需担心服务器或存储)。由于 AWS 负责管理 Flink 集群,我们无法直接使用 Flink 的 REST API 管理作业。 #### KDA 上的 Flink 应用程序 KDA Flink 引擎架构与 KDA SQL 不同,KDA Flink 实际上作为 Kubernetes 集群运行。下面我们来逐步了解数据流和核心组件: ```mermaid graph LR classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px; A(API 层):::process --> B(生命周期管理):::process B --> C(创建 IAM 角色):::process B --> D(创建 EKS 集群和工作节点):::process D --> E(加载 Flink 应用程序):::process E --> F(监控和缩放组件):::process ``` 1. **API 层交互**:我们通过 API 层与 KDA for Flink 进行交互。AWS 控制台和 AWS CLI 使用相同的 API,可在 AWS CloudTrail 中查看。API 层接收我们的请求(如 CreateApplication)及参数,并将其作为元数据存储在 DynamoDB 表中。Flink 和 SQL 两个 KDA 引擎的控制平面架构是共享的。 2. **生命周期管理**:接管并协调后续步骤。KDA 获取元数据后,会创建 KDA 应用程序可以承担的 IAM 角色,我们也可以预先创建该角色并将其作为元数据的一部分提供。 3. **启动应用程序**:调用 StartApplication API 时,生命周期管理器将通过创建 EKS 集群和工作节点来实例化 Flink 应用程序的基础设施。Flink 应用程序有自己的 EKS 集群,此配置在 Kubernetes 网络级别提供了 KDA 应用程序的网络隔离。我们可以在开发和生产两种模板中选择,模板定义了诸如是否自动启用快照、每个 KPU 的并行度和日志级别等设置。KDA 将从 S3 加载我们的 Flink 应用程序,应用程序 JAR 文件的最大大小为 512 MB。 在编写本文时,KDA 支持 Flink 1.11.1,要部署 Flink JAR,必须使用 Maven 3.1 进行构建。 KDA 根据模板设置为 Flink 应用程序调整 EKS 集群大小。KDA 使用 Kinesis 处理单元(KPU),每个 KPU 包含 1 个 vCPU、4 GB 内存和 50 GB 存储,基本应用程序从 1 个 KPU 开始。KDA 会为运行应用程序所需的其他组件使用单独的核心,并为我们加载所有相关的 Flink 库。每个 KDA KPU 获得 3 GiB 的 JVM 堆,其余内存分配给 KDA 管理组件。KDA 使用 KMS 对静态数据和传输中的数据进行加密,每个应用程序都会生成 KMS 密钥。 KDA 代表我们管理 Flink 应用程序的整个生命周期,在更新 Flink 应用程序时会自动进行保存点(KDA 术语为快照)。KDA 最多维护 1000 个保存点,以便在需要时恢复。KDA 应用程序通常需要跟踪状态,例如使用窗口时。KDA 会在某处聚合数据并保留窗口状态。激活检查点时,KDA 会跟踪状态。Flink 本身有三种状态存储:MemoryStateBackend(在 Java 堆中维护状态)、FsStateBackend(在文件系统中维护状态)和 RocksDBStateBackend(在 RocksDB 数据库中存储状态)。KDA 的状态后端是 RocksDB 和 S3,由 KDA 完全管理。有关 RocksDBStateBackend 的更多信息,请参考:[https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/state_backends.html#the-rocksdbstatebackend](https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/state_backends.html#the-rocksdbstatebackend
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

勃斯李

大数据技术专家
超过10年工作经验的资深技术专家,曾在一家知名企业担任大数据解决方案高级工程师,负责大数据平台的架构设计和开发工作。后又转战入互联网公司,担任大数据团队的技术负责人,负责整个大数据平台的架构设计、技术选型和团队管理工作。拥有丰富的大数据技术实战经验,在Hadoop、Spark、Flink等大数据技术框架颇有造诣。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

自适应复杂网络结构中的同步现象解析

# 自适应复杂网络结构中的同步现象解析 ## 1. 引言 在复杂的动力学网络中,同步现象一直是研究的重点。我们将主稳定性方法拓展到由 $N$ 个扩散且自适应耦合的振荡器组成的复杂网络中。通过对自适应耦合相位振荡器这一典型模型的研究,我们发现了由于稳定性岛屿的存在而导致的多簇现象的出现。接下来,我们将深入探讨相关内容。 ## 2. 自适应耦合振荡器网络模型 考虑一个由 $N$ 个扩散且自适应耦合的振荡器组成的网络,其形式如下: \(\dot{x}_i = f (x_i(t)) - \sigma \sum_{j = 1}^{N} a_{ij} \kappa_{ij} G(x_i - x_j)\

具有多重时滞和不确定参数的CRDNNs的无源性与同步性研究

# 具有多重时滞和不确定参数的 CRDNNs 的无源性与同步性研究 ## 1. 引言 在神经网络的研究领域中,具有多重时滞和不确定参数的连续反应扩散神经网络(CRDNNs)的无源性和同步性是重要的研究课题。无源性能够保证系统的稳定性和能量特性,而同步性则在信息处理、通信等领域有着广泛的应用。本文将深入探讨 CRDNNs 的无源性和同步性相关问题,包括理论分析和数值验证。 ## 2. 无源性判据 ### 2.1 输出严格无源性条件 当满足以下矩阵不等式时,网络(9.17)具有输出严格无源性: \[ \begin{bmatrix} W_6 & \Xi_2 \\ \Xi_2^T & W_7 \e

HNPU-V1:自适应DNN训练处理器的技术解析与性能评估

### HNPU-V1:自适应DNN训练处理器的技术解析与性能评估 在深度学习领域,DNN(深度神经网络)训练处理器的性能对于提高训练效率和降低能耗至关重要。今天我们要介绍的HNPU - V1就是一款具有创新性的自适应DNN训练处理器,它采用了多种先进技术来提升性能。 #### 1. 稀疏性利用技术 在DNN训练过程中,会出现输入或输出稀疏性的情况。传统的输出零预测方法虽然可以同时利用输入和输出稀疏性,但会带来面积和能量开销。而HNPU - V1采用了独特的稀疏性利用技术。 ##### 1.1 切片级输入跳过(Slice - Level Input Skipping) - **原理**:

利用大数据进行高效机器学习

### 利用大数据进行高效机器学习 #### 1. 集群管理与并行计算基础 在处理大数据时,集群的使用至关重要。当集群任务完成后,终止其派生的进程能释放每个节点占用的资源,使用如下命令: ```R stopCluster(cl1) ``` 对于大规模的大数据问题,还可以进行更复杂的`snow`配置,例如配置Beowulf集群(由多个消费级机器组成的网络)。在学术和行业研究中,若有专用计算集群,`snow`可借助`Rmpi`包访问高性能消息传递接口(MPI)服务器,但这需要网络配置和计算硬件方面的知识。 #### 2. 使用`foreach`和`doParallel`实现并行计算 `fore

网络数据上的无监督机器学习

### 网络数据上的无监督机器学习 在处理图数据时,机器学习(ML)并非必需,但它能带来很大的帮助。不过,ML的定义较为模糊,例如社区检测算法虽能自动识别网络中的社区,可被视为无监督ML,但NetworkX提供的一些方法虽类似却未得到数据科学界同等关注,因为它们未被明确称为图ML。 #### 1. 网络科学方法 在处理图数据时,有很多已掌握的方法可避免使用所谓的图ML: - **社区识别**:可以使用Louvain算法或直接查看连通分量。 - **枢纽节点识别**:使用PageRank算法,无需嵌入。 - **孤立节点识别**:使用`k_corona(0)`,无需ML。 - **训练数据创

OpenVX:跨平台高效编程的秘诀

### OpenVX:跨平台高效编程的秘诀 #### 1. OpenCL 互操作性扩展 OpenCL 互操作性扩展为 OpenVX 内的应用程序和用户算法提供了高效实现的支持,具备以下六个关键特性: - 共享一个通用的 `cl_context` 对象,供 OpenVX 和 OpenCL 应用程序使用。 - 共享一组有序的 `cl_command_queue` 对象,用于 OpenVX 和 OpenCL 应用程序/用户内核之间的协调。 - 允许 OpenCL 应用程序将 `cl_mem` 缓冲区导出到 OpenVX。 - 允许 OpenCL 应用程序从 OpenVX 收回导出的 `cl_mem

计算机视觉中的概率图模型:不完整数据下的贝叶斯网络学习

# 计算机视觉中的概率图模型:不完整数据下的贝叶斯网络学习 在计算机视觉领域,概率图模型是一种强大的工具,可用于处理复杂的概率关系。当数据不完整时,贝叶斯网络(BN)的参数学习和结构学习变得更具挑战性。本文将介绍不完整数据下BN参数学习和结构学习的方法。 ## 1. 不完整数据下的BN参数学习 在不完整数据中,变量 $Z_m$ 可能随机缺失或始终缺失。与完整数据情况类似,不完整数据下的BN参数学习也可通过最大似然法或贝叶斯法实现。 ### 1.1 最大似然估计 最大似然估计(ML)需要通过最大化边际似然来找到BN参数 $\theta = \{\theta_n\}_{n=1}^N$: $$

SSH连接与操作全解析

# SSH 连接与操作全解析 ## 1. SSH 主机密钥概述 当 SSH 客户端首次连接到远程主机时,双方会交换临时公钥,以此对后续通信进行加密,防止信息泄露。客户端在披露更多信息之前,需要确认远程服务器的身份。这是合理的,因为若连接到的是黑客软件,我们肯定不希望泄露用户名和密码。 ### 1.1 公钥基础设施的问题 构建公钥基础设施是解决互联网机器身份验证的一种方法。首先要确定证书颁发机构,将其公钥列表安装到所有浏览器和 SSL 客户端中,然后付费让这些机构验证身份并签署 SSL 证书,最后将证书安装到 Web 服务器上。但从 SSH 的角度看,这种方法存在诸多问题。虽然可以创建内部公

语音情感识别:预加重滤波器与清音影响分析

### 语音情感识别:预加重滤波器与清音影响分析 在语音情感识别领域,多种因素会影响识别的准确性和性能。本文将深入探讨预加重滤波器、清音去除等因素对语音情感分类的影响,并通过一系列实验来揭示不同特征向量大小、帧大小等参数在不同数据库中的表现。 #### 1. 清音去除 在语音情感识别中,通常会使用浊音和清音进行情感识别。然而,清音往往与语音信号记录中的噪声或静音区域具有相似的时间和频谱特征。为了探索去除清音后分类阶段的性能,我们使用自相关函数来去除每一帧中的清音。 具体步骤如下: 1. **自相关函数定义**:对于信号 $x(n)$ 从样本 $n$ 开始的一帧,其短时自相关函数定义为 $

言语节奏与大脑定时模式:探索神经机制与应用

# 言语节奏与大脑定时模式:探索神经机制与应用 ## 1. 大脑的预测性与时间维度 人类大脑是一个具有建设性的器官,它能够生成预测以调节自身功能,并持续适应动态环境。在这个过程中,运动和非运动行为的时间维度正逐渐被视为预测性偏差的关键组成部分。然而,编码、解码和评估时间信息以产生时间感和控制感觉运动定时的神经机制之间的复杂相互作用,仍然大部分是未知的。 ### 1.1 事件的时间与类型维度 个体和环境中的所有状态变化都会产生由类型(“是什么”)和时间(“何时”)定义的事件。为了成功地与不断变化的环境进行交互,人们需要不断适应这些事件的“是什么”和“何时”维度。人类不仅会对事件做出反应,还会