【问题标题】:Stream data from EC2 web server to Redshift将数据从 EC2 Web 服务器流式传输到 Redshift
【发布时间】:2015-10-15 03:14:41
【问题描述】:

我们希望将数据直接从 EC2 Web 服务器流式传输到 RedShift。我需要使用 Kinesis 吗?最佳做法是什么?在存储这些数据之前,我不打算做任何特别的分析。我想要一个具有成本效益的解决方案(在加载之前使用 DynamoDB 作为临时存储可能会很昂贵)。

【问题讨论】:

    标签: amazon-web-services amazon-redshift amazon-kinesis


    【解决方案1】:

    如果成本是您最关心的问题,那么与记录大小相结合的每秒记录的确切数量可能很重要。

    如果您谈论的消息量非常少,则在 t2.micro 实例上运行以聚合数据的自定义应用程序几乎可以做到尽可能便宜,但它不会扩展。更大的缺点是您需要负责监控、维护和管理该 EC2 实例。

    现代方法是使用 Kinesis + Lambda + S3 + Redshift 的组合,让数据流不需要 EC2 实例来管理!

    此博客文章中描述了该方法:A Zero-Administration Amazon Redshift Database Loader

    那篇博文没有提到的是 API Gateway,如果您确实需要执行任何类型的自定义身份验证或数据转换,您可以通过使用 Lambda 将数据代理到 Kinesis 中,而无需 EC2 实例。

    这看起来像:

    API Gateway -> Lambda -> Kinesis -> Lambda -> S3 -> Redshift

    【讨论】:

      【解决方案2】:

      Redshift 最适合使用 COPY command 进行批量加载。典型的模式是将数据加载到 DynamoDB、S3 或 Kinesis,然后在使用 COPY 之前将事件聚合到 Redshift。

      另见this useful SO Q&A

      【讨论】:

        【解决方案3】:

        去年我在公司内部使用 Kinesis 和 Kinesis connector 实施了一个这样的系统。 Kinesis 连接器只是 AWS 发布的一个独立应用程序,我们作为 Kinesis 消费者在一堆 ElasticBeanStalk 服务器中运行,然后连接器将每隔一段时间或每条消息聚合到 S3,然后它会触发 Redshift 的 COPY 命令到定期将数据加载到 Redshift。由于它在 EBS 上运行,因此您可以调整自动扩展条件以确保集群随着来自 Kinesis 流的数据量而增长和收缩。

        顺便说一句,AWS 昨天刚刚宣布 Kinesis Firehose。我没玩过,但它绝对看起来像是 Kinesis 连接器的托管版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-11
          • 1970-01-01
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多