如何在多个子网上运行 AWS EMR 集群?
Posted
技术标签:
【中文标题】如何在多个子网上运行 AWS EMR 集群?【英文标题】:How to run an AWS EMR cluster on multiple subnets? 【发布时间】:2019-12-02 22:53:04 【问题描述】:目前我们正在使用 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": [
【问题讨论】:
看来我可能不得不使用“实例舰队”来做我正在寻找的东西。 【参考方案1】:您目前无法实现您正在尝试做的事情。 EMR 集群的所有节点始终位于同一子网中。
使用实例队列,您确实可以配置一组子网。但是在启动时,AWS 会选择最好的一个并将您的所有实例放在那里.
来自EMR Documentation,在“使用控制台配置实例队列”下:
对于 Network,输入一个值。如果您为 Network 选择 VPC,请选择单个 EC2 子网 或 CTRL + 单击以选择多个 EC2 子网。您选择的子网类型必须相同(公共或私有)。如果您只选择一个,您的集群将在该子网中启动。 如果您选择一个组,则在集群启动时会从该组中选择最适合的子网。
【讨论】:
以上是关于如何在多个子网上运行 AWS EMR 集群?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来
带有 cloudformation 的 AWS EMR 集群:如何启用调试
在没有 spark UI 的情况下在 AWS EMR 中监控 spark 集群