如何在 Amazon Kinesis 服务上部署和运行 Amazon Kinesis 应用程序

Posted

技术标签:

【中文标题】如何在 Amazon Kinesis 服务上部署和运行 Amazon Kinesis 应用程序【英文标题】:How to deploy and Run Amazon Kinesis Application on Amazon Kinesis service 【发布时间】:2014-08-25 08:59:03 【问题描述】:

我正在尝试了解如何部署使用 Kinesis 客户端库 (KCL) 构建的 Amazon Kinesis 客户端应用程序。

我找到了this,但它只说明了

在部署 Amazon Kinesis 应用程序时,您可以按照自己的最佳实践将代码部署到 Amazon EC2 实例。例如,您可以将您的 Amazon Kinesis 应用程序添加到您的 Amazon EC2 AMI 之一。

这并没有给我一个更广泛的画面。

These examples 使用 Ant 脚本运行 Java 程序。这是要遵循的最佳做法吗?

另外,我明白在运行 EC2 实例之前我需要确保

    开发的代码 JAR/WAR 或任何其他格式需要在 EC2 实例上 EC2 实例需要具备所有必需的环境(例如 Ant 设置)才能执行程序。

有人可以添加更多细节吗?

【问题讨论】:

我遇到了同样的问题,我不明白应用程序如何在实例启动时启动。我原以为它会像某种服务或守护程序一样安装。 我在 AWS 论坛上发布了几乎相同的问题,但目前还没有回复:forums.aws.amazon.com/thread.jspa?threadID=156072&tstart=0 我将开始一项赏金计划,以便我们获得有关部署可扩展 kinesis 应用程序的分步说明。 【参考方案1】:

Amazon Kinesis 将负责提取数据,而不是运行您的应用程序。您可以在任何地方运行您的应用程序,但最好在 EC2 中运行它,因为您可能会使用其他 AWS 服务,例如 S3 或 DynamoDB(例如,Kinesis 客户端库使用 DynamoDB 进行分片)。

为了更好地了解 Kinesis,我建议您启动 Kinesis Data Visualization Sample。启动此应用程序时,请使用提供的 CloudFormation 模板。它将创建一个包含 Kinesis 流的堆栈和一个包含应用程序的 EC2 实例,该实例使用 Kinesis 客户端库,是一个完整的工作示例。

【讨论】:

谢谢胡里奥。我花了一点时间才明白你在说什么,但在 AWS 论坛上对我的问题的回复说了同样的话:forums.aws.amazon.com/message.jspa?messageID=556078#556078 基本上创建一个 ec2 实例并使用一个 cloudformation 模板来下载你的 jar 并创建一个执行的脚本它。 @Sam 我推荐这个回复来回答你的问题。 谢谢胡里奥,谢谢凯文【参考方案2】:

我发现托管消费者程序的最佳方式是使用 EMR,但不是作为 hadoop 集群。将您的程序打包为 jar,并将其放在 s3 中。启动一个 emr 集群并让它运行你的 jar。使用数据管道,您可以安排此作业流定期运行。如果您选择获得高科技,您还可以扩展 emr 集群,或者使用实际的 EMR 作业来处理流。

【讨论】:

我只是有一个疑问,如果我有一个只有一个分片的流,它将如何在具有主从节点的 EMR 上执行 这个答案很老而且可能已经过时了,我认为现在可能有更好的方法可以做到这一点,但我现在使用 Azure 而不是 AWS【参考方案3】:

您也可以使用 Beanstalk。我相信this article 非常有用。

【讨论】:

以上是关于如何在 Amazon Kinesis 服务上部署和运行 Amazon Kinesis 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Kinesis + 集成测试

Amazon Kinesis Data Firehose

如何在我的 pyspark 代码中访问 S3 中的 Amazon kinesis 流文件?

Amazon Kinesis Data Streams 术语和概念

Amazon Kinesis - 使用情况和分片时间

来玩 Serverless: 如何把 Express 应用迁移到 Amazon API 网关和 AWS Lambda 上