百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Amazon Kinesis Firehose-简单,高扩展性的数据摄入

liuian 2025-04-29 02:06 28 浏览

两年前,我们引入了 Amazon Kinesis,现在我们称之为Kinesis Streams,使你能够构建应用,以很高的吞吐量来收集,处理和分析流数据。我们想使你不用考虑构建和运行摄入服务器舰队或担忧监控,伸缩或交付可靠性。

Amazon Kinesis Firehose是为特定用途构建的,旨在使你能够更轻松地将流数据加载到AWS中。你仅仅创建一个交付流,将其路由到一个Amazon Simple Storage Service (S3)桶中和/或一个Amazon Redshift表中,将记录(每条记录最大1000KB)写入到流中。在这些场景背后,Firehose 将会为你料理好监控,伸缩,和数据管理所有这些方面。

再一次(我从不厌烦说这句),你可以花费更多的时间聚焦于你的应用,耗费较少的时间在基础设施上。

Firehose 内部机制

为了使事情保持简单,Firehose 不以任何方式对原始数据进行翻译或处理。你仅仅创建一个交付流,将数据记录写入该流中。在任何应要求而进行的压缩(客户端侧)和加密(服务器侧)后,记录被写入你指定的一个S3桶中。正如我的同事 James Hamilton(在其他语境中)喜欢说的那样,“它是那样地简单。”如果有必要,你甚至可以控制数据流缓冲区大小和缓冲间隔。

如果你的客户端代码在将记录送到Firehose 前对单个的逻辑记录进行隔离,它可以添加一个分隔符。否则,你可以稍后,一旦数据进入到云中,再识别记录的界限。

你的数据在S3中存储后,你有多种选择对其进行分析和处理。例如,你可以将一个 AWS Lambda函数附加到桶中,在对象到达桶中时对其进行处理。或者,你可以将你既存的Amazon EMR任务指向该桶,不需对任务做任何改动即可使其处理最新数据。

你也可以使用Firehose ,将你的数据路由到一个 Amazon Redshift集群。在Firehose 将你的原始数据存储到S3对象中后,它可以在每一个对象中调用一个RedshiftCOPY命令。这一命令很灵活,使你能够导入和处理多种格式(CVS,JSON,AVRO等等)的数据,仅隔离和存储筛选的列,将数据从一种类型转换为另一种类型,等等。

Firehose特性在控制台中的使用

你可以在 AWS Management Console(AWS管理控制台),AWS Command Line Interface (CLI,AWS命令行界面),或通过Firehose API完成以上功能。

让我们使用Firehose 控制台来创建一个交付流。我仅仅打开控制台,点击Create Delivery Stream。然后,我给我的交付流赋予了一个名称,选择了一个S3桶(或者创建一个新桶),创建一个IAM角色以便Firehose有权限向桶中写入数据:

我可以为交付流配置时延和压缩操作。我也可以选择使用我的一个 AWS Key Management Service(KMS,密钥管理业务)密钥加密数据:

一旦我的交付流创建完毕,我就可以在控制台中看到它了。

发布到一个交付流

下面是一些简单的Java代码,用来将一条记录(字符串“some data”)发布到我的流中:

PutRecordRequest putRecordRequest = new PutRecordRequest; 
putRecordRequest.setFirehoseName("incoming-stream"); 

String data = "some data" + "\n"; // add \n as a record separator 
Record record = new Record; 
record.setData(ByteBuffer.wrap(data.getBytes(StandardCharsets.UTF_8))); 

putRecordRequest.setRecord(record); 
firehoseClient.putRecord(putRecordRequest);

下面是在使用CLI环境下将记录发布到流中所使用的代码:

$ aws firehose put-record --delivery-stream-name incoming-stream --record Data="some data\n"

我们也提供了一个运行Linux 操作系统的代理。可以配置该代理监控另一个日志文件,并将它们路由到Firehose。

监控Kinesis Firehose 交付流

你可以在控制台中监控你的每一个交付流的CloudWatch 测量指标:

特性有关的数值

单个的交付流可以伸缩,每个小时可容纳多个十亿字节的数据。默认情况下,每一个流每秒可支持2500次对PutRecord或PutRecordBatch的调用,每个AWS账户你可以有多达五个流(这两个值都是管理者设置的限制,根据请求可以增加,所以只问问你是否需要设置更大的数值)。

该特性现在已可用了,你今天就可以开始使用它了。它是根据每个Firehose 摄入的数据量的大小定价的。

相关推荐

eino v0.4.5版本深度解析:接口类型处理优化与错误机制全面升级

近日,eino框架发布了v0.4.5版本,该版本在错误处理、类型安全、流处理机制以及代理配置注释等方面进行了多项优化与修复。本次更新共包含6个提交,涉及10个文件的修改,由2位贡献者共同完成。本文将详...

SpringBoot异常处理_springboot异常注解

在SpringBoot中,异常处理是构建健壮、可维护Web应用的关键部分。良好的异常处理机制可以统一返回格式、提升用户体验、便于调试和监控。以下是SpringBoot中处理异常的完整指...

Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)

这回对线上容器服务器的流水线进行了一定的改造来满足目前线上的需求,还是会将所有的自动化脚本都放置到代码库中统一管理,我感觉一章不一定写的完,所以先给标题加了个-1,话不多说开干1.本次流水线的流程设计...

告别宕机!零基础搭建服务器监控告警系统!小白也能学会!

前言本文将带你从零开始,一步步搭建一个完整的服务器指标监控与邮件告警系统,使用的技术栈均为业界主流、稳定可靠的开源工具:Prometheus:云原生时代的监控王者,擅长指标采集与告警规则定义Node_...

httprunner实战接口测试笔记,拿走不谢

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01开始安装跟创建项目pipinstallhttprunne...

基于JMeter的性能压测平台实现_jmeter压测方案

这篇文章已经是两年前写的,短短两年时间,JMeter开源应用技术的发展已经是翻天覆地,最初由github开源项目zyanycall/stressTestPlatform形成的这款测试工具也开始慢...

12K+ Star!新一代的开源持续测试工具!

大家好,我是Java陈序员。在企业软件研发的持续交付流程中,测试环节往往是影响效率的关键瓶颈,用例管理混乱、接口调试复杂、团队协作不畅、与DevOps流程脱节等问题都能影响软件交付。今天,给大家...

Spring Boot3 中分库分表之后如何合并查询

在当今互联网应用飞速发展的时代,数据量呈爆发式增长。对于互联网软件开发人员而言,如何高效管理和查询海量数据成为了一项关键挑战。分库分表技术应运而生,它能有效缓解单库单表数据量过大带来的性能瓶颈。而在...

离线在docker镜像方式部署ragflow0.17.2

经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。1、下载基础镜像根据docker-compose-base.yml及docker-compose.yml中的i...

看,教你手写一个最简单的SpringBoot Starter

何为Starter?想必大家都使用过SpringBoot,在SpringBoot项目中,使用最多的无非就是各种各样的Starter了。那何为Starter呢?你可以理解为一个可拔插式...

《群星stellaris》军事基地跳出怎么办?解决方法一览

《群星stellaris》军事基地跳出情况有些小伙伴出现过这种情况,究竟该怎么解决呢?玩家“gmjdadk”分享的自己的解决方法,看看能不能解决。我用英文原版、德语、法语和俄语四个版本对比了一下,结果...

数据开发工具dbt手拉手教程-03.定义数据源模型

本章节介绍在dbt项目中,如何定义数据源模型。定义并引入数据源通过Extract和Load方式加载到仓库中的数据,可以使用dbt中的sources组件进行定义和描述。通过在dbt中将这些数据集(表)声...

docker compose 常用命令手册_docker-compose init

以下是DockerCompose常用命令手册,按生命周期管理、服务运维、构建配置、扩缩容、调试工具分类,附带参数解析、示例和关键说明,覆盖多容器编排核心场景:一、生命周期管理(核心命令...

RagFlow与DeepSeek R1本地知识库搭建详细步骤及代码实现

一、环境准备硬件要求独立显卡(建议NVIDIAGPU,8GB显存以上)内存16GB以上,推荐32GB(处理大规模文档时更高效)SSD硬盘(加速文档解析与检索)软件安装bash#必装组件Docker...

Docker Compose 配置更新指南_docker-compose配置

高效管理容器配置变更的最佳实践方法重启范围保留数据卷适用场景docker-composeup-d变更的服务常规配置更新--force-recreate指定/所有服务强制重建down→up流程...