步骤 6:审查配置设置 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 6:审查配置设置

配置设置指定集群如何运行的详细信息,例如,重试任务的次数和排序可用的内存大小。当您使用亚马逊启动集群时EMR,除了标准的 Hadoop 配置设置外,还有亚马逊EMR特定的设置。这些配置设置存储在集群的主节点上。您可以检查配置设置,以确保集群有所需的资源高效运行。

亚马逊EMR定义了用于启动集群的默认 Hadoop 配置设置。这些值基于AMI和您为集群指定的实例类型。您可以使用引导操作或在作业执行参数中指定新值,从而修改配置设置的默认值。有关更多信息,请参阅创建引导操作以安装其它软件。为了确定引导操作是否更改了配置设置,请检查引导操作日志。

Amazon 会EMR记录用于执行每项任务的 Hadoop 设置。日志数据存储在主节点/mnt/var/log/hadoop/history/目录job_job-id_conf.xml下名为的文件中,其中 job-id 被作业的标识符所取代。如果您启用了日志存档,则会将这些数据复制到 Amazon S3 的logs/date/jobflow-id/jobs文件夹中,其中 date 是作业运行的日期,以及 jobflow-id 是集群的标识符。

以下 Hadoop 作业配置设置对于调查性能问题尤其有用。有关 Hadoop 配置设置及它们如何影响 Hadoop 操作的详细信息,请转到 http://hadoop.apache.org/docs/

警告
  1. 如果单个节点出现故障,在节点少于四个的群集上设置dfs.replication为 1 可能会导致HDFS数据丢失。建议您使用具有至少四个核心节点的集群来处理生产工作负载。

  2. Amazon EMR 不允许集群在下方扩展核心节点dfs.replication。例如,如果是 dfs.replication = 2,则最小核心节点数为 2。

  3. 当您使用托管扩缩、自动扩缩或选择手动调整集群大小时,建议您将设置 dfs.replication 为 2 或更高。

配置设置 描述
dfs.replication 为了生成RAID类似环境而将单个块(如硬盘块)复制到的HDFS节点数量。确定包含区块副本的HDFS节点数量。
io.sort.mb 排序可用的总内存大小。此值应该是 10x io.sort.factor。此设置也可用于计算任务节点所用的总内存大小,计算方法是 io.sort.mb 与 mapred.tasktracker.ap.tasks.maximum 相乘。
io.sort.spill.percent 供排序期间使用,在该点将开始使用磁盘,因为分配的排序内存已满。
mapred.child.java.opts 已淘汰。使用 mapred.map.child.java.opts 和 mapred.reduce.child.java.opts。启动时 TaskTracker 使用的 Java 选项,以便在其中执行任务。JVM通用参数是“-Xmx”,设置最大的内存大小。
mapred.map.child.java.opts 启动要在其中执行的地图任务时 TaskTracker 使用JVM的 Java 选项。通用参数是“-Xmx”,设置最大的内存堆大小。
mapred.map.tasks.speculative.execution 确定同一任务的映射任务尝试是否可以并行启动。
mapred.reduce.tasks.speculative.execution 确定同一任务的 reduce 任务尝试是否可以并行启动。
mapred.map.max.attempts 可以尝试映射任务的最大次数。如果所有尝试都失败,那么该映射任务可标记为“失败”。
mapred.reduce.child.java.opts 启动要在其中执行JVM的简化任务时 TaskTracker 使用的 Java 选项。通用参数是“-Xmx”,设置最大的内存堆大小。
mapred.reduce.max.attempts 可以尝试 reduce 任务的最大次数。如果所有尝试都失败,那么该映射任务可标记为“失败”。
mapred.reduce.slowstart.completed.maps 尝试 reduce 任务前应该完成的映射任务量。不等待足够长的时间可能会造成在尝试中出现“Too many fetch-failure”错误。
mapred.reuse.jvm.num.tasks 任务在单个任务中运行JVM。指定有多少任务可以重复使用相同的任务JVM。
mapred.tasktracker.map.tasks.maximum 映射期间每个任务节点可并行执行的任务的最大数量。
mapred.tasktracker.reduce.tasks.maximum 化简期间每个任务节点可并行执行的任务的最大数量。

如果您的集群任务需要使用大量内存,您可以通过在每个核心节点使用较少的任务以及降低作业跟踪程序堆大小来增强性能。