我用Amazon Elastic MapReduce
尝试了一个简单的Map/Reduce任务,只花了3分钟就完成了任务。是否可以重用同一个实例来运行另一个任务。
尽管我刚刚使用了实例3分钟,但Amazon将对1 hr
收费,因此我想使用剩余的57分钟来运行其他几个任务。
答案是肯定的。
下面是使用命令行客户端的方法:当您创建一个实例时,传递——alive标志,这告诉emr在您的作业运行后保持集群。
然后你可以向集群提交更多的任务:
elastic-mapreduce --jobflow <job-id> --stream --input <s3dir> --output <s3dir> --mapper <script1> --reducer <script2>
稍后终止集群,只需运行:
elastic-mapreduce <jobid> --terminate
试着运行elastic-mapreduce——help来查看你可以运行的所有命令。
如果您没有命令行客户端,请从这里获取。
Using:
elastic-mapreduce --jobflow job-id
--jar s3n://some-path/x.jar
--step-name "New step name"
--args ...
您还可以向集群添加非流步骤。(这样你就不用自己尝试了;-))
http://aws.amazon.com/elasticmapreduce/faqs/#dev-6
问:我可以运行持久作业流吗?是的。Amazon Elastic MapReduce作业以-alive标志启动的流将持续到显式终止。这允许客户向作业添加步骤按需流动。您可能希望使用它来调试作业流逻辑无需重复等待作业流启动。你也可以使用持久作业流运行长时间运行的数据仓库集群。这可以与数据仓库和分析相结合在Hadoop之上运行的包,如Hive和Pig。