ClusterArgs

data class ClusterArgs(val applicationConfigs: Output<List<ClusterApplicationConfigArgs>>? = null, val applications: Output<List<String>>? = null, val bootstrapScripts: Output<List<ClusterBootstrapScriptArgs>>? = null, val clusterName: Output<String>? = null, val clusterType: Output<String>? = null, val deployMode: Output<String>? = null, val nodeAttributes: Output<List<ClusterNodeAttributeArgs>>? = null, val nodeGroups: Output<List<ClusterNodeGroupArgs>>? = null, val paymentType: Output<String>? = null, val releaseVersion: Output<String>? = null, val resourceGroupId: Output<String>? = null, val securityMode: Output<String>? = null, val subscriptionConfig: Output<ClusterSubscriptionConfigArgs>? = null, val tags: Output<Map<String, Any>>? = null) : ConvertibleToJava<ClusterArgs>

Provides a EMR cluster resource. This resource is based on EMR's new version OpenAPI. For information about EMR New and how to use it, see Add a domain.

NOTE: Available since v1.199.0.

Example Usage

Basic Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.resourcemanager.ResourcemanagerFunctions;
import com.pulumi.alicloud.resourcemanager.inputs.GetResourceGroupsArgs;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.ecs.EcsKeyPair;
import com.pulumi.alicloud.ecs.EcsKeyPairArgs;
import com.pulumi.alicloud.ecs.SecurityGroup;
import com.pulumi.alicloud.ecs.SecurityGroupArgs;
import com.pulumi.alicloud.ram.Role;
import com.pulumi.alicloud.ram.RoleArgs;
import com.pulumi.alicloud.emrv2.Cluster;
import com.pulumi.alicloud.emrv2.ClusterArgs;
import com.pulumi.alicloud.emrv2.inputs.ClusterApplicationConfigArgs;
import com.pulumi.alicloud.emrv2.inputs.ClusterNodeAttributeArgs;
import com.pulumi.alicloud.emrv2.inputs.ClusterNodeGroupArgs;
import com.pulumi.alicloud.emrv2.inputs.ClusterNodeGroupSystemDiskArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var name = config.get("name").orElse("terraform-example");
final var defaultResourceGroups = ResourcemanagerFunctions.getResourceGroups();
final var defaultZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableInstanceType("ecs.g7.xlarge")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("172.16.0.0/12")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vpcId(defaultNetwork.id())
.cidrBlock("172.16.0.0/21")
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.vswitchName(name)
.build());
var defaultEcsKeyPair = new EcsKeyPair("defaultEcsKeyPair", EcsKeyPairArgs.builder()
.keyPairName(name)
.build());
var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
.vpcId(defaultNetwork.id())
.build());
var defaultRole = new Role("defaultRole", RoleArgs.builder()
.document("""
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"emr.aliyuncs.com",
"ecs.aliyuncs.com"
]
}
}
],
"Version": "1"
}
""")
.description("this is a role example.")
.force(true)
.build());
var defaultCluster = new Cluster("defaultCluster", ClusterArgs.builder()
.paymentType("PayAsYouGo")
.clusterType("DATALAKE")
.releaseVersion("EMR-5.10.0")
.clusterName(name)
.deployMode("NORMAL")
.securityMode("NORMAL")
.applications(
"HADOOP-COMMON",
"HDFS",
"YARN",
"HIVE",
"SPARK3",
"TEZ")
.applicationConfigs(
ClusterApplicationConfigArgs.builder()
.applicationName("HIVE")
.configFileName("hivemetastore-site.xml")
.configItemKey("hive.metastore.type")
.configItemValue("DLF")
.configScope("CLUSTER")
.build(),
ClusterApplicationConfigArgs.builder()
.applicationName("SPARK3")
.configFileName("hive-site.xml")
.configItemKey("hive.metastore.type")
.configItemValue("DLF")
.configScope("CLUSTER")
.build())
.nodeAttributes(ClusterNodeAttributeArgs.builder()
.ramRole(defaultRole.name())
.securityGroupId(defaultSecurityGroup.id())
.vpcId(defaultNetwork.id())
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.keyPairName(defaultEcsKeyPair.id())
.build())
.tags(Map.of("created", "tf"))
.nodeGroups(
ClusterNodeGroupArgs.builder()
.nodeGroupType("MASTER")
.nodeGroupName("emr-master")
.paymentType("PayAsYouGo")
.vswitchIds(defaultSwitch.id())
.withPublicIp(false)
.instanceTypes("ecs.g7.xlarge")
.nodeCount(1)
.systemDisk(ClusterNodeGroupSystemDiskArgs.builder()
.category("cloud_essd")
.size(80)
.count(1)
.build())
.dataDisks(ClusterNodeGroupDataDiskArgs.builder()
.category("cloud_essd")
.size(80)
.count(3)
.build())
.build(),
ClusterNodeGroupArgs.builder()
.nodeGroupType("CORE")
.nodeGroupName("emr-core")
.paymentType("PayAsYouGo")
.vswitchIds(defaultSwitch.id())
.withPublicIp(false)
.instanceTypes("ecs.g7.xlarge")
.nodeCount(3)
.systemDisk(ClusterNodeGroupSystemDiskArgs.builder()
.category("cloud_essd")
.size(80)
.count(1)
.build())
.dataDisks(ClusterNodeGroupDataDiskArgs.builder()
.category("cloud_essd")
.size(80)
.count(3)
.build())
.build())
.resourceGroupId(defaultResourceGroups.applyValue(getResourceGroupsResult -> getResourceGroupsResult.ids()[0]))
.build());
}
}

Import

Aliclioud E-MapReduce cluster can be imported using the id e.g.

$ pulumi import alicloud:emrv2/cluster:Cluster default <id>

Constructors

Link copied to clipboard
fun ClusterArgs(applicationConfigs: Output<List<ClusterApplicationConfigArgs>>? = null, applications: Output<List<String>>? = null, bootstrapScripts: Output<List<ClusterBootstrapScriptArgs>>? = null, clusterName: Output<String>? = null, clusterType: Output<String>? = null, deployMode: Output<String>? = null, nodeAttributes: Output<List<ClusterNodeAttributeArgs>>? = null, nodeGroups: Output<List<ClusterNodeGroupArgs>>? = null, paymentType: Output<String>? = null, releaseVersion: Output<String>? = null, resourceGroupId: Output<String>? = null, securityMode: Output<String>? = null, subscriptionConfig: Output<ClusterSubscriptionConfigArgs>? = null, tags: Output<Map<String, Any>>? = null)

Functions

Link copied to clipboard
open override fun toJava(): ClusterArgs

Properties

Link copied to clipboard

The application configurations of EMR cluster. See application_configs below.

Link copied to clipboard
val applications: Output<List<String>>? = null

The applications of EMR cluster to be installed, e.g. HADOOP-COMMON, HDFS, YARN, HIVE, SPARK2, SPARK3, ZOOKEEPER etc. You can find all valid applications in emr web console.

Link copied to clipboard

The bootstrap scripts to be effected when creating emr-cluster or resize emr-cluster. See bootstrap_scripts below.

Link copied to clipboard
val clusterName: Output<String>? = null

The name of emr cluster. The name length must be less than 64. Supported characters: chinese character, english character, number, "-", "_".

Link copied to clipboard
val clusterType: Output<String>? = null

EMR Cluster Type, e.g. DATALAKE, OLAP, DATAFLOW, DATASERVING, CUSTOM etc. You can find all valid EMR cluster type in emr web console.

Link copied to clipboard
val deployMode: Output<String>? = null

The deploy mode of EMR cluster. Supported value: NORMAL or HA.

Link copied to clipboard

The node attributes of ecs instances which the emr-cluster belongs. See node_attributes below.

Link copied to clipboard
val nodeGroups: Output<List<ClusterNodeGroupArgs>>? = null

Groups of node, You can specify MASTER as a group, CORE as a group (just like the above example). See node_groups below.

Link copied to clipboard
val paymentType: Output<String>? = null

Payment Type for this cluster. Supported value: PayAsYouGo or Subscription.

Link copied to clipboard
val releaseVersion: Output<String>? = null

EMR Version, e.g. EMR-5.10.0. You can find the all valid EMR Version in emr web console.

Link copied to clipboard
val resourceGroupId: Output<String>? = null

The Id of resource group which the emr-cluster belongs.

Link copied to clipboard
val securityMode: Output<String>? = null

The security mode of EMR cluster. Supported value: NORMAL or KERBEROS.

Link copied to clipboard

The detail configuration of subscription payment type. See subscription_config below.

Link copied to clipboard
val tags: Output<Map<String, Any>>? = null

A mapping of tags to assign to the resource.