View a markdown version of this page

RunJobFlow - Amazon EMR

RunJobFlow

RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed.

For additional protection, you can set the JobFlowInstancesConfig TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error.

A maximum of 256 steps are allowed in each job flow.

If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop.

For long-running clusters, we recommend that you periodically store your results.

Note

The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both.

Request Syntax

{ "AdditionalInfo": "string", "AmiVersion": "string", "Applications": [ { "AdditionalInfo": { "string" : "string" }, "Args": [ "string" ], "Name": "string", "Version": "string" } ], "AutoScalingRole": "string", "AutoTerminationPolicy": { "IdleTimeout": number }, "BootstrapActions": [ { "Name": "string", "ScriptBootstrapAction": { "Args": [ "string" ], "Path": "string" } } ], "Configurations": [ { "Classification": "string", "Configurations": [ "Configuration" ], "Properties": { "string" : "string" } } ], "CustomAmiId": "string", "EbsRootVolumeIops": number, "EbsRootVolumeSize": number, "EbsRootVolumeThroughput": number, "ExtendedSupport": boolean, "Instances": { "AdditionalMasterSecurityGroups": [ "string" ], "AdditionalSlaveSecurityGroups": [ "string" ], "Ec2KeyName": "string", "Ec2SubnetId": "string", "Ec2SubnetIds": [ "string" ], "EmrManagedMasterSecurityGroup": "string", "EmrManagedSlaveSecurityGroup": "string", "HadoopVersion": "string", "InstanceCount": number, "InstanceFleets": [ { "Context": "string", "InstanceFleetType": "string", "InstanceTypeConfigs": [ { "BidPrice": "string", "BidPriceAsPercentageOfOnDemandPrice": number, "Configurations": [ { "Classification": "string", "Configurations": [ "Configuration" ], "Properties": { "string" : "string" } } ], "CustomAmiId": "string", "EbsConfiguration": { "EbsBlockDeviceConfigs": [ { "VolumeSpecification": { "Iops": number, "SizeInGB": number, "Throughput": number, "VolumeType": "string" }, "VolumesPerInstance": number } ], "EbsOptimized": boolean }, "InstanceType": "string", "Priority": number, "WeightedCapacity": number } ], "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "string", "CapacityReservationOptions": { "CapacityReservationPreference": "string", "CapacityReservationResourceGroupArn": "string", "UsageStrategy": "string" } }, "SpotSpecification": { "AllocationStrategy": "string", "BlockDurationMinutes": number, "TimeoutAction": "string", "TimeoutDurationMinutes": number } }, "Name": "string", "ResizeSpecifications": { "OnDemandResizeSpecification": { "AllocationStrategy": "string", "CapacityReservationOptions": { "CapacityReservationPreference": "string", "CapacityReservationResourceGroupArn": "string", "UsageStrategy": "string" }, "TimeoutDurationMinutes": number }, "SpotResizeSpecification": { "AllocationStrategy": "string", "TimeoutDurationMinutes": number } }, "TargetOnDemandCapacity": number, "TargetSpotCapacity": number } ], "InstanceGroups": [ { "AutoScalingPolicy": { "Constraints": { "MaxCapacity": number, "MinCapacity": number }, "Rules": [ { "Action": { "Market": "string", "SimpleScalingPolicyConfiguration": { "AdjustmentType": "string", "CoolDown": number, "ScalingAdjustment": number } }, "Description": "string", "Name": "string", "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "string", "Dimensions": [ { "Key": "string", "Value": "string" } ], "EvaluationPeriods": number, "MetricName": "string", "Namespace": "string", "Period": number, "Statistic": "string", "Threshold": number, "Unit": "string" } } } ] }, "BidPrice": "string", "Configurations": [ { "Classification": "string", "Configurations": [ "Configuration" ], "Properties": { "string" : "string" } } ], "CustomAmiId": "string", "EbsConfiguration": { "EbsBlockDeviceConfigs": [ { "VolumeSpecification": { "Iops": number, "SizeInGB": number, "Throughput": number, "VolumeType": "string" }, "VolumesPerInstance": number } ], "EbsOptimized": boolean }, "InstanceCount": number, "InstanceRole": "string", "InstanceType": "string", "Market": "string", "Name": "string" } ], "KeepJobFlowAliveWhenNoSteps": boolean, "MasterInstanceType": "string", "Placement": { "AvailabilityZone": "string", "AvailabilityZones": [ "string" ] }, "ServiceAccessSecurityGroup": "string", "SlaveInstanceType": "string", "TerminationProtected": boolean, "UnhealthyNodeReplacement": boolean }, "JobFlowRole": "string", "KerberosAttributes": { "ADDomainJoinPassword": "string", "ADDomainJoinUser": "string", "CrossRealmTrustPrincipalPassword": "string", "KdcAdminPassword": "string", "Realm": "string" }, "LogEncryptionKmsKeyId": "string", "LogUri": "string", "ManagedScalingPolicy": { "ComputeLimits": { "MaximumCapacityUnits": number, "MaximumCoreCapacityUnits": number, "MaximumOnDemandCapacityUnits": number, "MinimumCapacityUnits": number, "UnitType": "string" }, "ScalingStrategy": "string", "UtilizationPerformanceIndex": number }, "MonitoringConfiguration": { "CloudWatchLogConfiguration": { "Enabled": boolean, "EncryptionKeyArn": "string", "LogGroupName": "string", "LogStreamNamePrefix": "string", "LogTypes": { "string" : [ "string" ] } }, "S3LoggingConfiguration": { "LogTypeUploadPolicy": { "string" : "string" } } }, "Name": "string", "NewSupportedProducts": [ { "Args": [ "string" ], "Name": "string" } ], "OSReleaseLabel": "string", "PlacementGroupConfigs": [ { "InstanceRole": "string", "PlacementStrategy": "string" } ], "ReleaseLabel": "string", "RepoUpgradeOnBoot": "string", "ScaleDownBehavior": "string", "SecurityConfiguration": "string", "ServiceRole": "string", "SessionEnabled": boolean, "StepConcurrencyLevel": number, "StepExecutionRoleArn": "string", "Steps": [ { "ActionOnFailure": "string", "HadoopJarStep": { "Args": [ "string" ], "Jar": "string", "MainClass": "string", "Properties": [ { "Key": "string", "Value": "string" } ] }, "Name": "string", "StepMonitoringConfiguration": { "S3MonitoringConfiguration": { "EncryptionKeyArn": "string", "LogUri": "string" } } } ], "SupportedProducts": [ "string" ], "Tags": [ { "Key": "string", "Value": "string" } ], "VisibleToAllUsers": boolean }

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

AdditionalInfo

A JSON string for selecting additional features.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 10280.

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Required: No

AmiVersion

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 256.

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Required: No

Applications

Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMRRelease Guide.

Type: Array of Application objects

Required: No

AutoScalingRole

An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate Amazon EC2 instances in an instance group.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 10280.

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Required: No

AutoTerminationPolicy

An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see Control cluster termination.

Type: