我有一个生产者的应用程序,它以每秒600条记录的速度写入kinesis流。我已经编写了一个apache flink应用程序来读取/处理和聚合这些流数据,并将聚合的输出写入aws redshift。
每条记录的平均大小是2kb。此应用程序将全天候运行。
我想知道我的aws emr集群的配置应该是什么。我需要多少个节点?我应该使用的ec2示例类型(r3/c3)应该是什么。
除了性能方面,成本对我们也很重要。
我有一个生产者的应用程序,它以每秒600条记录的速度写入kinesis流。我已经编写了一个apache flink应用程序来读取/处理和聚合这些流数据,并将聚合的输出写入aws redshift。
每条记录的平均大小是2kb。此应用程序将全天候运行。
我想知道我的aws emr集群的配置应该是什么。我需要多少个节点?我应该使用的ec2示例类型(r3/c3)应该是什么。
除了性能方面,成本对我们也很重要。
1条答案
按热度按时间fjaof16o1#
是否使用r3/c3取决于应用程序正在使用的大量资源。
我假设您正在使用窗口或某个有状态操作符来执行聚合。有状态的操作符将在statebackend中维护状态https://ci.apache.org/projects/flink/flink-docs-release-1.3/ops/state_backends.html#state-后端
因此,您可以首先通过在c3类型的示例上试用应用程序来检查状态是否适合内存(如果您打算使用fsstatebackend)。可以使用jvisualvm检查内存利用率。另外,请尝试检查这里的cpu利用率。
对于r3类型的示例,您将使用c3提供的相同数量的cpu获得更多内存。例如:c3.4xlagle示例为每个节点提供16个vcpu和30gb内存,而r34xlagle为每个节点提供16vcpu和122gb内存。
因此,这取决于应用程序应该使用哪种类型的示例。
有关价格比较,您可以参考以下内容:http://www.ec2instances.info/