<?xml version="1.0" encoding="UTF-8"?>
<!--
   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.
-->
<!--Fri Oct 25 05:21:20 2013-->
  <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://sandbox:8020</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hcat.groups</name>
    <value>*</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hive.groups</name>
    <value>*</value>
  </property>
    <property>
    <name>fs.trash.interval</name>
    <value>360</value>
  </property>
    <property>
    <name>mapreduce.jobtracker.webinterface.trusted</name>
    <value>false</value>
  </property>
    <property>
    <name>io.serializations</name>
    <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
  </property>
    <property>
    <name>fs.checkpoint.size</name>
    <value>0.5</value>
  </property>
    <property>
    <name>hadoop.security.auth_to_local</name>
    <value>
        RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/
        RULE:[2:$1@$0](jhs@.*)s/.*/mapred/
        RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/
        RULE:[2:$1@$0](hm@.*)s/.*/hbase/
        RULE:[2:$1@$0](rs@.*)s/.*/hbase/
        DEFAULT</value>
  </property>
    <property>
    <name>hadoop.security.authorization</name>
    <value>false</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hue.groups</name>
    <value>*</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hue.hosts</name>
    <value>*</value>
  </property>
    <property>
    <name>ipc.client.connection.maxidletime</name>
    <value>30000</value>
  </property>
    <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
    <property>
    <name>hadoop.proxyuser.oozie.hosts</name>
    <value>*</value>
  </property>
    <property>
    <name>io.compression.codecs</name>
    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec</value>
  </property>
    <property>
    <name>ipc.client.idlethreshold</name>
    <value>8000</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hive.hosts</name>
    <value>*</value>
  </property>
    <property>
    <name>hadoop.security.authentication</name>
    <value>simple</value>
  </property>
    <property>
    <name>hadoop.proxyuser.oozie.groups</name>
    <value>*</value>
  </property>
    <property>
    <name>ipc.client.connect.max.retries</name>
    <value>50</value>
  </property>
    <property>
    <name>hadoop.proxyuser.hcat.hosts</name>
    <value>*</value>
  </property>
  </configuration>