Question

I created a job flow using Amazon Elastic MapReduce (Amazon EMR) and it failed due to some unknown reasons. Then I tried to terminate the job flow thru the AWS Management Console but the 'Terminate' button was disabled. Then I tried to terminate the job flow using the CLI and it showed that the job flow is terminated, but still it shows as failed in the job flow list when seen thru the CLI as well as in the Elastic MapReduce tab in the management console.

Please let me know how to remove the job flow from the list.

When I tried to debug the job flow it shows two errors:

  1. The debugging functionality is not available for this job flow because you did not specify an Amazon S3 Log Path when you created it.
  2. Job flow failed with reason: Invalid bucket name 'testBucket': buckets names must contain only lowercase letters, numbers, periods (.), and dashes (-).
Was it helpful?

Solution

You are facing two issues here:

Job Flow Failure

First and foremost, the problem triggering the termination state of the Amazon EMR job flow that's irritating you can be remedied immediately:

I created a job flow using Amazon Elastic MapReduce (Amazon EMR) and it failed due to some unknown reasons.

The reason for the job flow failure can actually be inferred from error 2 in the listing you provided:

Job flow failed with reason: Invalid bucket name 'testBucket': buckets names must contain only lowercase letters, numbers, periods (.), and dashes (-). [emphasis mine]

Your bucket name 'testBucket' clearly violates the stated lowercase naming requirement, thus changing the name to lowercase only (e.g. 'testbucket' or 'test-bucket') will allow you to run the job flow as desired.

Termination State

Furthermore, the Job Flow termination state is presumably no problem at all. While it can happen in rare cases, that Amazon EC2 instances or other resources are actually stuck in some state, what you are seeing is perfectly reasonable and normal at first sight:

  • It may take a while to completely terminate a job flow in the first place, see TerminateJobFlows:

    The call to TerminateJobFlows is asynchronous. Depending on the configuration of the job flow, it may take up to 5-20 minutes for the job flow to completely terminate and release allocated resources, such as Amazon EC2 instances. [emphasis mine]

  • Even terminated EC2 resources may be listed for quite a while still, see e.g. the AWS team response to EC2 Instance stuck in "terminated" state:

    Terminated means "gone forever"; although sometimes it hangs around in the UI for several hours. [emphasis mine]

I regularly witness this behavior for EC2 instances, which usually vanish from the instance listing quite some hours later only indeed. Consequently I suspect that the terminated job flow has meanwhile vanished from your job flow list.

Update

I've actually suspected this to be the case indeed, but am still unable to find related information in the official documentation; however, apparently terminated job flows are potentially visible one way or another for up to two month even, see e.g. the AWS team response to Console not showing jobs older than a month:

While the console lists all running job flows, it only displays terminated job flows launched in the last month. Alternatively, you can use the Ruby CLI to list all job flows launched in the last two months with the following command: [...] [emphasis mine]

OTHER TIPS

if your application is running on hadoop yarn, you can always use yarn to manage your application:

yarn application -list
yarn application -kill application_name
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top