<?xml version="1.0"?>
<!--
  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.
-->
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<% resourcemanager_hosts = Array(@hadoop_rm_host) -%>
<configuration>
<% if @hadoop_security_authentication == "kerberos" %>
  <!-- JobTracker security configs -->
  <property>
    <name>yarn.resourcemanager.principal</name>
    <value>yarn/_HOST@<%= @kerberos_realm %></value>
  </property>
  <property>
    <name>yarn.resourcemanager.keytab</name>
    <value>/etc/yarn.keytab</value>
  </property>

  <property>
    <name>yarn.web-proxy.principal</name>
    <value>yarn/_HOST@<%= @kerberos_realm %></value>
  </property>
  <property>
    <name>yarn.web-proxy.keytab</name>
    <value>/etc/yarn.keytab</value>
  </property>

  <property>
    <name>yarn.nodemanager.principal</name>
    <value>yarn/_HOST@<%= @kerberos_realm %></value>
  </property>
  <property>
    <name>yarn.nodemanager.keytab</name>
    <value>/etc/yarn.keytab</value>
  </property>
  <property>
    <name>yarn.nodemanager.container-executor.class</name>
    <value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
  </property>
  <property>
    <name>yarn.nodemanager.linux-container-executor.group</name>
    <value>yarn</value>
  </property>
<% end %>

<% if @hadoop_ps_host %>
  <property>
    <name>yarn.web-proxy.address</name>
    <value><%= @hadoop_ps_host %>:<%= @hadoop_ps_port %></value>
  </property> 
<% end %>

<% if @yarn_resourcemanager_ha_enabled -%>

  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value><%= @yarn_resourcemanager_ha_enabled %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value><%= @yarn_resourcemanager_cluster_id %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value><%= (1..resourcemanager_hosts.length).map { |n| "rm#{n}" }.join(",") %></value>
  </property>

<%   resourcemanager_hosts.each_with_index do |host,idx| -%>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm<%= idx+1 %></name>
    <value><%= host %>:<%= @hadoop_rt_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.address.rm<%= idx+1 %></name>
    <value><%= host %>:<%= @hadoop_rm_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.address.rm<%= idx+1 %></name>
    <value><%= host %>:<%= @hadoop_sc_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.admin.address.rm<%= idx+1 %></name>
    <value><%= host %>:<%= @hadoop_rm_admin_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.webapp.address.rm<%= idx+1 %></name>
    <value><%= host %>:<%= @hadoop_rm_webapp_port %></value>
  </property>
<%   end -%>
<% if @yarn_resourcemanager_zk_address -%>

  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value><%= @yarn_resourcemanager_zk_address %></value>
  </property>
<% end -%>
<% else -%>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value><%= @hadoop_rm_host %>:<%= @hadoop_rt_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.address</name>
    <value><%= @hadoop_rm_host %>:<%= @hadoop_rm_port %></value>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value><%= @hadoop_rm_host %>:<%= @hadoop_sc_port %></value>
  </property>
<% end -%>

  <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.log-aggregation-enable</name>
    <value>true</value>
  </property>
<% if @yarn_log_server_url %>
  <property>
    <name>yarn.log.server.url</name>
    <value><%= @yarn_log_server_url %></value>
  </property>
<% end %>
  <property>
    <name>yarn.dispatcher.exit-on-error</name>
    <value>true</value>
  </property>

  <property>
    <name>yarn.nodemanager.local-dirs</name>
    <value><%= @yarn_data_dirs.join(",") %></value>
    <final>true</final>
  </property>

  <property>
    <description>Where to store container logs.</description>
    <name>yarn.nodemanager.log-dirs</name>
    <value>/var/log/hadoop-yarn/containers</value>
  </property>

  <property>
    <description>Where to aggregate logs to.</description>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/var/log/hadoop-yarn/apps</value>
  </property>

  <property>
    <description>Classpath for typical applications.</description>
     <name>yarn.application.classpath</name>
     <value>
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
     </value>
  </property>
<% if @yarn_scheduler_minimum_allocation_mb -%>

  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value><%= @yarn_scheduler_minimum_allocation_mb %></value>
  </property>
<% end -%>
<% if @yarn_scheduler_maximum_allocation_mb -%>

  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value><%= @yarn_scheduler_maximum_allocation_mb %></value>
  </property>
<% end -%>
<% if @yarn_nodemanager_resource_memory_mb -%>

  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value><%= @yarn_nodemanager_resource_memory_mb %></value>
  </property>
<% end -%>
<% if @yarn_resourcemanager_scheduler_class -%>

  <property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value><%= @yarn_resourcemanager_scheduler_class %></value>
  </property>
<% end -%>
</configuration>
