【问题标题】:AWS configuration for Apache flink using EMR使用 EMR 的 Apache flink 的 AWS 配置
【发布时间】:2017-08-11 08:38:14
【问题描述】:

我有一个生产者应用程序,它以每秒 600 条记录的速度写入 Kinesis 流。我编写了一个 Apache flink 应用程序来读取/处理和聚合这些流数据,并将聚合输出写入 AWS Redshift。

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

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

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

【问题讨论】:

    标签: apache-flink emr amazon-emr amazon-kinesis flink-streaming


    【解决方案1】:

    是否选择 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 为每个节点提供 16 个 vCPU 和 122GB 内存。

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

    对于价格比较,您可以参考: http://www.ec2instances.info/

    【讨论】:

    • 但我认为 flink 流应用程序需要比 CPU 更多的内存。我的假设是否正确?
    • 不,这个假设不正确。您可以使用 JVisualVM 等工具监控 CPU 和内存利用率。例如,当我将 c3.4xlarge 实例与 FSStatebackend 一起使用时,CPU 利用率为 95%,并且物理内存被充分利用,最终导致任务管理器被杀死(也有频繁的完整 GC),这就是为什么我搬到r3 类型以获取更多内存并使用 RocksDBStatebackend。同样,您应该首先使用 c3 类型的实例监控您的管道。
    • 你可以像ci.apache.org/projects/flink/flink-docs-release-1.3/monitoring/…这样配置指标然后你可以通过连接到JMX端口使用JVisualVM进行监控
    • 感谢 Vinay,将尝试您的建议。将接受答案并关闭
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2020-04-23
    相关资源
    最近更新 更多