正如Hadoop放置HDFS的配置文件hdfs-site.xml,Hbase的配置文件是 conf/hbase-site.xml. 你能夠在 Section 3.1.1, 「HBase 默認配置」找到配置的屬性列表。你也能夠看有代碼裏面的hbase-default.xml文件,他在src/main/resources目錄下。
不是全部的配置都在 hbase-default.xml出現.只要改了代碼,配置就有可能改變,因此惟一瞭解這些被改過的配置的辦法是讀源代碼自己。html
要注意的是,要重啓集羣才能是配置生效。node
HBase 默認配置
HBase 默認配置
該文檔是用hbase默認配置文件生成的,文件源是 hbase-default.xml(因翻譯須要,被譯者修改爲中文註釋).
hbase.rootdir
這個目錄是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
Hbase的Master的端口.
默認: 60000
hbase.cluster.distributed
Hbase的運行模式。false是單機模式,true是分佈式模式。若爲false,Hbase和Zookeeper會運行在同一個JVM裏面。
默認: false
hbase.tmp.dir
本地文件系統的臨時文件夾。能夠修改到一個更爲持久的目錄上。(/tmp會在重啓時清楚)
默認: /tmp/hbase-${user.name}
hbase.master.info.port
HBase Master web 界面端口. 設置爲-1 意味着你不想讓他運行。
默認: 60010
hbase.master.info.bindAddress
HBase Master web 界面綁定的端口
默認: 0.0.0.0
hbase.client.write.buffer
HTable客戶端的寫緩衝的默認大小。這個值越大,須要消耗的內存越大。由於緩衝在客戶端和服務端都有實例,因此須要消耗客戶端和服務端兩個地方的內存。獲得的好處是,能夠減小RPC的次數。能夠這樣估算服務器端被佔用的內存: hbase.client.write.buffer * hbase.regionserver.handler.count
默認: 2097152
hbase.regionserver.port
HBase RegionServer綁定的端口
默認: 60020
hbase.regionserver.info.port
HBase RegionServer web 界面綁定的端口 設置爲 -1 意味這你不想與運行 RegionServer 界面.
默認: 60030
hbase.regionserver.info.port.auto
Master或RegionServer是否要動態搜一個能夠用的端口來綁定界面。當hbase.regionserver.info.port已經被佔用的時候,能夠搜一個空閒的端口綁定。這個功能在測試的時候頗有用。默認關閉。
默認: false
hbase.regionserver.info.bindAddress
HBase RegionServer web 界面的IP地址
默認: 0.0.0.0
hbase.regionserver.class
RegionServer 使用的接口。客戶端打開代理來鏈接region server的時候會使用到。
默認: org.apache.hadoop.hbase.ipc.HRegionInterface
hbase.client.pause
一般的客戶端暫停時間。最多的用法是客戶端在重試前的等待時間。好比失敗的get操做和region查詢操做等都極可能用到。
默認: 1000
hbase.client.retries.number
最大重試次數。例如 region查詢,Get操做,Update操做等等均可能發生錯誤,須要重試。這是最大重試錯誤的值。
默認: 10
hbase.client.scanner.caching
當調用Scanner的next方法,而值又不在緩存裏的時候,從服務端一次獲取的行數。越大的值意味着Scanner會快一些,可是會佔用更多的內存。當緩衝被佔滿的時候,next方法調用會愈來愈慢。慢到必定程度,可能會致使超時。例如超過了hbase.regionserver.lease.period。
默認: 1
hbase.client.keyvalue.maxsize
一個KeyValue實例的最大size.這個是用來設置存儲文件中的單個entry的大小上界。由於一個KeyValue是不能分割的,因此能夠避免由於數據過大致使region不可分割。明智的作法是把它設爲能夠被最大region size整除的數。若是設置爲0或者更小,就會禁用這個檢查。默認10MB。
默認: 10485760
hbase.regionserver.lease.period
客戶端租用HRegion server 期限,即超時閥值。單位是毫秒。默認狀況下,客戶端必須在這個時間內發一條信息,不然視爲死掉。
默認: 60000
hbase.regionserver.handler.count
RegionServers受理的RPC Server實例數量。對於Master來講,這個屬性是Master受理的handler數量
默認: 10
hbase.regionserver.msginterval
RegionServer 發消息給 Master 時間間隔,單位是毫秒
默認: 3000
hbase.regionserver.optionallogflushinterval
將Hlog同步到HDFS的間隔。若是Hlog沒有積累到必定的數量,到了時間,也會觸發同步。默認是1秒,單位毫秒。
默認: 1000
hbase.regionserver.regionSplitLimit
region的數量到了這個值後就不會在分裂了。這不是一個region數量的硬性限制。可是起到了必定指導性的做用,到了這個值就該中止分裂了。默認是MAX_INT.就是說不阻止分裂。
默認: 2147483647
hbase.regionserver.logroll.period
提交commit log的間隔,無論有沒有寫足夠的值。
默認: 3600000
hbase.regionserver.hlog.reader.impl
HLog file reader 的實現.
默認: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader
hbase.regionserver.hlog.writer.impl
HLog file writer 的實現.
默認: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter
hbase.regionserver.thread.splitcompactcheckfrequency
region server 多久執行一次split/compaction 檢查.
默認: 20000
hbase.regionserver.nbreservationblocks
儲備的內存block的數量(譯者注:就像石油儲備同樣)。當發生out of memory 異常的時候,咱們能夠用這些內存在RegionServer中止以前作清理操做。
默認: 4
hbase.zookeeper.dns.interface
當使用DNS的時候,Zookeeper用來上報的IP地址的網絡接口名字。
默認: default
hbase.zookeeper.dns.nameserver
當使用DNS的時候,Zookeepr使用的DNS的域名或者IP 地址,Zookeeper用它來肯定和master用來進行通信的域名.
默認: default
hbase.regionserver.dns.interface
當使用DNS的時候,RegionServer用來上報的IP地址的網絡接口名字。
默認: default
hbase.regionserver.dns.nameserver
當使用DNS的時候,RegionServer使用的DNS的域名或者IP 地址,RegionServer用它來肯定和master用來進行通信的域名.
默認: default
hbase.master.dns.interface
當使用DNS的時候,Master用來上報的IP地址的網絡接口名字。
默認: default
hbase.master.dns.nameserver
當使用DNS的時候,RegionServer使用的DNS的域名或者IP 地址,Master用它來肯定用來進行通信的域名.
默認: default
hbase.balancer.period
Master執行region balancer的間隔。
默認: 300000
hbase.regions.slop
當任一regionserver有average + (average * slop)個region是會執行Rebalance
默認: 0
hbase.master.logcleaner.ttl
Hlog存在於.oldlogdir 文件夾的最長時間, 超過了就會被 Master 的線程清理掉.
默認: 600000
hbase.master.logcleaner.plugins
LogsCleaner服務會執行的一組LogCleanerDelegat。值用逗號間隔的文本表示。這些WAL/HLog cleaners會按順序調用。能夠把先調用的放在前面。你能夠實現本身的LogCleanerDelegat,加到Classpath下,而後在這裏寫下類的全稱。通常都是加在默認值的前面。
默認: org.apache.hadoop.hbase.master.TimeToLiveLogCleaner
hbase.regionserver.global.memstore.upperLimit
單個region server的所有memtores的最大值。超過這個值,一個新的update操做會被掛起,強制執行flush操做。
默認: 0.4
hbase.regionserver.global.memstore.lowerLimit
當強制執行flush操做的時候,當低於這個值的時候,flush會中止。默認是堆大小的 35% . 若是這個值和 hbase.regionserver.global.memstore.upperLimit 相同就意味着當update操做由於內存限制被掛起時,會盡可能少的執行flush(譯者注:一旦執行flush,值就會比下限要低,再也不執行)
默認: 0.35
hbase.server.thread.wakefrequency
service工做的sleep間隔,單位毫秒。 能夠做爲service線程的sleep間隔,好比log roller.
默認: 10000
hbase.hregion.memstore.flush.size
當memstore的大小超過這個值的時候,會flush到磁盤。這個值被一個線程每隔hbase.server.thread.wakefrequency檢查一下。
默認: 67108864
hbase.hregion.preclose.flush.size
當一個region中的memstore的大小大於這個值的時候,咱們又觸發了close.會先運行「pre-flush」操做,清理這個須要關閉的memstore,而後將這個region下線。當一個region下線了,咱們沒法再進行任何寫操做。若是一個memstore很大的時候,flush操做會消耗不少時間。"pre-flush"操做意味着在region下線以前,會先把memstore清空。這樣在最終執行close操做的時候,flush操做會很快。
默認: 5242880
hbase.hregion.memstore.block.multiplier
若是memstore有hbase.hregion.memstore.block.multiplier倍數的hbase.hregion.flush.size的大小,就會阻塞update操做。這是爲了預防在update高峯期會致使的失控。若是不設上界,flush的時候會花很長的時間來合併或者分割,最壞的狀況就是引起out of memory異常。(譯者注:內存操做的速度和磁盤不匹配,須要等一等。原文彷佛有誤)
默認: 2
hbase.hregion.memstore.mslab.enabled
體驗特性:啓用memStore分配本地緩衝區。這個特性是爲了防止在大量寫負載的時候堆的碎片過多。這能夠減小GC操做的頻率。(GC有可能會Stop the world)(譯者注:實現的原理至關於預分配內存,而不是每個值都要從堆裏分配)
默認: false
hbase.hregion.max.filesize
最大HStoreFile大小。若某個Column families的HStoreFile增加達到這個值,這個Hegion會被切割成兩個。 Default: 256M.
默認: 268435456
hbase.hstore.compactionThreshold
當一個HStore含有多於這個值的HStoreFiles(每個memstore flush產生一個HStoreFile)的時候,會執行一個合併操做,把這HStoreFiles寫成一個。這個值越大,須要合併的時間就越長。
默認: 3
hbase.hstore.blockingStoreFiles
當一個HStore含有多於這個值的HStoreFiles(每個memstore flush產生一個HStoreFile)的時候,會執行一個合併操做,update會阻塞直到合併完成,直到超過了hbase.hstore.blockingWaitTime的值
默認: 7
hbase.hstore.blockingWaitTime
hbase.hstore.blockingStoreFiles所限制的StoreFile數量會致使update阻塞,這個時間是來限制阻塞時間的。當超過了這個時間,HRegion會中止阻塞update操做,不過合併還有沒有完成。默認爲90s.
默認: 90000
hbase.hstore.compaction.max
每一個「小」合併的HStoreFiles最大數量。
默認: 10
hbase.hregion.majorcompaction
一個Region中的全部HStoreFile的major compactions的時間間隔。默認是1天。 設置爲0就是禁用這個功能。
默認: 86400000
hbase.mapreduce.hfileoutputformat.blocksize
MapReduce中HFileOutputFormat能夠寫 storefiles/hfiles. 這個值是hfile的blocksize的最小值。一般在Hbase寫Hfile的時候,bloocksize是由table schema(HColumnDescriptor)決定的,可是在mapreduce寫的時候,咱們沒法獲取schema中blocksize。這個值越小,你的索引就越大,你隨機訪問須要獲取的數據就越小。若是你的cell都很小,並且你須要更快的隨機訪問,能夠把這個值調低。
默認: 65536
hfile.block.cache.size
分配給HFile/StoreFile的block cache佔最大堆(-Xmx setting)的比例。默認是20%,設置爲0就是不分配。
默認: 0.2
hbase.hash.type
哈希函數使用的哈希算法。能夠選擇兩個值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 這個哈希是給 bloom filters用的.
默認: murmur
hbase.master.keytab.file
HMaster server驗證登陸使用的kerberos keytab 文件路徑。(譯者注:Hbase使用Kerberos實現安全)
默認:
hbase.master.kerberos.principal
例如. "hbase/_HOST@EXAMPLE.COM". HMaster運行須要使用 kerberos principal name. principal name 能夠在: user/hostname@DOMAIN 中獲取. 若是 "_HOST" 被用作hostname portion,須要使用實際運行的hostname來替代它。
默認:
hbase.regionserver.keytab.file
HRegionServer驗證登陸使用的kerberos keytab 文件路徑。
默認:
hbase.regionserver.kerberos.principal
例如. "hbase/_HOST@EXAMPLE.COM". HRegionServer運行須要使用 kerberos principal name. principal name 能夠在: user/hostname@DOMAIN 中獲取. 若是 "_HOST" 被用作hostname portion,須要使用實際運行的hostname來替代它。在這個文件中必需要有一個entry來描述 hbase.regionserver.keytab.file
默認:
zookeeper.session.timeout
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
ZooKeeper中的Hbase的根ZNode。全部的Hbase的ZooKeeper會用這個目錄配置相對路徑。默認狀況下,全部的Hbase的ZooKeeper文件路徑是用相對路徑,因此他們會都去這個目錄下面。
默認: /hbase
zookeeper.znode.rootserver
ZNode 保存的 根region的路徑. 這個值是由Master來寫,client和regionserver 來讀的。若是設爲一個相對地址,父目錄就是 ${zookeeper.znode.parent}.默認情形下,意味着根region的路徑存儲在/hbase/root-region-server.
默認: root-region-server
hbase.zookeeper.quorum
Zookeeper集羣的地址列表,用逗號分割。例如:"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".默認是localhost,是給僞分佈式用的。要修改才能在徹底分佈式的狀況下使用。若是在hbase-env.sh設置了HBASE_MANAGES_ZK,這些ZooKeeper節點就會和Hbase一塊兒啓動。
默認: localhost
hbase.zookeeper.peerport
ZooKeeper節點使用的端口。詳細參見:http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
默認: 2888web
瞭解更多詳情請登陸超人學院網站http://www.crxy.cn?sxy或者關注超人學院微信號:CRXY-CN算法