使用 EMR 的 Apache flink 的 AWS 配置

AWS configuration for Apache flink using EMR

我有一个生产者应用程序,它以每秒 600 条记录的速度写入 Kinesis 流。我已经将 Apache flink 应用程序编写到 read/process 并聚合此流数据并将聚合输出写入 AWS Redshift。

每条记录的平均大小为 2KB。此应用程序将 运行 24 * 7.

我想知道我的 AWS EMR 集群的配置应该是什么。我需要多少个节点?我应该使用的 EC2 实例类型 (R3/C3) 应该是什么。

除了性能方面,成本对我们来说也很重要。

是否选择 r3/c3 取决于您的应用程序使用的资源数量。

我假设您正在使用窗口化或某些有状态运算符来执行聚合。有状态的操作符将在配置的 StateBackend 中维护状态 https://ci.apache.org/projects/flink/flink-docs-release-1.3/ops/state_backends.html#state-backends

因此您可以首先通过在 c3 类型实例上试用您的应用程序来检查状态是否适合内存(如果您打算使用 FSStateBackend)。您可以使用 JVisualVM 检查内存利用率。另外,请尝试在此处检查 CPU 利用率。

使用 r3 类型的实例,您将获得与 c3 提供的 CPU 相同数量的更多内存。例如:c3.4xlarge 实例提供 16 vCPU 每个节点 30GB 内存,而 r34xlarge 提供 16vCPU 每个节点 122GB 内存。

因此,您应该使用哪种类型的实例取决于您的应用程序。

价格比较可以参考这个: http://www.ec2instances.info/