1.1.3 探讨haoop配置文件

        让一个软件或集群工作起来,并保持健康并高效运行,肯定是需要有一个可靠的运行环境和对资源合理配置,譬如:内存的分配、路径指定、进程的配置等等。那么如何来配置和优化运行环境和所需资源呢?通常的做法是通过配置文件,当然hadoop也是如此做的。既然前几天已尝试将hadoop伪集群搭建好了,那就先了解下Hadoop的配置文件。

  1. hadoop-env.sh
    用于记录脚本运行所需要的环境变量、内存配置、JVM参数、日志文件存放目录等。
        

                              变量名称                                                           

    说明

    JAVA_HOME

    设置JDK的路径,保证了整个集群可以使用同一版本的Java,这个必须设置,

    否则Hadoop无法启动,值如:/usr/local/jdk1.6.0_33

     HADOOP_CONF_DIR  

     指定Hadoop系统配置文件目录路径。默认值:${HADOOP_CONF_DIR:-"/etc/hadoop"}

    HADOOP_CLASSPATH

    这个用以设置用户的类路径,也可以在执行计算之前设置(我是系统profile中进行的配置)

    默认值可为空

    HADOOP_HEAPSIZE

    设置Hadoop堆的大小,根据自己环境的实际情况进行设置了。如:各个守护进程内存分配,默认情况下1GB

    HADOOP_NAMENODE_INIT_HEAPSIZE

    Namenode堆的大小,内存配置,根据自己环境的实际情况进行设置了。默认值可为空。

    HADOOP_OPTS

    Hadoop启动时的JVM参数,默认是以server模式启动,可以加入-X或-XX之类的参数

    默认:HADOOP_OPTS -Djava.net.preferIPv4Stack=true

    HADOOP_NAMENODE_OPTS

    该选项的值会附加到HADOOP_OPTS之后,在启动NameNode时设置的JVM参数。

    如想手动设置NameNode的堆、垃圾回收等信息,可以在这里设置:

    export HADOOP_NAMENODE_OPTS="-Xmx2g -XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}" 

    其它的节点类似设置。

    默认值:-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} 

    HADOOP_SECONDARYNAMENODE_OPTS

    该选项的值会附加到HADOOP_OPTS之后,在启动SecondaryNameNode时设置的JVM参数

    默认值:-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS

    HADOOP_DATANODE_OPTS

    该选项的值会附加到HADOOP_OPTS之后,在启动DataNode时设置的JVM参数

    默认值:-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS

    HADOOP_CLIENT_OPTS

    该选项增加的参数,将会作用于多个命令,如fs, dfs, fsck, distcp等

    默认值:-Xmx512m $HADOOP_CLIENT_OPTS

    HADOOP_JAVA_PLATFORM_OPTS

     默认值:-XX:-UsePerfData $HADOOP_JAVA_PLATFORM_OPTS

    HADOOP_SECURE_DN_USER

     默认值:${HADOOP_SECURE_DN_USER}

    HADOOP_SECURE_DN_LOG_DIR

     默认值:${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}

    HADOOP_LOG_DIR

    日志文件存放的目录,日志文件的名称包含运行守护进程的用户名、守护进程名称和本地主机名等信息。

    例如hadoop-hadoop-namenode-Master.log,这种命名方式保证了集群内所有机器的日志文件名称

    各不相同,从而可以将所有日志文件保存到一个目录中。日志文件名称中“用户名称”部分对应

    HADOOP_IDENT_STRING项。

    默认值:${HADOOP_LOG_DIR}/$USER

    HADOOP_PID_DIR

    Hadoop PID文件的存放目录,这个最好是修改一下,

    因为/tmp目录通常来说是任何人都可以访问的,有可能存在符合链接攻击的风险。

    默认值:${HADOOP_PID_DIR}

    HADOOP_SECURE_DN_PID_DIR

     默认值:${HADOOP_PID_DIR}

    HADOOP_IDENT_STRING

    用于代表当前的Hadoop实例。默认值:$USER

  2. core-site.xml    

    hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设备等

    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
        <description>HDFS文件系统的URI,配置的是namenode主机的名称或IP地址,如果没有指定端口,系统默认分配8020端口,这样一来HDFS客户端就会知道namenode在哪里运行进而连接它 </description>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoopdir/tmp/</value>
        <description>临时存放数据的公共目录,NameNode、DataNode、JournalNode等进程用来存放临时数据 </description>
      </property>
      <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
        <description> SequenceFiles在读写中可以使用的缓存大小,这里设置为131072</description>
      </property>
      <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
        <description>hadoop文件系统也有回收站设施,被删除的文件并未被真正删除,而是被转移到一个特定的文件夹中(一般为.trash文件夹)
        ,回收站中的文件在被永久删除之前仍旧保留一定的时间,该项则为设定文件在回收站中保留的时间,默认情况下为0 ,表示该回收特性无效</description>
        <description> </description>
      </property>
      <property>
        <name>io.compression.codecs</name>
        <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
        <description>压缩算法 </description>
      </property>
      <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
        <description> 用户代理机制配置,Hadoop引入了安全伪装的功能,该功能允许一个超级用户代理其他用户执行作业或者命令,但对外看来执行者仍是普通用户</description>
      </property>
      <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
        <description> 用户代理机制配置,,Hadoop引入了安全伪装的功能,该功能允许一个超级用户代理其他用户执行作业或者命令,但对外看来执行者仍是普通用户,</description>
      </property>
    </configuration>

     

  3. hdfs-site.xml
    Hadoop 守护进程配置项,包括namenode、辅助namenode和datanode等
    <configuration>
    <property>
         <name>dfs.namenode.name.dir</name>
         <value>file:///home/hadoopdir/dfs/name,file:///home/hadoopdir/dfs1/nn</value>
       <description> namenode文件目录,用于存fsimage和edits文件,通常情况下将namenode元数据写道本地一到两个磁盘和一个远程磁盘(例如NFS挂载目录)之中,
       这样的话,即使本地磁盘发生故障都可以恢复元数据文件并重构新的namenode.(辅助namenode只是定期保存namenode的检查点。不维护namenode的最新备份 ) </description>
    </property>
    <property>
         <name>dfs.datanode.data.dir</name>
         <value>file:///home/hadoopdir/dfs/data,file:///home/hadoopdir/dfs1/dn</value>
       <description> HDFS存储数据块的目录 ,这里也可指定一系列的目录用于datanode循环的在各个目录中写数据,因此为了提高性能最好为各个本地磁盘指定一个目录。
       这样一来数据跨磁盘分布,针对不同数据块的读操作可并发执行从而提高读取性能(使用noatime挂载磁盘,使最近访问时间信息不刷新,可显著提高性能)</description>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mynamenode</value>
       <description> HDFS 的命名服务逻辑名称,用逗号分隔 </description>
    </property>
    <property>
        <name>dfs.ha.namenodes.mynamenode</name>
        <value>nn1,nn2</value>
       <description> nameservices包含namenode名称,用逗号分隔 </description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mynamenode.nn1</name>
        <value>hadoop0:8020</value>
       <description> nn1所在的rpc地址与端口 </description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mynamenode.nn2</name>
        <value>hadoop10:8020</value>
       <description> nn2所在的rpc地址与端口 </description>
    </property>
    <property>
        <name>dfs.namenode.http-address.mynamenode.nn1</name>
        <value>hadoop0:50070</value>
       <description> nn1所在的http地址与端口 </description>
    </property>
    <property>
        <name>dfs.namenode.http-address.mynamenode.nn2</name>
        <value>hadoop10:50070</value>
       <description> nn2所在的http地址与端口 </description>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop0:8485;hadoop1:8485;hadoop0:8485;hadoop10:8485;hadoop2:8485/mynamenode</value>
       <description> 共享存储目录的位置,这是配置备份节点需要随时保持同步活动节点所作更改的远程共享目录,属于HA配置 </description>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop/hard_disk/nn_shared_disk</value>
       <description> JournalNode用于存储的目录位置,属于HA配置 </description>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mynamenode</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
       <description> 这个参数指定具体的failover proxy provider类,
           也就是在client端发现原来Active的NameNode变成了Standby模式时
           (在client发送RPC请求时返回了StandbyException时),
           该如何去连接当前Active的NameNode。
           目前的Hadoop里只有一个具体实现策略ConfiguredFailoverProxyProvider,
           实现方法就是如果client failover时,下次把RPC发送给另外一个NameNode的proxy,属于HA配置 </description>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
       <description> 指定在Active NameNode切换到Standby模式时,确保切换成功或者进程被杀死。
           sshfence方式是 通过 ssh 登录到前一个 Active NameNode 并将其杀死 </description>
    </property>
    <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hdfs/.ssh/id_rsa</value>
       <description> 为了让该机制成功执行,需配置免密码 ssh 登陆
           (注意:这个为主备节点配置双向的 RSA 免密码登陆),
           这可通过参数 dfs.ha.fencing.ssh.private-key-files 指定一个私钥文件 </description>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>10000</value>
       <description> 另外,在设置一个超时时间,一旦 ssh 超过该时间,则认为执行失败。 </description>
    </property>
    
    
    <property>
            <name>dfs.permissions.superusergroup</name>
            <value>hdfs</value>
       <description> 超级用户组 </description>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
       <description> 复制因子,如果我们将该项值设置为1,那么HDFS就不会按照默认设置将文件系统块复本设为3,在单独一个datanode上运行时,HDFS无法将块复制到3个datanode上所以会持续给出块副本不足的警告 </description>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>true</value>
       <description> 是否开启文件操作时的权限 </description>
    </property>
    <property>
        <name>dfs.block.size</name>
        <value>134217728</value>
       <description> 128m的块大小 </description>
    </property>
    <property>
        <name>dfs.datanode.du.reserved</name>
        <value>10737418240</value>
       <description> 每个卷预留的空闲空间数量 </description>
    </property>
    <property>
        <name>dfs.datanode.handler.count</name>
        <value>5</value>
       <description> 数据节点的服务连接处理线程数 </description>
    </property>
    <property>
        <name>dfs.datanode.max.xcievers</name>
        <value>8192</value>
       <description> 默认值是256,每个node最多可以起多少个DataXceiver,
           如果太多的话可能会导致内存不足 </description>
    </property>
    <property>
        <name>dfs.datanode.socket.write.timeout</name>
        <value>0</value>
       <description> datanode写文件超时的时间 </description>
    </property>
    <property>
        <name>dfs.balance.bandwidthPerSec</name> 
        <value>10485760</value>
       <description> 启动负载均衡的数据节点可利用带宽最大值为多少</description>
    </property>
    <property>
        <name>dfs.datanode.failed.volumes.tolerated</name> 
        <value>2</value>
       <description> 决定停止数据节点提供服务充许卷的出错次数。
           0次则任何卷出错都要停止数据节点 </description>
    </property>
    <property> 
        <name>dfs.client.read.shortcircuit</name> 
        <value>true</value> 
       <description> 是否开启shortcircuit功能,开启后如果读的block文件在本地时,
           hdfs的client会直接读本地data.dir内的block文件,而不是从datanode的网络端口读取。 </description>
    </property> 
    <property> 
        <name>dfs.domain.socket.path</name> 
        <value>/var/run/hadoop-hdfs/dn._PORT</value> 
       <description> 这是可选的配置,这个是UNIX域套接字用来在DataNode
           和本地HDFS客户之间通信的路径,
           如果字符串“_PORT”存在,它将取代DataNode的TCP端口。 </description>
    </property>
    <property>
        <name>dfs.client.file-block-storage-locations.timeout</name>
        <value>3000</value>
       <description> Timeout (in seconds) for the parallel RPCs made in DistributedFileSystem#getFileBlockStorageLocations().
                并行RPC调用DistributedFileSystem的超时时间 </description>
    </property>
    <property>
        <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
        <value>true</value>
       <description> Boolean which enables backend datanode-side support for the experimental DistributedFileSystem#getFileVBlockStorageLocations API.
                        激活后台datanode-side以支持experimental DistributedFileSystem
     </description>
    </property>
    
    </configuration>
  4. mapred-site.xml
    mapreduce守护进程配置项,包括jobtracker和tasktracker
    <configuration>
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
          <description> mapreduce框架名,说明是mapreduce2.0 </description>
      </property>
      <property>
        <name>mapred.job.tracker</name>
        <value>Master:9001</value>
        <description>指定jobtracker所在的机器用以运行mapreduce </description>
      </property>
      <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>Master:50030</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>Master:10020</value>
        <description> MapReduce JobHistory Server地址。 </description>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Master:19888</value>
        <description>MapReduce JobHistory Server Web UI地址。  </description>
      </property>
      <property>
          <name>yarn.app.mapreduce.am.resource.mb</name>
          <value>1536</value>
          <description> MR ApplicationMaster占用的内存量 </description>
      </property>
      <property>
          <name>yarn.app.mapreduce.am.resource.cpu-vcores</name>
          <value>1</value>
          <description> MR ApplicationMaster占用的虚拟CPU个数 </description>
      </property>
      <property>
          <name>mapreduce.map.memory.mb</name>
          <value>1536</value>
          <description>每个Map Task需要的内存量  </description>
      </property>
      <property>
          <name>mapreduce.reduce.memory.mb</name>
          <value>1536</value>
          <description> 每个Reduce Task需要的内存量 </description>
      </property>
      <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx1280m</value>
          <description> JVM容器配置Larger heap-size for child jvms of maps. </description>
      </property>
      <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx1280m</value>
          <description>JVM容器配置 Larger heap-size for child jvms of reduces. </description>
      </property>
      <property>
        <name>mapred.child.java.opts</name>
        <value>-Xmx1280m</value>
        <description> 每个map或reduce使用的内存数量 </description>
        <final>true</final>
      </property>
      <property>
          <name>mapreduce.task.io.sort.mb</name>
          <value>768</value>
          <description> 任务内部排序缓冲区大小 </description>
      </property>
      <property>
        <name>yarn.app.mapreduce.am.staging-dir</name>
        <value>/hadoop-yarn/mr/staging</value>
        <description> client将application定义以及需要的jar包文件等上传到hdfs的指定目录 </description>
      </property>
      <property>
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>/hadoop-yarn/mr/intermediate_done</value>
        <description> MapReduce作业产生的日志存放位置。 </description>
      </property>
      <property>
        <name>mapreduce.jobhistory.done-dir</name>
        <value>/hadoop-yarn/mr/done</value>
        <description> MR JobHistory Server管理的日志的存放位置。 </description>
      </property>
    
      <property>
        <name>mapreduce.map.output.compress</name>
        <value>true</value>
        <description> map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,
            如果不压缩,就需要较多的传输带宽 </description>
      </property>
      <property>
        <name>mapreduce.map.output.compress.codec</name>
        <value>org.apache.hadoop.io.compress.SnappyCodec</value>
        <description> 配合以上参数,指定压缩方式 </description>
      </property>
      <property>
        <name>mapreduce.job.reduce.slowstart.completedmaps</name>
        <value>0.5</value>
        <description>慢启动reduce,默认的情况下调度器会一直等待,知道该作业的5%的map任务处理结束才会调用reduce任务。
     对于大型的作业来说这可能会降低集群的利用率,因为在等待map任务执行的过程中,占用了reduce曹等待reduce的资源输入。
     可以将此值设置大些,延迟reduce启用,避免过早占用资源,提升吞吐率</description>
      </property> 
      <property>
        <name>mapred.output.compress</name>
        <value>true</value>
        <description> mapred输出文件压缩 </description>
      </property>
      <property>
        <name>mapred.output.compression.type</name>
        <value>BLOCK</value>
        <description>  mapred输出文件压缩类型 </description>
      </property>
      <property>
        <name>mapred.output.compression.codec</name>
        <value>org.apache.hadoop.io.compress.SnappyCodec</value>
        <description>  mapred输出文件压缩算法 </description>
      </property>
      <property>
        <name>mapreduce.tasktracker.http.threads</name>
        <value>60</value>
        <description> 默认值:40,说明:map和reduce是通过http进行数据传输的,
            这个是设置传输的并行线程数。 </description>
      </property>
      <property>
        <name>mapreduce.task.io.sort.factor</name>
        <value>64</value>
        <description> merge的文件个数,排序文件的时候一次同时最多可并流的个数,默认值:10 </description>
      </property>
      <property>
        <name>mapreduce.job.counters.limit</name>
        <value>120</value>
        <description> 作业计数器的最小值,如果作业包含大量的counter,
            会严重降低该作业的性能,为此,用户可通过参数“mapreduce.job.counters.limit”
            设置作业Counter数目上限,默认是120,另外,作业的Counter Group数目上限是50,
            这个不能配置。  </description>
      </property>
      <property>
         <name>mapreduce.reduce.shuffle.memory.limit.percent</name>
         <value>0.15</value>
         <description>默认值: 0.25,说明:一个单一的shuffle的最大内存使用限制。 </description>
      </property>
    </configuration>
  5. yarn-evn.sh
    运行yarn脚本所使用的环境变量
  6. yarn-site.xml
    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop0:8025</value>
        <description>ResourceManager 对NodeManager暴露的地址
            NodeManager通过该地址向RM汇报心跳,领取任务等。 </description>
      </property>
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop0:8040</value>
        <description>ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序
            杀死应用程序等。 </description>
      </property>
      <property>
        <name>yarn.web-proxy.address</name>
        <value>hadoop0:8042</value>
        <description> web代理主机地址与端口,如果不指定,会跑ResourceManager的地址</description>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop0:8030</value>
        <description>ResourceManager 对ApplicationMaster暴露的访问地址。
            ApplicationMaster通过该地址向RM申请资源、释放资源等。 </description>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop0:8141</value>
        <description>ResourceManager 对管理员暴露的访问地址。
            管理员通过该地址向RM发送管理命令等。 </description>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop0:8088</value>
        <description>ResourceManager对外web ui地址。
            用户可通过该地址在浏览器中查看集群各类信息。 </description>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce.shuffle</value>
        <description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,
            才可运行MapReduce程序 ,之前版本tasktrack会将map的输出作为reduce的输入,
          鉴于yarn舍弃了tasktracker,因此它依赖于shuffle来完成此任务</description>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        <description> shuffle类</description>
      </property>
      <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/home/hadoop/nm-local-dir</value>
        <description> 中间结果存放位置,类似于1.0中的rdred.local.dir。注意,
            这个参数通常会配置多个目录,已分摊磁盘IO负载。 默认值:${hadoop.tmp.dir}/nm-local-dir</description>
      </property>
      <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/home/hadoop/userlogs</value>
        <description>参数解释:日志存放地址(可配置多个目录)默认值:${yarn.log.dir}/userlogs </description>
      </property>
    
      <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>22 </value>
        <description> NodeManager总的可用虚拟CPU个数,默认值:8 </description>
      </property>
      <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>28672 </value>
        <description> 表示该节点上YARN可使用的物理内存总量,默认是8192(MB),
            注意,如果你的节点内存资源不够8GB,则需要调减小这个值,
            而YARN不会智能的探测节点的物理内存总量。 </description>
      </property>
      <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
        <description> 每使用1MB物理内存,最多可用的虚拟内存数。默认值:2.1 </description>
      </property>
      <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
        <description> 是否启动一个线程检查每个任务正使用的物理内存量,
            如果任务超出分配值,则直接将其杀掉,默认是true。 </description>
      </property>
      <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
        <description> 是否启动一个线程检查每个任务正使用的虚拟内存量,
            如果任务超出分配值,则直接将其杀掉,默认是true。 </description>
      </property>
    
      <property>
        <name>yarn.resourcemanager.resource-tracker.client.thread-count</name>
        <value>50</value>
        <description>处理来自NodeManager的RPC请求的Handler数目。默认值:50 </description>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.client.thread-count</name>
        <value>50</value>
        <description> 处理来自ApplicationMaster的RPC请求的Handler数目。默认值:50</description>
      </property>
      <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
        <description>单个可申请的最小/最大内存资源量。比如设置为1024和3072,
            则运行MapRedce作业时,每个Task最少可申请1024MB内存,
            最多可申请3072MB内存。默认值:1024/8192 </description>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>15360</value>
        <description> 单个可申请的最小/最大内存资源量。比如设置为1024和3072,
            则运行MapRedce作业时,每个Task最少可申请1024MB内存,
            最多可申请3072MB内存。默认值:1024/8192 </description>
      </property>
      <property>
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
        <description> 单个任务可申请的最小虚拟CPU个数,默认是1,
            如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。 </description>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>22</value>
        <description> 单个可申请的最小/最大虚拟CPU个数。比如设置为1和4,
            则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,
            最多可申请4个虚拟CPU。 </description>
      </property>
    
    
      <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
        <description>启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。 </description>
      </property>
      <property>
        <name>yarn.scheduler.fair.user-as-default-queue</name>
        <value>false</value>
        <description>当应用程序未指定队列名时,是否指定用户名作为应用程序所在的队列名。
            如果设置为false或者未设置,所有未知队列的应用程序将被提交到default队列中,
            默认值为true。 </description>
      </property>
      <property>
        <name>yarn.scheduler.fair.allocation.file</name>
        <value>/home/hadoop/conf/resource-pools.xml</value>
        <description>自定义XML配置文件所在位置,该文件主要用于描述各个队列的属性,
            比如资源量、权重等,有固定格式。 </description>
      </property>
      <property>
        <name>yarn.scheduler.fair.preemption</name>
        <value>false</value>
        <description> 是否启用抢占机制,默认值是false。 </description>
      </property>
     
      <property>
        <name>yarn.scheduler.fair.sizebasedweight</name>
        <value>false</value>
        <description> 在一个队列内部分配资源时,默认情况下,采用公平轮询的方法将资源分配各
            各个应用程序,而该参数则提供了另外一种资源分配方式:按照应用程序资源需求数目分配资源,
            即需求资源数量越多,分配的资源越多。默认情况下,该参数值为false。</description>
      </property>
      <property>
        <name>yarn.scheduler.fair.assignmultiple</name>
        <value>true</value>
        <description>是否启动批量分配功能。当一个节点出现大量资源时,可以一次分配完成,
            也可以多次分配完成。默认情况下,该参数值为false。 </description>
      </property>
     
      <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
        <description> 是否启用日志聚集功能。</description>
      </property>
      <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/hadoop-yarn/logs/apps</value>
        <description>当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)
            默认值:/tmp/logs </description>
      </property>
    </configuration>
posted @ 2017-04-24 10:25  royis  阅读(324)  评论(0)    收藏  举报