amazon-web-services - 我可以像在本地集群上一样在 EMR 上运行作业吗

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

我已经在我的笔记本电脑上构建了一个本地集群(伪模式)。我在哪里运行不同的 mapreduce 命令,例如

hadoop-streaming -D mapred.output.compress=true \
   -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
   -files my_mapper.py,my_reducer.py \
  -mapper my_mapper.py  \
  -reducer my_reducer.py \
  -input /aws/input/input_warc.txt \
  -output /aws/output

现在我必须在 EMR 上运行它。有两个选项可以使用,一个是控制台,第二个是 aws cli。我想像上面那样运行命令。为此,我想如果我通过 ssh 连接到 EMR master,那么我应该能够运行这个命令。这是正确的方法还是这种方法有任何缺点?

最佳答案

是的,您可以通过 SSH 连接到您的集群并在那里运行您的作业,但您也可以使用 Step API ( http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-steps.html ) 在主实例上运行任意命令,当然包括像您的示例一样运行分布式作业。您可以使用 AWS CLI(“aws emr add-step ...”或在创建集群期间使用“aws emr create-cluster ... --steps ...”)或类似地使用 AWS 向集群添加步骤SDK(如 AWS Java SDK)或使用 AWS EMR 控制台。

Step API 的一些优势包括它捕获每个步骤的输出,以便您可以通过 AWS CLI、SDK 或 AWS 控制台查看它,您还可以检查步骤的状态以确定它们何时完成.

Step API 的一个缺点是目前所有 Steps 都是按顺序运行的,因此您不能并行运行多个 Steps。

关于amazon-web-services - 我可以像在本地集群上一样在 EMR 上运行作业吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41608995/

相关文章:

c++ - Amazon AWS Cloud 9 上的 GCC 或 Clang 版本?

javascript - AWS Amplify 在没有错误日志的情况下无法构建和编译

hadoop - unix_timestamp 问题

python - 在 AWS EMR 上运行 python 脚本

amazon-web-services - Cloudformation 模板禁用回滚嵌套模板

amazon-web-services - 我需要将 EC2 与 DynamoDB 结合使用吗?

hadoop - hive中如何获取表是动态分区还是静态分区

sql - 在Hive中导入.sql文件

hadoop - Hive Table 添加分区加载所有子目录