两年前,我们引入了 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对象中后,它可以在每一个对象中调用一个Redshift COPY 命令。这一命令很灵活,使你能够导入和处理多种格式(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 摄入的数据量的大小定价的。
原文链接: https://aws.amazon.com/cn/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/活动推荐:Amazon CloudFormation 简介
活动推荐: 亚马逊AWS云计算研讨会之云中的安全部署与开发运维( 广州站)
( 翻译/吕冬梅 责编/王鑫贺 )
订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!
AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台 ,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。