amazon-web-services - 如何在多个子网上运行 AWS EMR 集群?
问题描述
目前,我们正在使用 EMR 中的 config.json 文件创建实例来配置集群。此文件指定子网(“Ec2SubnetId”)。
我所有的 EMR 实例最终都使用这个子网......我如何让它使用多个子网?这是我推送到 S3 的 terraform 模板。
{
"Applications": [
{"Name": "Spark"},
{"Name": "Hadoop"}
],
"BootstrapActions": [
{
"Name": "Step1-stuff",
"ScriptBootstrapAction": {
"Path": "s3://${artifact_s3_bucket_name}/artifacts/${build_commit_id}/install-stuff.sh",
"Args": ["${stuff_args}"]
}
},
{
"Name": "setup-cloudWatch-agent",
"ScriptBootstrapAction": {
"Path": "s3://${artifact_s3_bucket_name}/artifacts/${build_commit_id}/setup-cwagent-emr.sh",
"Args": ["${build_commit_id}"]
}
}
],
"Configurations": [
{
"Classification": "spark",
"Properties": {
"maximizeResourceAllocation": "true"
}
],
"Instances": {
"AdditionalMasterSecurityGroups": [ "${additional_master_security_group}" ],
"AdditionalSlaveSecurityGroups": [ "${additional_slave_security_group}" ],
"Ec2KeyName": "privatekey-${env}",
"Ec2SubnetId": "${data_subnet}",
"InstanceGroups": [
解决方案
您目前无法实现您正在尝试做的事情。EMR 集群的所有节点始终位于同一子网中。
使用 Instance Fleets,您确实可以配置一组子网。但是在启动时,AWS 会选择最好的一个并将您的所有实例放在那里。
在EMR 文档中,在“使用控制台配置实例队列”下:
- 对于网络,输入一个值。如果您为Network选择 VPC ,请选择单个EC2 子网或 CTRL + 单击以选择多个 EC2 子网。您选择的子网类型必须相同(公共或私有)。如果您只选择一个,您的集群将在该子网中启动。如果您选择一个组,则在集群启动时会从该组中选择最适合的子网。
推荐阅读
- python - 如何从 mnist.load_data() 中选择所需的训练样本
- c# - 没有类实例化的 C# 语法
- redis - Redis中带有EX选项的SET和SETEX之间的区别?
- django - 为什么我们不能在 Django 表单中使用 ForeignKey 关系的反面?
- octave - 用octave编写sigmoid函数并计算0和负数的sigmoid
- apache-kafka - kafka 流中 statestore 和 changelog 主题的用途?
- java - 为什么我玩这个 .wav 文件时游戏会卡顿?
- reactjs - 如何更改将夫妇值传递给状态字段的方法?
- javascript - 有没有办法在 JavaScript 中的视频播放器顶部覆盖交互式线图?
- html - 在css中访问div图像