在近实时分析中,为什么Lambda–>Firehose–>S3优于Lambda–>S3?
许多用于无服务器实时分析的 AWS 参考架构建议通过 Kinesis Firehose 将处理过的数据从 Lambda 推送到 S3。
例如
https://aws.amazon.com/blogs/big-data/create-real-time-clickstream-sessions-and-run-analytics-with-amazon-kinesis-data-analytics-aws-glue-and-amazon -雅典娜/
为什么我们不能直接从 Lambda 推送数据到 S3?通过跳过中介 Kinesis Firehose 组件来避免复杂性和额外成本不是更好吗?Lambda 将实时数据直接写入 S3 有什么问题吗?
回答
主要是因为 Firehose 使您能够批量处理数据。例如,它只会将 128mb 的数据文件写入 S3。它将收集传入数据,直到达到阈值,将其写入 S3 并等待下一个数据。如果您让 lambda 直接写入 S3,那么您将不得不自己进行批处理,如果您只有无状态 lambda,这将非常困难。
话虽如此,这主要适用于您的数据由许多记录/行组成的情况。另一方面,如果您基本上处理的是 lambda 输出的 50MB 数据块,那么您可以/应该直接写入 S3,因为在您的情况下,批处理可能不可行或没有用。
您是否应该使用 firehose 仅取决于您拥有的数据/吞吐量以及可能的要求。
直接将实时数据写入 S3 的一个问题是,如果你想用 Athena 查询它,如果你有数百万个几字节大的文件而不是 100 多个 10 兆字节大的文件,你会遇到很多麻烦。
THE END
二维码