<?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>kvtest.file.size</name>
    <value>10485760</value>
  </property>
  <property>
    <name>mapreduce.reduce.class</name>
    <value>org.apache.hadoop.mapred.nativetask.kvtest.HashSumReducer</value>
  </property>
  <property>
    <name>mapred.output.value.class</name>
    <value>org.apache.hadoop.io.IntWritable</value>
  </property>
  <property>
    <name>nativetask.kvtest.keyclasses</name>
    <value>
      org.apache.hadoop.io.BytesWritable;
      org.apache.hadoop.io.BooleanWritable;
      org.apache.hadoop.io.ByteWritable;
      org.apache.hadoop.io.DoubleWritable;
      org.apache.hadoop.io.FloatWritable;
      org.apache.hadoop.io.IntWritable;
      org.apache.hadoop.io.LongWritable;
      org.apache.hadoop.io.Text;
      org.apache.hadoop.io.VIntWritable;
      org.apache.hadoop.io.VLongWritable;
    </value>
  </property>
  <property>
    <name>nativetask.kvtest.valueclasses</name>
    <value>
      org.apache.hadoop.io.BytesWritable;
      org.apache.hadoop.io.BooleanWritable;
      org.apache.hadoop.io.ByteWritable;
      org.apache.hadoop.io.DoubleWritable;
      org.apache.hadoop.io.FloatWritable;
      org.apache.hadoop.io.IntWritable;
      org.apache.hadoop.io.LongWritable;
      org.apache.hadoop.io.Text;
      org.apache.hadoop.io.VIntWritable;
      org.apache.hadoop.io.VLongWritable;
      org.apache.hadoop.mapred.nativetask.testutil.MockValueClass;
    </value>
  </property>
  <property>
    <name>mapred.output.compress</name>
    <value>false</value>
  </property>
  <property>
    <name>mapred.output.compression.type</name>
    <value>BLOCK</value>
  </property>
  <property>
    <name>mapred.compress.map.output</name>
    <value>true</value>
  </property>
  <property>
    <name>mapred.map.output.compression.codec</name>
    <value>org.apache.hadoop.io.compress.SnappyCodec</value>
  </property>
  <property>
    <name>hadoop.native.lib</name>
    <value>true</value>
  </property>
</configuration>
