<?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>dfs.client.read.shortcircuit</name>
      <value>true</value>
    </property>
    
    <property>
      <name>hbase.client.scanner.caching</name>
      <value>10000</value>
    </property>
    
    <property>
      <name>hbase.client.scanner.timeout.period</name>
      <value>300000</value>
    </property>
    
    <property>
      <name>hbase.cluster.distributed</name>
      <value>false</value>
    </property>
    
    <property>
      <name>hbase.hregion.majorcompaction</name>
      <value>0</value>
    </property>
    
    <property>
      <name>hbase.hregion.max.filesize</name>
      <value>4294967296</value>
    </property>
    
    <property>
      <name>hbase.hregion.memstore.block.multiplier</name>
      <value>4</value>
    </property>
    
    <property>
      <name>hbase.hregion.memstore.flush.size</name>
      <value>134217728</value>
    </property>
    
    <property>
      <name>hbase.hstore.blockingStoreFiles</name>
      <value>200</value>
    </property>
    
    <property>
      <name>hbase.hstore.flusher.count</name>
      <value>2</value>
    </property>
    
    <property>
      <name>hbase.local.dir</name>
      <value>${hbase.tmp.dir}/local</value>
    </property>
    
    <property>
      <name>hbase.master.info.bindAddress</name>
      <value>0.0.0.0</value>
    </property>
    
    <property>
      <name>hbase.master.info.port</name>
      <value>61310</value>
    </property>
    
    <property>
      <name>hbase.master.normalizer.class</name>
      <value>org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer</value>
    </property>
    
    <property>
      <name>hbase.master.port</name>
      <value>61300</value>
    </property>
    
    <property>
      <name>hbase.master.wait.on.regionservers.mintostart</name>
      <value>1</value>
    </property>
    
    <property>
      <name>hbase.normalizer.enabled</name>
      <value>false</value>
    </property>
    
    <property>
      <name>hbase.normalizer.period</name>
      <value>600000</value>
    </property>
    
    <property>
      <name>hbase.regionserver.global.memstore.lowerLimit</name>
      <value>0.3</value>
    </property>
    
    <property>
      <name>hbase.regionserver.global.memstore.upperLimit</name>
      <value>0.35</value>
    </property>
    
    <property>
      <name>hbase.regionserver.info.port</name>
      <value>61330</value>
    </property>
    
    <property>
      <name>hbase.regionserver.port</name>
      <value>61320</value>
    </property>
    
    <property>
      <name>hbase.regionserver.thread.compaction.large</name>
      <value>2</value>
    </property>
    
    <property>
      <name>hbase.regionserver.thread.compaction.small</name>
      <value>3</value>
    </property>
    
    <property>
      <name>hbase.replication</name>
      <value>false</value>
    </property>
    
    <property>
      <name>hbase.rootdir</name>
      <value>file:///var/lib/ambari-metrics-collector/hbase</value>
    </property>
    
    <property>
      <name>hbase.rpc.timeout</name>
      <value>300000</value>
    </property>
    
    <property>
      <name>hbase.snapshot.enabled</name>
      <value>false</value>
    </property>
    
    <property>
      <name>hbase.superuser</name>
      <value>activity_explorer,activity_analyzer</value>
    </property>
    
    <property>
      <name>hbase.tmp.dir</name>
      <value>/var/lib/ambari-metrics-collector/hbase-tmp</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.leaderport</name>
      <value>61388</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.peerport</name>
      <value>61288</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>61181</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>${hbase.tmp.dir}/zookeeper</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.property.tickTime</name>
      <value>6000</value>
    </property>
    
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>c6401.ambari.apache.org</value>
      <final>true</final>
    </property>
    
    <property>
      <name>hfile.block.cache.size</name>
      <value>0.3</value>
    </property>
    
    <property>
      <name>phoenix.coprocessor.maxMetaDataCacheSize</name>
      <value>20480000</value>
    </property>
    
    <property>
      <name>phoenix.coprocessor.maxServerCacheTimeToLiveMs</name>
      <value>60000</value>
    </property>
    
    <property>
      <name>phoenix.groupby.maxCacheSize</name>
      <value>307200000</value>
    </property>
    
    <property>
      <name>phoenix.mutate.batchSize</name>
      <value>10000</value>
    </property>
    
    <property>
      <name>phoenix.query.keepAliveMs</name>
      <value>300000</value>
    </property>
    
    <property>
      <name>phoenix.query.maxGlobalMemoryPercentage</name>
      <value>15</value>
    </property>
    
    <property>
      <name>phoenix.query.rowKeyOrderSaltedTable</name>
      <value>true</value>
    </property>
    
    <property>
      <name>phoenix.query.spoolThresholdBytes</name>
      <value>20971520</value>
    </property>
    
    <property>
      <name>phoenix.query.timeoutMs</name>
      <value>300000</value>
    </property>
    
    <property>
      <name>phoenix.sequence.saltBuckets</name>
      <value>2</value>
    </property>
    
    <property>
      <name>phoenix.spool.directory</name>
      <value>${hbase.tmp.dir}/phoenix-spool</value>
    </property>
    
    <property>
      <name>zookeeper.session.timeout</name>
      <value>120000</value>
    </property>
    
    <property>
      <name>zookeeper.session.timeout.localHBaseCluster</name>
      <value>120000</value>
    </property>
    
    <property>
      <name>zookeeper.znode.parent</name>
      <value>/ams-hbase-unsecure</value>
    </property>

    <property>
      <name>hbase.use.dynamic.jars</name>
      <value>false</value>
    </property>

  </configuration>