1. 程式人生 > >site.xml配置詳解

site.xml配置詳解

hbase.rootdir

<property>
    <name>hbase.rootdir</name>
    <value>file:///tmp/hbase-${user.name}/hbase</value>
</property>

這個目錄是region server的共享目錄,用來持久化HBase。URL需要是’完全正確’的,還要包含檔案系統的scheme。例如,要表示hdfs中的’/hbase’目錄,namenode 執行在namenode.example.org的9090埠。則需要設定為hdfs://namenode.example.org:9000/hbase。預設情況下HBase是寫到/tmp的。不改這個配置,資料會在重啟的時候丟失。
預設: file:///tmp/hbase-${user.name}/hbase

hbase.master.port

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

HBase的Master的埠. 預設值為60000

hbase.cluster.distributed

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

HBase的執行模式。false是單機模式,true是分散式模式。若為false,HBase和Zookeeper會執行在同一個JVM裡面。預設為:false

hbase.tmp.dir

<property>
    <name>hbase.tmp.dir</name>
    <value>${java.io.tmpdir}/hbase-${user.name}</value>
</property>

本地檔案系統的臨時資料夾。可以修改到一個更為持久的目錄上。(重啟時會清除/tmp目錄下的資料) 預設為:${java.io.tmpdir}/hbase-${user.name}

hbase.local.dir

<property>
    <name>hbase.local.dir</name>
    <value>${hbase.tmp.dir}/local/</value>
</property>

作為本地儲存,位於本地檔案系統的路徑。預設: ${hbase.tmp.dir}/local/

hbase.master.info.port

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

HBase Master web 介面埠. 設定為-1 意味著你不想讓他執行。
預設值為16010,如果Hbase版本低於0.98,則是60010

hbase.master.info.bindAddress

<property>
    <name>hbase.master.info.bindAddress</name>
    <value>0.0.0.0</value>
</property>

HBase Master web 介面繫結的埠,預設0.0.0.0

hbase.client.write.buffer

<property>
    <name>hbase.client.write.buffer</name>
    <value>2097152</value>
</property>

HTable客戶端的寫緩衝的預設大小。這個值越大,需要消耗的記憶體越大。因為緩衝在客戶端和服務端都有例項,所以需要消耗客戶端和服務端兩個地方的記憶體。得到的好處是,可以減少RPC的次數。可以這樣估算伺服器端被佔用的記憶體: hbase.client.write.buffer * hbase.regionserver.handler.count。 預設值:2097152

hbase.regionserver.port

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

HBase RegionServer繫結的埠,預設值為16020,如果Hbase版本低於0.98,則是60020

hbase.regionserver.info.port

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

HBase RegionServer web 介面繫結的埠 設定為 -1 意味這你不想與執行 RegionServer 介面. 預設為: 16030,如果Hbase版本低於0.98,則是60030

hbase.regionserver.info.port.auto

<property>
    <name>hbase.regionserver.info.port.auto</name>
    <value>false</value>
</property>

Master或RegionServer是否要動態搜一個可以用的埠來繫結介面。當hbase.regionserver.info.port已經被佔用的時候,可以搜一個空閒的埠繫結。這個功能在測試的時候很有用。預設關閉。

hbase.regionserver.info.bindAddress

<property>
    <name>hbase.regionserver.info.bindAddress</name>
    <value>0.0.0.0</value>
</property>

HBase RegionServer web 介面的IP地址,預設是0.0.0.0

hbase.regionserver.class

<property>
    <name>hbase.regionserver.class</name>
    <value>org.apache.hadoop.hbase.ipc.HRegionInterface</value>
</property>

RegionServer 使用的介面。客戶端開啟代理來連線region server的時候會使用到。預設是:org.apache.hadoop.hbase.ipc.HRegionInterface

hbase.client.pause

<property>
    <name>hbase.client.pause</name>
    <value>1000</value>
</property>

通常的客戶端暫停時間。最多的用法是客戶端在重試前的等待時間。比如失敗的get操作和region查詢操作等都很可能用到。預設:1000

hbase.client.retries.number

<property>
    <name>hbase.client.retries.number</name>
    <value>35</value>
</property>

最大重試次數。所有需重試操作的最大值。例如從root region伺服器獲取root region,Get單元值,行Update操作等等。這是最大重試錯誤的值。 Default: 35.

hbase.bulkload.retries.number

<property>
    <name>hbase.client.retries.number</name>
    <value>0</value>
</property>

最大重試次數。 原子批載入嘗試的迭代最大次數。 0 永不放棄。預設: 0.

hbase.client.scanner.caching

<property>
    <name>hbase.client.scanner.caching</name>
    <value>100</value>
</property>

當呼叫Scanner的next方法,而值又不在快取裡的時候,從服務端一次獲取的行數。越大的值意味著Scanner會快一些,但是會佔用更多的記憶體。當緩衝被佔滿的時候,next方法呼叫會越來越慢。慢到一定程度,可能會導致超時。例如超過了hbase.regionserver.lease.period。
預設: 100

hbase.client.scanner.caching

<property>
    <name>hbase.client.scanner.caching</name>
    <value>100</value>
</property>

當呼叫Scanner的next方法,而值又不在快取裡的時候,從服務端一次獲取的行數。越大的值意味著Scanner會快一些,但是會佔用更多的記憶體。當緩衝被佔滿的時候,next方法呼叫會越來越慢。慢到一定程度,可能會導致超時。例如超過了hbase.regionserver.lease.period。

預設: 100

hbase.client.keyvalue.maxsize

<property>
    <name>hbase.client.keyvalue.maxsize</name>
    <value>10485760</value>
</property>

一個KeyValue例項的最大size.這個是用來設定儲存檔案中的單個entry的大小上界。因為一個KeyValue是不能分割的,所以可以避免因為資料過大導致region不可分割。明智的做法是把它設為可以被最大region size整除的數。如果設定為0或者更小,就會禁用這個檢查。預設10MB。預設: 10485760

hbase.regionserver.lease.period

<property>
    <name>hbase.regionserver.lease.period</name>
    <value>60000</value>
</property>

客戶端租用HRegion server 期限,即超時閥值。單位是毫秒。預設情況下,客戶端必須在這個時間內發一條資訊,否則視為死掉。
預設: 60000

hbase.regionserver.handler.count

<property>
    <name>hbase.regionserver.handler.count</name>
    <value>10</value>
</property>

RegionServers受理的RPC Server例項數量。對於Master來說,這個屬性是Master受理的handler數量
預設: 10

hbase.regionserver.msginterval

<property>
    <name>hbase.regionserver.msginterval</name>
    <value>3000</value>
</property>

RegionServer 發訊息給 Master 時間間隔,單位是毫秒
預設: 3000

hbase.regionserver.optionallogflushinterval

<property>
    <name>hbase.regionserver.optionallogflushinterval</name>
    <value>1000</value>
</property>

將Hlog同步到HDFS的間隔。如果Hlog沒有積累到一定的數量,到了時間,也會觸發同步。預設是1秒,單位毫秒。
預設: 1000

hbase.regionserver.regionSplitLimit

<property>
    <name>hbase.regionserver.regionSplitLimit</name>
    <value>2147483647</value>
</property>

region的數量到了這個值後就不會在分裂了。這不是一個region數量的硬性限制。但是起到了一定指導性的作用,到了這個值就該停止分裂了。預設是MAX_INT.就是說不阻止分裂。
預設: 2147483647

hbase.regionserver.logroll.period

<property>
    <name>hbase.regionserver.logroll.period</name>
    <value>3600000</value>
</property>

提交commit log的間隔,不管有沒有寫足夠的值。
預設: 3600000

hbase.regionserver.hlog.reader.impl

<property>
    <name>hbase.regionserver.hlog.reader.impl</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader</value>
</property>

HLog file reader 的實現.
預設: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader

hbase.regionserver.hlog.writer.impl

<property>
    <name>hbase.regionserver.hlog.writer.impl</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter</value>
</property>

HLog file writer 的實現.
預設: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter

hbase.regionserver.nbreservationblocks

<property>
    <name>hbase.regionserver.nbreservationblocks</name>
    <value>4</value>
</property>

儲備的記憶體block的數量(譯者注:就像石油儲備一樣)。當發生out of memory 異常的時候,我們可以用這些記憶體在RegionServer停止之前做清理操作。
預設: 4

hbase.zookeeper.dns.interface

<property>
    <name>hbase.zookeeper.dns.interface</name>
    <value>default</value>
</property>

當使用DNS的時候,Zookeeper用來上報的IP地址的網路介面名字。
預設: default

hbase.zookeeper.dns.nameserver

<property>
    <name>hbase.zookeeper.dns.nameserver</name>
    <value>default</value>
</property>

當使用DNS的時候,Zookeepr使用的DNS的域名或者IP 地址,Zookeeper用它來確定和master用來進行通訊的域名.
預設: default

hbase.regionserver.dns.interface

<property>
    <name>hbase.regionserver.dns.interface</name>
    <value>default</value>
</property>

當使用DNS的時候,RegionServer用來上報的IP地址的網路介面名字。
預設: default

hbase.regionserver.dns.nameserver

<property>
    <name>hbase.regionserver.dns.nameserver</name>
    <value>default</value>
</property>

當使用DNS的時候,RegionServer使用的DNS的域名或者IP 地址,RegionServer用它來確定和master用來進行通訊的域名.
預設: default

hbase.master.dns.interface

<property>
    <name>hbase.master.dns.interface</name>
    <value>default</value>
</property>

當使用DNS的時候,Master用來上報的IP地址的網路介面名字。
預設: default

hbase.master.dns.nameserver

<property>
    <name>hbase.master.dns.nameserver</name>
    <value>default</value>
</property>

當使用DNS的時候,RegionServer使用的DNS的域名或者IP 地址,Master用它來確定用來進行通訊的域名.
預設: default

hbase.balancer.period

<property>
    <name>hbase.balancer.period</name>
    <value>300000</value>
</property>

Master執行region balancer的間隔。
預設: 300000

hbase.regions.slop

<property>
    <name>hbase.regions.slop</name>
    <value>0.2</value>
</property>

當任一區域伺服器有average + (average * slop)個分割槽,將會執行重新均衡。預設 20% slop .
預設:0.2

hbase.master.logcleaner.ttl

<property>
    <name>hbase.master.logcleaner.ttl</name>
    <value>600000</value>
</property>

Hlog存在於.oldlogdir 資料夾的最長時間, 超過了就會被 Master 的執行緒清理掉.
預設: 600000

hbase.master.logcleaner.plugins

<property>
    <name>hbase.master.logcleaner.plugins</name>
    <value>org.apache.hadoop.hbase.master.TimeToLiveLogCleaner</value>
</property>

LogsCleaner服務會執行的一組LogCleanerDelegat。值用逗號間隔的文字表示。這些WAL/HLog cleaners會按順序呼叫。可以把先呼叫的放在前面。你可以實現自己的LogCleanerDelegat,加到Classpath下,然後在這裡寫下類的全稱。一般都是加在預設值的前面。
預設: org.apache.hadoop.hbase.master.TimeToLiveLogCleaner

hbase.regionserver.global.memstore.upperLimit

<property>
    <name>hbase.regionserver.global.memstore.upperLimit</name>
    <value>0.4</value>
</property>

單個region server的全部memtores的最大值。超過這個值,一個新的update操作會被掛起,強制執行flush操作。
預設: 0.4

hbase.regionserver.global.memstore.lowerLimit

<property>
    <name>hbase.regionserver.global.memstore.lowerLimit</name>
    <value>0.35</value>
</property>

當強制執行flush操作的時候,當低於這個值的時候,flush會停止。預設是堆大小的 35% . 如果這個值和 hbase.regionserver.global.memstore.upperLimit 相同就意味著當update操作因為記憶體限制被掛起時,會盡量少的執行flush(譯者注:一旦執行flush,值就會比下限要低,不再執行)
預設: 0.35

hbase.server.thread.wakefrequency

<property>
    <name>hbase.server.thread.wakefrequency</name>
    <value>10000</value>
</property>

service工作的sleep間隔,單位毫秒。 可以作為service執行緒的sleep間隔,比如log roller.
預設: 10000

hbase.server.versionfile.writeattempts

<property>
    <name>hbase.server.versionfile.writeattempts</name>
    <value>3</value>
</property>

退出前嘗試寫版本檔案的次數。每次嘗試由 hbase.server.thread.wakefrequency 毫秒數間隔。
預設: 3

hbase.hregion.memstore.flush.size

<property>
    <name>hbase.hregion.memstore.flush.size</name>
    <value>134217728</value>
</property>

當memstore的大小超過這個值的時候,會flush到磁碟。這個值被一個執行緒每隔hbase.server.thread.wakefrequency檢查一下。
預設:134217728

hbase.hregion.preclose.flush.size

<property>
    <name>hbase.hregion.preclose.flush.size</name>
    <value>5242880</value>
</property>

當一個region中的memstore的大小大於這個值的時候,我們又觸發了close.會先執行“pre-flush”操作,清理這個需要關閉的memstore,然後將這個region下線。當一個region下線了,我們無法再進行任何寫操作。如果一個memstore很大的時候,flush操作會消耗很多時間。”pre-flush”操作意味著在region下線之前,會先把memstore清空。這樣在最終執行close操作的時候,flush操作會很快。
預設: 5242880

hbase.hregion.memstore.block.multiplier

<property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>2</value>
</property>

如果memstore有hbase.hregion.memstore.block.multiplier倍數的hbase.hregion.flush.size的大小,就會阻塞update操作。這是為了預防在update高峰期會導致的失控。如果不設上界,flush的時候會花很長的時間來合併或者分割,最壞的情況就是引發out of memory異常。(譯者注:記憶體操作的速度和磁碟不匹配,需要等一等。原文似乎有誤)
預設: 2

hbase.hregion.memstore.mslab.enabled

<property>
    <name>hbase.hregion.memstore.mslab.enabled</name>
    <value>true</value>
</property>

體驗特性:啟用memStore分配本地緩衝區。這個特性是為了防止在大量寫負載的時候堆的碎片過多。這可以減少GC操作的頻率。(GC有可能會Stop the world)(譯者注:實現的原理相當於預分配記憶體,而不是每一個值都要從堆裡分配)
預設: true

hbase.hregion.max.filesize

<property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>
</property>

最大HStoreFile大小。若某個列族的HStoreFile增長達到這個值,這個Hegion會被切割成兩個。 預設: 10G.
預設:10737418240

hbase.hstore.compactionThreshold

<property>
    <name>hbase.hstore.compactionThreshold</name>
    <value>3</value>
</property>

當一個HStore含有多於這個值的HStoreFiles(每一個memstore flush產生一個HStoreFile)的時候,會執行一個合併操作,把這HStoreFiles寫成一個。這個值越大,需要合併的時間就越長。
預設: 3

hbase.hstore.blockingStoreFiles

<property>
    <name>hbase.hstore.blockingStoreFiles</name>
    <value>7</value>
</property>

當一個HStore含有多於這個值的HStoreFiles(每一個memstore flush產生一個HStoreFile)的時候,會執行一個合併操作,update會阻塞直到合併完成,直到超過了hbase.hstore.blockingWaitTime的值
預設: 7

hbase.hstore.blockingWaitTime

<property>
    <name>hbase.hstore.blockingWaitTime</name>
    <value>90000</value>
</property>

hbase.hstore.blockingStoreFiles所限制的StoreFile數量會導致update阻塞,這個時間是來限制阻塞時間的。當超過了這個時間,HRegion會停止阻塞update操作,不過合併還有沒有完成。預設為90s.
預設: 90000

hbase.hstore.compaction.max

<property>
    <name>hbase.hstore.compaction.max</name>
    <value>10</value>
</property>

每個“小”合併的HStoreFiles最大數量。
預設: 10

hbase.hregion.majorcompaction

<property>
    <name>hbase.hregion.majorcompaction</name>
    <value>86400000</value>
</property>

一個Region中的所有HStoreFile的major compactions的時間間隔。預設是1天。 設定為0就是禁用這個功能。
預設: 86400000

hbase.storescanner.parallel.seek.enable

<property>
    <name>hbase.storescanner.parallel.seek.enable</name>
    <value>false</value>
</property>

允許 StoreFileScanner 並行搜尋 StoreScanner, 一個在特定條件下降低延遲的特性。
預設: false

hbase.storescanner.parallel.seek.threads

<property>
    <name>hbase.storescanner.parallel.seek.threads</name>
    <value>10</value>
</property>

並行搜尋特性開啟後,預設執行緒池大小。
預設: 10

hbase.mapreduce.hfileoutputformat.blocksize

<property>
    <name>hbase.mapreduce.hfileoutputformat.blocksize</name>
    <value>65536</value>
</property>

MapReduce中HFileOutputFormat可以寫 storefiles/hfiles. 這個值是hfile的blocksize的最小值。通常在HBase寫Hfile的時候,bloocksize是由table schema(HColumnDescriptor)決定的,但是在mapreduce寫的時候,我們無法獲取schema中blocksize。這個值越小,你的索引就越大,你隨機訪問需要獲取的資料就越小。如果你的cell都很小,而且你需要更快的隨機訪問,可以把這個值調低。
預設: 65536

hfile.block.cache.size

<property>
    <name>hfile.block.cache.size</name>
    <value>0.25</value>
</property>

分配給HFile/StoreFile的block cache佔最大堆(-Xmx setting)的比例。預設0.25意思是分配25%,設定為0就是禁用,但不推薦。
預設:0.25

hbase.hash.type

<property>
    <name>hbase.hash.type</name>
    <value>murmur</value>
</property>

雜湊函式使用的雜湊演算法。可以選擇兩個值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 這個雜湊是給 bloom filters用的.
預設: murmur

hfile.block.index.cacheonwrite

<property>
    <name>hfile.block.index.cacheonwrite</name>
    <value>false</value>
</property>

在index寫入的時候允許put無根(non-root)的多級索引塊到block cache裡,預設是false;

hfile.index.block.max.size

<property>
    <name>hfile.index.block.max.size</name>
    <value>131072</value>
</property>

在多級索引的樹形結構裡,如果任何一層的block index達到這個配置大小,則block寫出,同時替換上新的block,預設是131072;

hfile.format.version

<property>
    <name>hfile.format.version</name>
    <value>2</value>
</property>

新檔案的HFile 格式版本,設定為1來測試向後相容,預設是2;

io.storefile.bloom.block.size

<property>
    <name>io.storefile.bloom.block.size</name>
    <value>131072</value>
</property>

一個聯合布隆過濾器的單一塊(chunk)的大小,這個值是一個逼近值,預設是131072;

hfile.block.bloom.cacheonwrite

<property>
    <name>hfile.block.bloom.cacheonwrite</name>
    <value>false</value>
</property>

對於組合布隆過濾器的內聯block開啟cache-on-write,預設是false

hbase.rs.cacheblocksonwrite

<property>
    <name>hbase.rs.cacheblocksonwrite</name>
    <value>false</value>
</property>

當一個HFile block完成時是否寫入block cache,預設是false

hbase.rpc.server.engine

<property>
    <name>hbase.rpc.server.engine</name>
    <value>org.apache.hadoop.hbase.ipc.ProtobufRpcServerEngine</value>
</property>

hbase 做rpc server的排程管理類,實現自org.apache.hadoop.ipc.RpcServerEngine,預設是org.apache.hadoop.hbase.ipc.ProtobufRpcServerEngine

hbase.ipc.client.tcpnodelay

<property>
    <name>hbase.ipc.client.tcpnodelay</name>
    <value>true</value>
</property>

預設是true,具體就是在tcp socket連線時設定 no delay

hbase.master.keytab.file

<property>
    <name>hbase.master.keytab.file</name>
    <value></value>
</property>

HMaster server驗證登入使用的kerberos keytab 檔案路徑。(譯者注:HBase使用Kerberos實現安全)
預設:

hbase.master.kerberos.principal

<property>
    <name>hbase.master.kerberos.principal</name>
    <value></value>
</property>

例如. “hbase/[email protected]”. HMaster執行需要使用 kerberos principal name. principal name 可以在: user/[email protected] 中獲取. 如果 “_HOST” 被用做hostname portion,需要使用實際執行的hostname來替代它。
預設:

hbase.regionserver.keytab.file

<property>
    <name>hbase.regionserver.keytab.file</name>
    <value></value>
</property>

HRegionServer驗證登入使用的kerberos keytab 檔案路徑。
預設:

hbase.regionserver.kerberos.principal

<property>
    <name>hbase.regionserver.kerberos.principal</name>
    <value></value>
</property>

例如. “hbase/[email protected]”. HRegionServer執行需要使用 kerberos principal name. principal name 可以在: user/[email protected] 中獲取. 如果 “_HOST” 被用做hostname portion,需要使用實際執行的hostname來替代它。在這個檔案中必須要有一個entry來描述 hbase.regionserver.keytab.file
預設:

hadoop.policy.file

<property>
    <name>hadoop.policy.file</name>
    <value>habse-policy.xml</value>
</property>

RPC伺服器做許可權認證時需要的安全策略配置檔案,在Hbase security開啟後使用,預設是habse-policy.xml;

hbase.superuser

<property>
    <name>hbase.superuser</name>
    <value></value>
</property>

Hbase security 開啟後的超級使用者配置,一系列由逗號隔開的user或者group;

hbase.auth.key.update.interval

<property>
    <name>hbase.auth.key.update.interval</name>
    <value>86400000</value>
</property>

Hbase security開啟後服務端更新認證key的間隔時間:預設是86400000毫秒;

hbase.auth.token.max.lifetime

<property>
    <name>hbase.auth.token.max.lifetime</name>
    <value>604800000</value>
</property>

Hbase security開啟後,認證token下發後的生存週期,預設是604800000毫秒

zookeeper.session.timeout

<property>
    <name>zookeeper.session.timeout</name>
    <value>180000</value>
</property>

ZooKeeper 會話超時.HBase把這個值傳遞改zk叢集,向他推薦一個會話的最大超時時間。詳見http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions “The client sends a requested timeout, the server responds with the timeout that it can give the client. “。 單位是毫秒
預設: 180000

zookeeper.znode.parent

<property>
    <name>zookeeper.znode.parent</name>
    <value>/hbase</value>
</property>

ZooKeeper中的HBase的根ZNode。所有的HBase的ZooKeeper會用這個目錄配置相對路徑。預設情況下,所有的HBase的ZooKeeper檔案路徑是用相對路徑,所以他們會都去這個目錄下面。
預設: /hbase

zookeeper.znode.rootserver

<property>
    <name>zookeeper.znode.rootserver</name>
    <value>root-region-server</value>
</property>

ZNode 儲存的 根region的路徑. 這個值是由Master來寫,client和regionserver 來讀的。如果設為一個相對地址,父目錄就是 ${zookeeper.znode.parent}.預設情形下,意味著根region的路徑儲存在/hbase/root-region-server.
預設: root-region-server

zookeeper.znode.acl.parent

<property>
    <name>zookeeper.znode.acl.parent</name>
    <value>acl</value>
</property>

root znode的acl,預設acl;

hbase.coprocessor.region.classes

<property>
    <name>hbase.coprocessor.region.classes</name>
    <value></value>
</property>

逗號分隔的Coprocessores列表,會被載入到預設所有表上。在自己實現了一個Coprocessor後,將其新增到Hbase的classpath並加入全限定名。也可以延遲載入,由HTableDescriptor指定;

hbase.coprocessor.master.classes

<property>
    <name>hbase.coprocessor.master.classes</name>
    <value></value>
</property>

由HMaster程序載入的coprocessors,逗號分隔,全部實現org.apache.hadoop.hbase.coprocessor.MasterObserver,同coprocessor類似,加入classpath及全限定名;

hbase.zookeeper.quorum

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
</property>

Zookeeper叢集的地址列表,用逗號分割。例如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.預設是localhost,是給偽分散式用的。要修改才能在完全分散式的情況下使用。如果在hbase-env.sh設定了HBASE_MANAGES_ZK,這些ZooKeeper節點就會和HBase一起啟動。
預設: localhost

hbase.zookeeper.peerport

<property>
    <name>hbase.zookeeper.peerport</name>
    <value>2888</value>
</property>

ZooKeeper節點使用的埠。詳細參見:http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
預設: 2888

hbase.zookeeper.leaderport

<property>
    <name>hbase.zookeeper.leaderport</name>
    <value>3888</value>
</property>

ZooKeeper用來選擇Leader的埠,詳細參見:http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
預設: 3888

hbase.zookeeper.useMulti

<property>
    <name>hbase.zookeeper.useMulti</name>
    <value>false</value>
</property>

Instructs HBase to make use of ZooKeeper’s multi-update functionality. This allows certain ZooKeeper operations to complete more quickly and prevents some issues with rare Replication failure scenarios (see the release note of HBASE-2611 for an example). IMPORTANT: only set this to true if all ZooKeeper servers in the cluster are on version 3.4+ and will not be downgraded. ZooKeeper versions before 3.4 do not support multi-update and will not fail gracefully if multi-update is invoked (see ZOOKEEPER-1495).
Default: false

hbase.zookeeper.property.initLimit

<property>
    <name>hbase.zookeeper.property.initLimit</name>
    <value>10</value>
</property>

ZooKeeper的zoo.conf中的配置。 初始化synchronization階段的ticks數量限制
預設: 10

hbase.zookeeper.property.syncLimit

<property>
    <name>hbase.zookeeper.property.syncLimit</name>
    <value>5</value>
</property>

ZooKeeper的zoo.conf中的配置。 傳送一個請求到獲得承認之間的ticks的數量限制
預設: 5

hbase.zookeeper.property.dataDir

<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>${hbase.tmp.dir}/zookeeper</value>
</property>

ZooKeeper的zoo.conf中的配置。 快照的儲存位置
預設: ${hbase.tmp.dir}/zookeeper

hbase.zookeeper.property.clientPort

<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>

ZooKeeper的zoo.conf中的配置。 客戶端連線的埠
預設: 2181

hbase.zookeeper.property.maxClientCnxns

<property>
    <name>hbase.zookeeper.property.maxClientCnxns</name>
    <value>300</value>
</property>

ZooKeeper的zoo.conf中的配置。 ZooKeeper叢集中的單個節點接受的單個Client(以IP區分)的請求的併發數。這個值可以調高一點,防止在單機和偽分散式模式中出問題。
預設: 300

hbase.rest.port

<property>
    <name>hbase.rest.port</name>
    <value>8080</value>
</property>

HBase REST server的埠
預設: 8080

hbase.rest.readonly

<property>
    <name>hbase.rest.readonly</name>
    <value>false</value>
</property>

定義REST server的執行模式。可以設定成如下的值: false: 所有的HTTP請求都是被允許的 – GET/PUT/POST/DELETE. true:只有GET請求是被允許的
預設: false

hbase.defaults.for.version.skip

<property>
    <name>hbase.defaults.for.version.skip</name>
    <value>false</value>
</property>

Set to true to skip the ‘hbase.defaults.for.version’ check. Setting this to true can be useful in contexts other than the other side of a maven generation; i.e. running in an ide. You’ll want to set this boolean to true to avoid seeing the RuntimException complaint: “hbase-default.xml file seems to be for and old version of HBase (\${hbase.version}), this version is X.X.X-SNAPSHOT”
Default: false
是否跳過hbase.defaults.for.version的檢查,預設是false;

hbase.coprocessor.abortonerror

<property>
    <name>hbase.coprocessor.abortonerror</name>
    <value>true</value>
</property>

Set to true to cause the hosting server (master or regionserver) to abort if a coprocessor throws a Throwable object that is not IOException or a subclass of IOException. Setting it to true might be useful in development environments where one wants to terminate the server as soon as possible to simplify coprocessor failure analysis.
Default: false
如果coprocessor載入失敗或者初始化失敗或者丟擲Throwable物件,則主機退出。設定為false會讓系統繼續執行,但是coprocessor的狀態會不一致,所以一般debug時才會設定為false,預設是true;

hbase.online.schema.update.enable

<property>
    <name>hbase.online.schema.update.enable</name>
    <value>true</value>
</property>

Set true to enable online schema changes. This is an experimental feature. There are known issues modifying table schemas at the same time a region split is happening so your table needs to be quiescent or else you have to be running with splits disabled.
Default: false
設定true來允許線上schema變更,預設是true;

hbase.table.lock.enable

<property>
    <name>hbase.table.lock.enable</name>
    <value>true</value>
</property>

Set to true to enable locking the table in zookeeper for schema change operations. Table locking from master prevents concurrent schema modifications to corrupt table state.
Default: true
設定為true來允許在schema變更時zk鎖表,鎖表可以組織併發的schema變更導致的表狀態不一致,預設是true;

dfs.support.append

<property>
    <name>dfs.support.append</name>
    <value>true</value>
</property>

Does HDFS allow appends to files? This is an hdfs config. set in here so the hdfs client will do append support. You must ensure that this config. is true serverside too when running hbase (You will have to restart your cluster after setting it).
Default: true

hbase.thrift.minWorkerThreads

<property>
    <name>hbase.thrift.minWorkerThreads</name>
    <value>16</value>
</property>

The “core size” of the thread pool. New threads are created on every connection until this many threads are created.
Default: 16
執行緒池的core size,在達到這裡配置的量級後,新執行緒才會再新的連線創立時建立,預設是16;

hbase.thrift.maxWorkerThreads

<property>
    <name>hbase.thrift.maxWorkerThreads</name>
    <value>1000</value>
</property>

The maximum size of the thread pool. When the pending request queue overflows, new threads are created until their number reaches this number. After that, the server starts dropping connections.
Default: 1000
顧名思義,最大執行緒數,達到這個數字後,伺服器開始drop連線,預設是1000;

hbase.thrift.maxQueuedRequests

<property>
    <name>hbase.thrift.maxQueuedRequests</name>
    <value>1000</value>
</property>

The maximum number of pending Thrift connections waiting in the queue. If there are no idle threads in the pool, the server queues requests. Only when the queue overflows, new threads are added, up to hbase.thrift.maxQueuedRequests threads.
Default: 1000
Thrift連線佇列的最大數,如果執行緒池滿,會先在這個佇列中快取請求,快取上限就是該配置,預設是1000;

hbase.offheapcache.percentage

<property>
    <name>hbase.offheapcache.percentage</name>
    <value>0</value>
</property>

The amount of off heap space to be allocated towards the experimental off heap cache. If you desire the cache to be disabled, simply set this value to 0.
Default: 0
JVM引數-XX:MaxDirectMemorySize的百分比值,預設是0,即不開啟堆外分配;

hbase.data.umask.enable

<property>
    <name>hbase.data.umask.enable</name>
    <value>false</value>
</property>

Enable, if true, that file permissions should be assigned to the files written by the regionserver
Default: false
開啟後,檔案在regionserver寫入時會 有許可權相關設定,預設是false不開啟;

hbase.data.umask

<property>
    <name>hbase.data.umask</name>
    <value>000</value>
</property>

File permissions that should be used to write data files when hbase.data.umask.enable is true
Default: 000
開啟上面一項配置後,檔案的許可權umask,預設是000

hbase.metrics.showTableName

<property>
    <name>hbase.metrics.showTableName</name>
    <value>true</value>
</property>

Whether to include the prefix “tbl.tablename” in per-column family metrics. If true, for each metric M, per-cf metrics will be reported for tbl.T.cf.CF.M, if false, per-cf metrics will be aggregated by column-family across tables, and reported for cf.CF.M. In both cases, the aggregated metric M across tables and cfs will be reported.
Default: true
是否為每個指標顯示錶名字首,預設是true;

hbase.metrics.exposeOperationTimes

<property>
    <name>hbase.metrics.exposeOperationTimes</name>
    <value>true</value>
</property>

Whether to report metrics about time taken performing an operation on the region server. Get, Put, Delete, Increment, and Append can all have their times exposed through Hadoop metrics per CF and per region.
Default: true
是否進行關於操作在使用時間維度的指標報告,比如GET PUT DELETE INCREMENT等,預設是true;

hbase.master.hfilecleaner.plugins

<property>
    <name>hbase.master.hfilecleaner.plugins</name>
    <value>org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner</value>
</property>

A comma-separated list of HFileCleanerDelegate invoked by the HFileCleaner service. These HFiles cleaners are called in order, so put the cleaner that prunes the most files in front. To implement your own HFileCleanerDelegate, just put it in HBase’s classpath and add the fully qualified class name here. Always add the above default log cleaners in the list as they will be overwritten in hbase-site.xml.
Default: org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner
HFile的清理外掛列表,逗號分隔,被HFileService呼叫,可以自定義,預設org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner

hbase.regionserver.catalog.timeout

<property>
    <name>hbase.regionserver.catalog.timeout</name>
    <value>600000</value>
</property>

Timeout value for the Catalog Janitor from the regionserver to META.
Default: 600000
regionserver的Catalog Janitor訪問META的超時時間,預設是600000;

hbase.master.catalog.timeout

<property>
    <name>hbase.master.catalog.timeout</name>
    <value>600000</value>
</property>

Timeout value for the Catalog Janitor from the master to META.
Default: 600000
Catalog Janitor從master到META的超時時間,我們知道這個Janitor是定時的去META掃描表目錄,來決定回收無用的regions,預設是600000;

hbase.config.read.zookeeper.config

<property>
    <name>hbase.config.read.zookeeper.config</name>
    <value>false</value>
</property>

Set to true to allow HBaseConfiguration to read the zoo.cfg file for ZooKeeper properties. Switching this to true is not recommended, since the functionality of reading ZK properties from a zoo.cfg file has been deprecated.
Default: false
讓hbaseconfig去讀zk的config,預設false,也不支援開啟,這個功能很搞笑個人觀點;

hbase.snapshot.enabled

<property>
    <name>hbase.snapshot.enabled</name>
    <value>true</value>
</property>

Set to true to allow snapshots to be taken / restored / cloned.
Default: true
是否允許snapshot被使用、儲存和克隆,預設是true;

hbase.rest.threads.max

<property>
    <name>hbase.rest.threads.max</name>
    <value>100</value>
</property>

The maximum number of threads of the REST server thread pool. Threads in the pool are reused to process REST requests. This controls the maximum number of requests processed concurrently. It may help to control the memory used by the REST server to avoid OOM issues. If the thread pool is full, incoming requests will be queued up and wait for some free threads. The default is 100.
Default: 100
REST伺服器執行緒池的最大執行緒數,池滿的話新請求會自動排隊,限制這個配置可以控制伺服器的記憶體量,預防OOM,預設是100;

hbase.rest.threads.min

<property>
    <name>hbase.rest.threads.min</name>
    <value>2</value>
</property>

The minimum number of threads of the REST server thread pool. The thread pool always has at least these number of threads so the REST server is ready to serve incoming requests. The default is 2.
Default: 2
同上類似,最小執行緒數,為了確保伺服器的服務狀態,預設是2;