我刚开始练习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
有人可以帮我理解这里发生了什么吗?
谢谢,
答案 0 :(得分:2)
当您在EMR上设置作业时,这意味着亚马逊将在有限的时间内按需为您配置群集。在此期间,您可以ssh
自由地访问您的群集,并根据需要查看日志,但是当您的作业运行完毕时,您的群集将被删除!此时,您将无法再使用ssh,因为您的群集根本不存在。
工作流程通常如下所示:
STARTING
将持续几分钟。此时,如果您尝试运行./elastic-mapreduce --ssh --jobflow <jobid>
,则只需等待,因为群集尚未可用。RUNNING
。如果您已经启动了上面的ssh
命令,它应该会自动将您连接到您的群集。否则,您现在可以启动ssh
命令,它应该直接与您联系而无需等待。RUNNING
步骤可能需要一段时间或非常短,这取决于您处理的数据量和计算的性质。SHUTTING_DOWN
。此时,如果您已经ssh
编辑,则会断开连接。如果您在此时尝试使用ssh
命令,则它将无法连接。COMPLETED
或FAILED
的终端状态,具体取决于您的工作是否成功。此时您的群集已不再可用,如果您尝试ssh
,您将收到您所看到的错误。当然也有例外,您可以在交互模式下设置EMR集群,例如您只想设置Hive,然后ssh
并运行Hive查询,您必须手动关闭集群。但是,如果您只想运行MapReduce作业,那么在作业期间您只能ssh
。
话虽如此,如果你想做的就是调试,首先甚至不需要ssh
!在创建作业流程时,您可以选择启用调试,因此您可以执行以下操作:
./elastic-mapreduce --create --enable-debugging --log-uri s3://myawsbucket
这意味着您的作业的所有日志最终都会被写入指定的S3存储桶(当然您必须拥有此存储桶并且有权写入它)。此外,如果您这样做,您可以在EMR部分之后进入AWS控制台,您将能够在工作旁边看到一个按钮进行调试,如下面的屏幕截图所示,这将使您的生活更加轻松: / p>