【问题标题】:Amazon Kinesis Firehose Buffering to S3Amazon Kinesis Firehose 缓冲到 S3
【发布时间】:2016-02-03 21:27:29
【问题描述】:

我正在尝试为部署到 AWS 的流数据/分析应用程序定价,并考虑使用 Kinesis Firehose 将数据转储到 S3。

我的问题是,在为此定价 S3 成本时,我需要弄清楚我需要多少 PUT。

所以,我知道 Firehose 会缓冲数据,然后刷新到 S3,但是我不清楚它是否会写入单个“文件”,其中包含到目前为止累积的所有记录,或者是否会写入每个单独记录。

那么,假设我根据记录大小将缓冲区大小/间隔设置为最佳数量,S3 PUT 的数量是否仍等于记录数或 Firehose 执行的刷新次数?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-kinesis amazon-kinesis-firehose


    【解决方案1】:

    阅读了大量 AWS 文档后,我非常不同意 S3 不会向您收费的说法。

    您需要单独支付与 Amazon S3 和 Amazon Redshift 使用相关的费用包括存储和读/写请求。但是,您无需为 Amazon Kinesis Firehose 加载到 Amazon S3 和 Amazon Redshift 的数据支付数据传输费用。有关更多详细信息,请参阅 Amazon S3 定价和 Amazon Redshift 定价。 [强调我的]

    https://aws.amazon.com/kinesis/firehose/pricing/

    他们所说的是,除了 0.035 美元/GB 之外,Kinesis Firehose 不会向您收取任何额外费用,但您需要为与存储桶的交互付费。 (入站到存储桶的数据始终不收取实际的每 GB 传输费用)。

    不过,归根结底,您似乎根据一些可调参数控制了针对您的存储桶的PUT 请求的粗略数量:

    问:什么是缓冲大小和缓冲间隔?

    Amazon Kinesis Firehose 将传入的流数据缓冲到特定大小或一段时间,然后再将其传送到目的地。您可以在创建传输流时配置缓冲区大小和缓冲区间隔。缓冲区大小以 MB 为单位,范围从 1MB 到 128MB。缓冲间隔以秒为单位,范围从 60 秒到 900 秒。

    https://aws.amazon.com/kinesis/firehose/faqs/#creating-delivery-streams

    除非它正在收集记录并将其聚合到大文件中,否则我不明白为什么缓冲区大小和缓冲区间隔会有一个点……但是,如果不启动服务并试一试,我只能(不幸地)真正推测。

    【讨论】:

    • 好吧,这不是 Kinesis 第一次做(或没有做)某事,而我的预期正好相反,但我同意......如果它不汇总记录, 重点是什么?我希望有人可以肯定地确认...
    • 为了跟进这个答案,我在论坛上得到了 AWS 的回答。 forums.aws.amazon.com/thread.jspa?threadID=219275&tstart=0。您是对的,firehose 会将合并的块写入 S3,因此我们可以控制 PUT 的数量,但是为了解释该语句,它实际上表示不会有任何 TRANSFER 费用(即区域之间等)。不是指基于服务的费用,例如 PUT。谢谢!
    【解决方案2】:

    我认为您无需为从 Firehose 到 S3 的写入操作支付任何额外费用。

    您需要单独支付与 Amazon S3 相关的费用 和 Amazon Redshift 使用情况,包括存储和读/写请求。 但是,您无需支付数据传输费用 Amazon Kinesis Firehose 加载到 Amazon S3 和 Amazon Redshift。 有关更多详细信息,请参阅 Amazon S3 定价和 Amazon Redshift 定价。

    https://aws.amazon.com/kinesis/firehose/pricing/

    【讨论】:

    • 是的,我知道 Firehose 的免费传输,但我假设这只是说 Firehose 不会对数据传输收费,并且没有说明每个 PUT 的 S3 成本(我假设这是 Firehose 用来将数据写入 S3 的内容)。 S3 每 1,000 个 PUT 收费,我试图弄清楚 Firehose 的每次刷新是否为 1 PUT,或者 PUT 的数量是否等于单个记录的数量,无论它们是否合并为来自 Firehose 的单个刷新。跨度>
    • 我猜你可能会有不同的解释,但我的解释是,将数据从 firehose 获取到 s3 是免费的。只需将其摄取到 firehose 的成本,然后是 s3 中的 storgae 成本(如果您在 s3 中读取/写入数据,则需要任何 put/get 费用)。
    • 我现在明白你的意思了……老实说,我可以双向阅读。不知道哪个是正确的,但是对于每月 15 亿条单独的记录(这不是一个巨大的数量),如果 S3 为每条单独的记录收取 PUT,那么仅 PUT 的每月费用约为 7,000 美元。这似乎太过分了......
    【解决方案3】:

    对于 kinesis 完成的任何操作,成本是一个 S3 PUT,而不是单个对象。 所以一冲水管就是一放:

    https://docs.aws.amazon.com/whitepapers/latest/building-data-lakes/data-ingestion-methods.html

    https://forums.aws.amazon.com/thread.jspa?threadID=219275&tstart=0

    【讨论】:

    猜你喜欢
    • 2018-04-02
    • 2016-03-31
    • 1970-01-01
    • 2020-02-08
    • 2020-07-26
    • 1970-01-01
    • 2019-11-24
    • 2021-05-11
    • 2017-12-04
    相关资源
    最近更新 更多