任务配置 (Hadoop 2.2.0)

有一些配置变量可用于优化 MapReduce 作业的性能。本部分介绍了一些重要的任务相关性设置。

任务 JVM 内存设置 (AMI 3.0.0)

Hadoop 2.2.0 使用两个参数配置用于 map 和 reduce 的内存:分别为 mapreduce.map.java.opts 和 mapreduce.reduce.java.opts。它们取代了早期 Hadoop 版本中的单个配置选项:mapreduce.map.java.opts。

下表显示了每实例类型的这些设置的默认值。

m1.medium

配置选项 默认值
mapreduce.map.java.opts -Xmx768m
mapreduce.reduce.java.opts -Xmx768m
mapreduce.map.memory.mb 1024
mapreduce.reduce.memory.mb 1024
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 2048
yarn.nodemanager.resource.memory-mb 2048

m1.large

配置选项 默认值
mapreduce.map.java.opts -Xmx864m
mapreduce.reduce.java.opts -Xmx1536m
mapreduce.map.memory.mb 1024
mapreduce.reduce.memory.mb 2048
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 3072
yarn.nodemanager.resource.memory-mb 5120

m1.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx512m
mapreduce.reduce.java.opts -Xmx1536m
mapreduce.map.memory.mb 768
mapreduce.reduce.memory.mb 2048
yarn.scheduler.minimum-allocation-mb 256
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 12288

m2.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 7168
yarn.nodemanager.resource.memory-mb 14336

m2.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 30720

m3.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1515m
mapreduce.reduce.java.opts -Xmx1792m
mapreduce.map.memory.mb 1904
mapreduce.reduce.memory.mb 2150
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 3788
yarn.nodemanager.resource.memory-mb 5273

m3.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx2129m
mapreduce.reduce.java.opts -Xmx2560m
mapreduce.map.memory.mb 2826
mapreduce.reduce.memory.mb 3072
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 5324
yarn.nodemanager.resource.memory-mb 9113

m2.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 61440

c1.medium

配置选项 默认值
io.sort.mb 100
mapreduce.map.java.opts -Xmx288m
mapreduce.reduce.java.opts -Xmx288m
mapreduce.map.memory.mb 512
mapreduce.reduce.memory.mb 512
yarn.scheduler.minimum-allocation-mb 256
yarn.scheduler.maximum-allocation-mb 512
yarn.nodemanager.resource.memory-mb 1024

c1.xlarge

配置选项 默认值
io.sort.mb 150
mapreduce.map.java.opts -Xmx864m
mapreduce.reduce.java.opts -Xmx1536m
mapreduce.map.memory.mb 1024
mapreduce.reduce.memory.mb 2048
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 2048
yarn.nodemanager.resource.memory-mb 5120

c3.large

配置选项 默认值
mapreduce.map.java.opts -Xmx768m
mapreduce.reduce.java.opts -Xmx768m
mapreduce.map.memory.mb 921
mapreduce.reduce.memory.mb 921
yarn.scheduler.minimum-allocation-mb 499
yarn.scheduler.maximum-allocation-mb 1920
yarn.nodemanager.resource.memory-mb 1920

c3.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1177m
mapreduce.reduce.java.opts -Xmx1356m
mapreduce.map.memory.mb 1413
mapreduce.reduce.memory.mb 1628
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 2944
yarn.nodemanager.resource.memory-mb 3302

c3.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1515m
mapreduce.reduce.java.opts -Xmx1792m
mapreduce.map.memory.mb 1904
mapreduce.reduce.memory.mb 2150
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 3788
yarn.nodemanager.resource.memory-mb 5273

c3.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx2129m
mapreduce.reduce.java.opts -Xmx2560m
mapreduce.map.memory.mb 2826
mapreduce.reduce.memory.mb 3072
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 5324
yarn.nodemanager.resource.memory-mb 9113

c3.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx4669m
mapreduce.reduce.java.opts -Xmx4915m
mapreduce.map.memory.mb 4669
mapreduce.reduce.memory.mb 4915
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 8396
yarn.nodemanager.resource.memory-mb 16793

cc1.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 5120
yarn.nodemanager.resource.memory-mb 20480

cg1.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 5120
yarn.nodemanager.resource.memory-mb 20480

cc2.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 56320

cr1.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx10895m
mapreduce.reduce.java.opts -Xmx13516m
mapreduce.map.memory.mb 15974
mapreduce.reduce.memory.mb 16220
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 27238
yarn.nodemanager.resource.memory-mb 63897

g2.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx512m
mapreduce.reduce.java.opts -Xmx1536m
mapreduce.map.memory.mb 768
mapreduce.reduce.memory.mb 2048
yarn.scheduler.minimum-allocation-mb 256
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 12288

hi1.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx3379m
mapreduce.reduce.java.opts -Xmx4121m
mapreduce.map.memory.mb 4700
mapreduce.reduce.memory.mb 4945
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 8448
yarn.nodemanager.resource.memory-mb 16921

hs1.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx1280m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1536
mapreduce.reduce.memory.mb 2560
yarn.scheduler.minimum-allocation-mb 512
yarn.scheduler.maximum-allocation-mb 8 192
yarn.nodemanager.resource.memory-mb 56320

i2.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx2150m
mapreduce.reduce.java.opts -Xmx2585m
mapreduce.map.memory.mb 2856
mapreduce.reduce.memory.mb 3102
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 5376
yarn.nodemanager.resource.memory-mb 9241

i2.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx3399m
mapreduce.reduce.java.opts -Xmx4147m
mapreduce.map.memory.mb 4730
mapreduce.reduce.memory.mb 4976
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 8499
yarn.nodemanager.resource.memory-mb 17049

i2.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx5898m
mapreduce.reduce.java.opts -Xmx7270m
mapreduce.map.memory.mb 8478
mapreduce.reduce.memory.mb 8724
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 14745
yarn.nodemanager.resource.memory-mb 32665

i2.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx10895m
mapreduce.reduce.java.opts -Xmx13516m
mapreduce.map.memory.mb 15974
mapreduce.reduce.memory.mb 16220
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 27238
yarn.nodemanager.resource.memory-mb 63897

r3.xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx2150m
mapreduce.reduce.java.opts -Xmx3102m
mapreduce.map.memory.mb 2856
mapreduce.reduce.memory.mb 3102
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 5376
yarn.nodemanager.resource.memory-mb 9241

r3.2xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx3399m
mapreduce.reduce.java.opts -Xmx4147m
mapreduce.map.memory.mb 4743
mapreduce.reduce.memory.mb 4976
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 8499
yarn.nodemanager.resource.memory-mb 17049

r3.4xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx5898m
mapreduce.reduce.java.opts -Xmx7270m
mapreduce.map.memory.mb 8478
mapreduce.reduce.memory.mb 8724
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 14745
yarn.nodemanager.resource.memory-mb 32665

r3.8xlarge

配置选项 默认值
mapreduce.map.java.opts -Xmx10895m
mapreduce.reduce.java.opts -Xmx13516m
mapreduce.map.memory.mb 15974
mapreduce.reduce.memory.mb 16220
yarn.scheduler.minimum-allocation-mb 532
yarn.scheduler.maximum-allocation-mb 27238
yarn.nodemanager.resource.memory-mb 69897

您可以在执行每项任务时启动新 JVM,实现更好的任务隔离;也可以在各项任务之间共享 JVM,降低框架开销。如果您处理的是许多小文件,合理的做法是多次重复使用 JVM,以摊销启动成本。然而,如果每项任务耗时较长或处理的数据量较大,您可以选择不重复使用 JVM,以确保释放出所有内存供后续任务使用。

使用 mapred.job.reuse.jvm.num.tasks 选项配置 JVM 重复使用设置。

使用引导操作修改 JVM

  • 在安装了 Amazon EMR CLI 的目录下,从命令行运行以下命令。有关更多信息,请参见 Amazon EMR 的命令行接口参考

    • Linux、UNIX 和 Mac OS X 用户:

      ./elastic-mapreduce --create --alive --name "JVM infinite reuse" \
      --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
      --bootstrap-name "Configuring infinite JVM reuse" \
      --args "-m,mapred.job.reuse.jvm.num.tasks=-1"
    • Windows 用户:

      ruby elastic-mapreduce --create --alive --name "JVM infinite reuse" --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop --bootstrap-name "Configuring infinite JVM reuse" --args "-m,mapred.job.reuse.jvm.num.tasks=-1"

Note

Amazon EMR 已将 mapred.job.reuse.jvm.num.tasks 的值设置为 20,但您可以通过引导操作覆盖此值。值 -1 表示在单一作业中重复使用的次数不受限制,1 表示不能重复使用任务。

避免集群减速 (AMI 3.0.0)

在分布式环境中,您会遇到随机延迟、硬件速度缓慢、硬件故障和其他会共同降低集群速度的问题。这称为拖后腿问题。Hadoop 具有一项名为推测执行的功能,可用于缓解此问题。随着集群的运行,一些机器将完成它们的任务。Hadoop 会将任务安排到闲置的节点上。第一个完成的任务(无论是哪个任务)会成功,其他任务则会失败。此功能可显著减少作业的运行时间。MapReduce 算法的常规设计使得映射任务的处理过程具有幂等性。然而,如果在您正在运行的作业中的任务执行具有副作用(例如,可调用外部资源的零 Reducer 作业),则禁用推测执行很重要。

您可以对映射器和 Reducer 单独启用推测执行。默认情况下,Amazon EMR 可以为 AMI 2.3 的映射器和 Reducer 启用此操作。您可以使用引导操作覆盖这些设置。有关使用引导操作的详细信息,请参阅 引导操作以安装其他软件(可选)

推测执行参数

参数 默认设置
mapred.map.tasks.speculative.execution true
mapred.reduce.tasks.speculative.execution true

使用引导操作禁用 Reducer 推测执行

  • 在安装了 Amazon EMR CLI 的目录下,从命令行运行以下命令。有关更多信息,请参见 Amazon EMR 的命令行接口参考

    • Linux、UNIX 和 Mac OS X 用户:

      ./elastic-mapreduce --create --alive --name "Reducer speculative execution" \
      --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
      --bootstrap-name "Disable reducer speculative execution" \
      --args "-m,mapred.reduce.tasks.speculative.execution=false"
    • Windows 用户:

      ruby elastic-mapreduce --create --alive --name "Reducer speculative execution" --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop --bootstrap-name "Disable reducer speculative execution" --args "-m,mapred.reduce.tasks.speculative.execution=false"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值