<?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>hbase.rootdir</name>
    <value>hdfs://${INTERNAL_LISTEN_HOST}:20500/hbase</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>The replication count for HLog and HFile storage. Should not be greater than HDFS datanode count.
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>The mode the cluster will be in. Possible values are
      false: standalone and pseudo-distributed setups with managed Zookeeper
      true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
    </description>
  </property>
  <property>
    <name>hbase.client.retries.number</name>
    <value>35</value>
  </property>
  <property>
    <name>hbase.rpc.timeout</name>
    <value>30000</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>${IMPALA_CLUSTER_LOGS_DIR}/zoo</value>
  </property>

  <property>
    <name>hbase.master.hostname</name>
    <value>${INTERNAL_LISTEN_HOST}</value>
  </property>

  <property>
    <name>hbase.master.port</name>
    <value>16000</value>
  </property>

  <property>
    <name>hbase.master.info.port</name>
    <value>16010</value>
  </property>

  <property>
    <name>hbase.regionserver.hostname</name>
    <value>${INTERNAL_LISTEN_HOST}</value>
  </property>

  <property>
    <name>hbase.regionserver.port</name>
    <value>16020</value>
  </property>

  <property>
    <name>hbase.regionserver.info.port</name>
    <value>16030</value>
  </property>

  <property>
    <name>hbase.status.multicast.port</name>
    <value>16100</value>
  </property>

  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>${INTERNAL_LISTEN_HOST}</value> <!-- The comma-separated
    list of hostnames of the ZooKeeper Quorum hosts -->
  </property>

  <!-- BEGIN Kerberos settings -->
  <property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
  </property>

  <property>
    <name>hbase.regionserver.kerberos.principal</name>
    <value>${MINIKDC_PRINC_HBSE}</value>
  </property>

  <property>
    <name>hbase.regionserver.keytab.file</name>
    <value>${KRB5_KTNAME}</value>
  </property>

  <property>
    <name>hbase.master.kerberos.principal</name>
    <value>${MINIKDC_PRINC_HBSE}</value>
  </property>

  <property>
    <name>hbase.master.keytab.file</name>
    <value>${KRB5_KTNAME}</value>
  </property>

  <property>
    <name>hbase.coprocessor.region.classes</name>
    <value>org.apache.hadoop.hbase.security.token.TokenProvider</value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.authProvider.1</name>
    <value>org.apache.zookeeper.server.auth.SASLAuthenticationProvider</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.kerberos.removeHostFromPrincipal</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.kerberos.removeRealmFromPrincipal</name>
    <value>true</value>
  </property>
  <!-- END Kerberos settings -->

</configuration>
