zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

mapred-site.xml 配置详解

配置XML 详解 Site
2023-09-11 14:22:11 时间

目录

1 环境说明

 2 mapred-site.xml配置详解


1 环境说明

 2 mapred-site.xml配置详解

  <configuration  xmlns:xi="http://www.w3.org/2001/XInclude">
    <!-- 本地文件系统下逗号分割的路径列表 -->
    <property>
      <name>mapred.local.dir</name>
      <value>/hadoop/mapred,/data/hadoop/mapred</value>
    </property>
    
    <!-- JVM 年轻代和老年代比例 新生代占1,老年代占 8,年轻代占整个堆内存的 1/9 -->
    <property>
      <name>mapreduce.admin.map.child.java.opts</name>
      <value>-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhdp.version=${hdp.version}</value>
    </property>
    
    <!-- JVM 年轻代和老年代比例 新生代占1,老年代占 8,年轻代占整个堆内存的 1/9 -->
    <property>
      <name>mapreduce.admin.reduce.child.java.opts</name>
      <value>-server -XX:NewRatio=8 -Djava.net.preferIPv4Stack=true -Dhdp.version=${hdp.version}</value>
    </property>
    
    <!-- admin 配置环境路径 -->
    <property>
      <name>mapreduce.admin.user.env</name>
      <value>LD_LIBRARY_PATH=/usr/hdp/${hdp.version}/hadoop/lib/native:/usr/hdp/${hdp.version}/hadoop/lib/native/Linux-amd64-64</value>
    </property>
    
    <!-- 尝试运行 MapReduce application master 的最大次数,默认为2 -->
    <property>
      <name>mapreduce.am.max-attempts</name>
      <value>2</value>
    </property>
    
    <!-- 加载 jar和环境配置 -->
    <property>
      <name>mapreduce.application.classpath</name>
      <value>$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar:/etc/hadoop/conf/secure</value>
    </property>
    
    <!-- mapreduce框架路径设置 -->
    <property>
      <name>mapreduce.application.framework.path</name>
      <value>/hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework</value>
    </property>
    <!-- mapreduce 用户权限控制,用户只能查看和修改修改自己的作业 -->
    <property>
      <name>mapreduce.cluster.acls.enabled</name>
      <value>true</value>
    </property>
    <!-- 从配置文件中配置mapreduce的管理员列表和group列表,用于检查访问用户是否属于administrator -->
    <property>
      <name>mapreduce.cluster.administrators</name>
      <value> hadoop</value>
    </property>
    <!-- 针对MR任务,它会将mapreduce作业提交给resourcemanage -->
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
    <!-- 指定浏览或者修改作业的访问控制列表。默认情况下,上述属性的值为空 -->
    <property>
      <name>mapreduce.job.acl-modify-job</name>
      <value> </value>
    </property>
    <!-- 指定浏览或者修改作业的访问控制列表。默认情况下,上述属性的值为空 -->
    <property>
      <name>mapreduce.job.acl-view-job</name>
      <value> </value>
    </property>
    <!--  每个作业允许的计数器数量限制 -->
    <property>
      <name>mapreduce.job.counters.max</name>
      <value>130</value>
    </property>
    <!-- 设置Application Master是否发送数据到timeline服务器 -->
    <property>
      <name>mapreduce.job.emit-timeline-data</name>
      <value>true</value>
    </property>
    <!-- job默认队列 -->
    <property>
      <name>mapreduce.job.queuename</name>
      <value>default</value>
    </property>
    <!-- map task在执行到5%的时候就开始为reduce进行申请资源,开始执行reduce操作,reduce可以开始进行拷贝map结果数据和做reduce shuffle操作 -->
    <property>
      <name>mapreduce.job.reduce.slowstart.completedmaps</name>
      <value>0.05</value>
    </property>
    <!--job运行日志信息访问地址 -->
    <property>
      <name>mapreduce.jobhistory.address</name>
      <value>c2-kl-namenode:10020</value>
    </property>

    <!-- MapReduce 守护进程侦听集群中主机的所有地址和接口 -->
    <property>
      <name>mapreduce.jobhistory.bind-host</name>
      <value>0.0.0.0</value>
    </property>
    <!-- 在什么目录下存放已经运行完的Hadoop作业记录 -->
    <property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/mr-history/done</value>
    </property>
    <!-- 启用mapreduce 作业历史服务器 -->
    <property>
      <name>mapreduce.jobhistory.http.policy</name>
      <value>HTTP_ONLY</value>
    </property>
  
    <!-- 启用历史服务器来存储服务器状态并在启动时恢复服务器状态。 如果启用,则必须指定 mapreduce.jobhistory.recovery.store.class -->
    <property>
      <name>mapreduce.jobhistory.recovery.enable</name>
      <value>true</value>
    </property>
    <!-- HistoryServerStateStoreService 类用于存储历史服务器状态以进行恢复。 -->
    <property>
      <name>mapreduce.jobhistory.recovery.store.class</name>
      <value>org.apache.hadoop.mapreduce.v2.hs.HistoryServerLeveldbStateStoreService</value>
    </property>
    <!-- 如果将HistoryServerLeveldbSystemStateStoreService配置为恢复存储类,则将存储历史服务器状态的URI -->
    <property>
      <name>mapreduce.jobhistory.recovery.store.leveldb.path</name>
      <value>/hadoop/mapreduce/jhs</value>
    </property>
    <!-- jobhistory web访问地址 -->
    <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>c2-kl-namenode:19888</value>
    </property>
    <!--  Maper 端  JVM内存 -->
    <property>
      <name>mapreduce.map.java.opts</name>
      <value>-Xmx1638m</value>
    </property>
    <!-- map 端日志级别 -->
    <property>
      <name>mapreduce.map.log.level</name>
      <value>INFO</value>
    </property>
    <!-- maper container 的内存 -->
    <property>
      <name>mapreduce.map.memory.mb</name>
      <value>2048</value>
    </property>
    <!-- Map输出压缩算法 -->
    <property>
      <name>mapreduce.map.output.compress</name>
      <value>false</value>
    </property>
    <!-- spill一般会在Buffer空间大小的80%开始进行spill -->
    <property>
      <name>mapreduce.map.sort.spill.percent</name>
      <value>0.7</value>
    </property>
    <!-- 是否为 Map Task 打开推测执行机制,默认为 true, 如果为 true,则可以并行执行一些 Map 任务的多个实例。 -->
    <property>
      <name>mapreduce.map.speculative</name>
      <value>false</value>
    </property>
    <!-- 是否压缩输出 -->
    <property>
      <name>mapreduce.output.fileoutputformat.compress</name>
      <value>false</value>
    </property>
    <!-- 设置mapreduce最终数据输出压缩为块压缩 -->
    <property>
      <name>mapreduce.output.fileoutputformat.compress.type</name>
      <value>BLOCK</value>
    </property>
    <!-- 默认情况下,reduce是全部从磁盘开始读处理数据,如果这个参数大于0,那么就会有一定量的数据被缓存在内存并输送给reduce -->
    <property>
      <name>mapreduce.reduce.input.buffer.percent</name>
      <value>0.0</value>
    </property>
    <!--  Reducer JVM 内存 ,1638*2=3276-->
    <property>
      <name>mapreduce.reduce.java.opts</name>
      <value>-Xmx3276m</value>
    </property>
    <!-- 日志级别 -->
    <property>
      <name>mapreduce.reduce.log.level</name>
      <value>INFO</value>
    </property>
    <!--Reducer container 内存 -->
    <property>
      <name>mapreduce.reduce.memory.mb</name>
      <value>4096</value>
    </property>
    <!-- 设置为在主机重新启动期间启用提取重试。 -->
    <property>
      <name>mapreduce.reduce.shuffle.fetch.retry.enabled</name>
      <value>1</value>
    </property>
    <!-- 由于某些事件(如NM重启),当某些非致命故障发生时,提取器重试再次获取的时间间隔。 -->
    <property>
      <name>mapreduce.reduce.shuffle.fetch.retry.interval-ms</name>
      <value>1000</value>
    </property>
    <!-- 当由于某些事件(如NM重新启动)而发生某些非致命故障时,fetcher重试再次获取的超时值。 -->
    <property>
      <name>mapreduce.reduce.shuffle.fetch.retry.timeout-ms</name>
      <value>30000</value>
    </property>
    <!-- 配置JVM堆内存的多少比例可以用于存放map任务的输出结果 -->
    <property>
      <name>mapreduce.reduce.shuffle.input.buffer.percent</name>
      <value>0.7</value>
    </property>
    <!-- 开始spill的缓冲池比例阈值 -->
    <property>
      <name>mapreduce.reduce.shuffle.merge.percent</name>
      <value>0.66</value>
    </property>
    <!-- 提取map输出的copier线程数 -->
    <property>
      <name>mapreduce.reduce.shuffle.parallelcopies</name>
      <value>30</value>
    </property>
    <!-- 如果为true,则可以并行执行某些reduce任务的多个实例。 -->
    <property>
      <name>mapreduce.reduce.speculative</name>
      <value>false</value>
    </property>
    <!-- ShuffleHandler将运行的默认端口。ShuffleHandler是在NodeManager上运行的服务,以便于将中间Map输出传输到请求Reducers。 -->
    <property>
      <name>mapreduce.shuffle.port</name>
      <value>13562</value>
    </property>
    <!-- 排序文件时一次合并多少个文件的数量。这决定了打开文件句柄的数量 -->
    <property>
      <name>mapreduce.task.io.sort.factor</name>
      <value>100</value>
    </property>
    <!-- 用于map输出排序的内存大小 缓冲区的大小默认为100M -->
    <property>
      <name>mapreduce.task.io.sort.mb</name>
      <value>1146</value>
    </property>
    <!-- 如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则终止任务前的毫秒数。值为0将禁用超时。 -->
    <property>
      <name>mapreduce.task.timeout</name>
      <value>300000</value>
    </property>
    <!-- Java 出于管理目的选择 MR App Master 进程。 它会出现在由 yarn.app.mapreduce.am.command-opts 设置的选项之前,因此它的选项可以被用户覆盖。 如果使用了 hadoop 本机库,则使用 -Djava.library.path 会导致程序不再运行。 这些值应该使用 mapreduce.map.env 和 mapreduce.reduce.env 配置设置作为映射/reduce JVM 环境中的 LD_LIBRARY_PATH 的一部分设置 -->
    <property>
      <name>yarn.app.mapreduce.am.admin-command-opts</name>
      <value>-Dhdp.version=${hdp.version}</value>
    </property>
    <!-- MR AppMaster的Java opts ,默认是-Xmx1024m -->
    <property>
      <name>yarn.app.mapreduce.am.command-opts</name>
      <value>-Xmx1638m -Dhdp.version=${hdp.version}</value>
    </property>
    <!-- MR ApplicationMaster 的日志记录级别 -->
    <property>
      <name>yarn.app.mapreduce.am.log.level</name>
      <value>INFO</value>
    </property>
    <!-- 默认为1536。MR运行于YARN上时,为AM分配多少内存。默认值通常来说过小,建议设置为2048或4096等较大的值。 -->
    <property>
      <name>yarn.app.mapreduce.am.resource.mb</name>
      <value>2048</value>
    </property>
    <!-- MR作业在提交时所使用的临时目录, 是一个本地路径。 -->
    <property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user</value>
    </property>
    
  </configuration>

谢谢点赞和关注!