<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<configuration>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hnn-001-01:8030</value>
    </property>

    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hnn-001-01:8025</value>
    </property>

    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hnn-001-01:8050</value>
    </property>

    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hnn-001-01:8141</value>
    </property>

    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hnn-001-01:8088</value>
    </property>

    <property>
        <name>yarn.log.server.url</name>
        <value>http://hnn-001-01:19888/jobhistory/logs/</value>
        <description>URL for job history server</description>
    </property>

    <property>
      <name>yarn.application.classpath</name>
      <value>/usr/hdp/2.2.8.0-3150/hadoop/etc/hadoop, /usr/hdp/2.2.8.0-3150/hadoop/*, /usr/hdp/2.2.8.0-3150/hadoop/lib/*, /usr/hdp/2.2.8.0-3150/hadoop-hdfs/*, /usr/hdp/2.2.8.0-3150/hadoop-hdfs/lib/*, /usr/hdp/2.2.8.0-3150/hadoop-mapreduce/*, /usr/hdp/2.2.8.0-3150/hadoop-mapreduce/lib/*, /usr/hdp/2.2.8.0-3150/hadoop-yarn/*, /usr/hdp/2.2.8.0-3150/hadoop-yarn/lib/*</value>
    </property>

    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1024</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>87040</value>
    </property>
</configuration>
