错误:在等待ssh时,Jobflow输入了COMPLETED

时间:2013-11-23 01:34:15

标签: hadoop amazon-web-services amazon-s3 amazon-emr emr

我刚开始练习AWS EMR。

我有一个示例字数统计应用程序设置,运行并从Web界面完成。

遵循准则here,我设置了命令行界面。

所以当我运行命令时:

./elastic-mapreduce --list

我收到了

j-27PI699U14QHH     COMPLETED      ec2-54-200-169-112.us-west-2.compute.amazonaws.comWord count
   COMPLETED      Setup hadoop debugging        
   COMPLETED      Word count        

现在,我想查看日志文件。我运行命令

./elastic-mapreduce --ssh --jobflow j-27PI699U14QHH

然后我收到以下错误:

Error: Jobflow entered COMPLETED while waiting to ssh

有人可以帮我理解这里发生了什么吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

当您在EMR上设置作业时,这意味着亚马逊将在有限的时间内按需为您配置群集。在此期间,您可以ssh自由地访问您的群集,并根据需要查看日志,但是当您的作业运行完毕时,您的群集将被删除!此时,您将无法再使用ssh,因为您的群集根本不存在。

工作流程通常如下所示:

  • 创建您的职位流程
  • 状态STARTING将持续几分钟。此时,如果您尝试运行./elastic-mapreduce --ssh --jobflow <jobid>,则只需等待,因为群集尚未可用。
  • 一段时间后,状态将切换为RUNNING。如果您已经启动了上面的ssh命令,它应该会自动将您连接到您的群集。否则,您现在可以启动ssh命令,它应该直接与您联系而无需等待。
  • 根据作业的性质,RUNNING步骤可能需要一段时间或非常短,这取决于您处理的数据量和计算的性质。
  • 处理完所有数据后,状态将切换为SHUTTING_DOWN。此时,如果您已经ssh编辑,则会断开连接。如果您在此时尝试使用ssh命令,则它将无法连接。
  • 群集完成关闭后,它将进入COMPLETEDFAILED的终端状态,具体取决于您的工作是否成功。此时您的群集已不再可用,如果您尝试ssh,您将收到您所看到的错误。

当然也有例外,您可以在交互模式下设置EMR集群,例如您只想设置Hive,然后ssh并运行Hive查询,您必须手动关闭集群。但是,如果您只想运行MapReduce作业,那么在作业期间您只能ssh

话虽如此,如果你想做的就是调试,首先甚至不需要ssh!在创建作业流程时,您可以选择启用调试,因此您可以执行以下操作:

./elastic-mapreduce --create --enable-debugging --log-uri s3://myawsbucket

这意味着您的作业的所有日志最终都会被写入指定的S3存储桶(当然您必须拥有此存储桶并且有权写入它)。此外,如果您这样做,您可以在EMR部分之后进入AWS控制台,您将能够在工作旁边看到一个按钮进行调试,如下面的屏幕截图所示,这将使您的生活更加轻松: / p>

debug button