HBase 默認(rèn)配置說明
HBase 默認(rèn)配置說明(收藏版)hbase.rootdir這個目錄是region server的共享目錄,用來持久化Hbase 。URL 需要是' 完全正確' 的,還要包含文件系統(tǒng)的scheme
HBase 默認(rèn)配置說明(收藏版)
hbase.rootdir
這個目錄是region server的共享目錄,用來持久化Hbase 。URL 需要是' 完全正確' 的,還要包含文件系統(tǒng)的scheme 。例如,要表示hdfs 中的 '/hbase'目錄,namenode 運行在namenode.example.org 的9090端口。則需要設(shè)置為hdfs://namenode.example.org:9000 /hbase。默認(rèn)情況下Hbase 是寫到/tmp的。不改這個配置,數(shù)據(jù)會在重啟的時候丟失。 默認(rèn): file:///tmp/hbase-${user.name}/hbase
hbase.master.port
Hbase 的Master 的端口.
默認(rèn): 60000
hbase.cluster.distributed
Hbase 的運行模式。false 是單機(jī)模式,true 是分布式模式。若為false,Hbase 和Zookeeper 會運行在同一個JVM 里面。
默認(rèn): false
hbase.tmp.dir
本地文件系統(tǒng)的臨時文件夾??梢孕薷牡揭粋€更為持久的目錄上。(/tmp會在重啟時清楚) 默認(rèn): /tmp/hbase-${user.name}
hbase.master.info.port
HBase Master web 界面端口. 設(shè)置為-1 意味著你不想讓他運行。
默認(rèn): 60010
hbase.master.info.bindAddress
HBase Master web 界面綁定的端口
默認(rèn): 0.0.0.0
hbase.client.write.buffer
HTable 客戶端的寫緩沖的默認(rèn)大小。這個值越大,需要消耗的內(nèi)存越大。因為緩沖在客戶端和服務(wù)端都有實例,所以需要消耗客戶端和服務(wù)端兩個地方的內(nèi)存。得到的好處 是,可以減少RPC 的次數(shù)??梢赃@樣估算服務(wù)器端被占用的內(nèi)存: hbase.client.write.buffer * hbase.regionserver.handler.count
默認(rèn): 2097152
hbase.regionserver.port
HBase RegionServer綁定的端口
默認(rèn): 60020
hbase.regionserver.info.port
HBase RegionServer web 界面綁定的端口 設(shè)置為 -1 意味這你不想與運行 RegionServer
,界面.
默認(rèn): 60030
hbase.regionserver.info.port.auto
Master 或RegionServer 是否要動態(tài)搜一個可以用的端口來綁定界面。當(dāng)hbase.regionserver.info.port 已經(jīng)被占用的時候,可以搜一個空閑的端口綁定。這個功能在測試的時候很有用。默認(rèn)關(guān)閉。
默認(rèn): false
hbase.regionserver.info.bindAddress
HBase RegionServer web 界面的IP 地址
默認(rèn): 0.0.0.0
hbase.regionserver.class
RegionServer 使用的接口??蛻舳舜蜷_代理來連接region server的時候會使用到。 默認(rèn): org.apache.hadoop.hbase.ipc.HRegionInterface
hbase.client.pause
通常的客戶端暫停時間。最多的用法是客戶端在重試前的等待時間。比如失敗的get 操作和region 查詢操作等都很可能用到。
默認(rèn): 1000
hbase.client.retries.number
最大重試次數(shù)。例如 region 查詢,Get 操作,Update 操作等等都可能發(fā)生錯誤,需要重試。這是最大重試錯誤的值。
默認(rèn): 10
hbase.client.scanner.caching
當(dāng) 調(diào)用Scanner 的next 方法,而值又不在緩存里的時候,從服務(wù)端一次獲取的行數(shù)。越大的值意味著Scanner 會快一些,但是會占用更多的內(nèi)存。當(dāng) 緩沖被占滿的時候,next 方法調(diào)用會越來越慢。慢到一定程度,可能會導(dǎo)致超時。例如超過了 hbase.regionserver.lease.period 。
默認(rèn): 1
hbase.client.keyvalue.maxsize
一 個KeyValue 實例的最大size. 這個是用來設(shè)置存儲文件中的單個entry 的大小上界。因為一個KeyValue 是不能分割的,所以可以避免因為 數(shù)據(jù)過大導(dǎo)致region 不可分割。明智的做法是把它設(shè)為可以被最大region size整除的數(shù)。如果設(shè)置為0或者更小,就會禁用這個檢查。默認(rèn)10MB 。
默認(rèn): 10485760
hbase.regionserver.lease.period
客戶端租用HRegion server 期限,即超時閥值。單位是毫秒。默認(rèn)情況下,客戶端必須在這個時間內(nèi)發(fā)一條信息,否則視為死掉。
默認(rèn): 60000
,hbase.regionserver.handler.count
RegionServers 受理的RPC Server 實例數(shù)量。對于Master 來說,這個屬性是Master 受理的handler 數(shù)量
默認(rèn): 10
hbase.regionserver.msginterval
RegionServer 發(fā)消息給 Master 時間間隔,單位是毫秒
默認(rèn): 3000
hbase.regionserver.optionallogflushinterval
將Hlog 同步到HDFS 的間隔。如果Hlog 沒有積累到一定的數(shù)量,到了時間,也會觸發(fā)同步。默認(rèn)是1秒,單位毫秒。
默認(rèn): 1000
hbase.regionserver.regionSplitLimit
region 的數(shù)量到了這個值后就不會在分裂了。這不是一個region 數(shù)量的硬性限制。但是起到了一定指導(dǎo)性的作用,到了這個值就該停止分裂了。默認(rèn)是MAX_INT.就是說不阻止分裂。 默認(rèn): 2147483647
hbase.regionserver.logroll.period
提交commit log的間隔,不管有沒有寫足夠的值。
默認(rèn): 3600000
hbase.regionserver.hlog.reader.impl
HLog file reader 的實現(xiàn).
默認(rèn): org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader
hbase.regionserver.hlog.writer.impl
HLog file writer 的實現(xiàn).
默認(rèn): org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter
hbase.regionserver.thread.splitcompactcheckfrequency
region server 多久執(zhí)行一次split/compaction 檢查.
默認(rèn): 20000
hbase.regionserver.nbreservationblocks
儲備的內(nèi)存block 的數(shù)量(譯者注:就像石油儲備一樣) 。當(dāng)發(fā)生out of memory 異常的時候,我們可以用這些內(nèi)存在RegionServer 停止之前做清理操作。
默認(rèn): 4
hbase.zookeeper.dns.interface
當(dāng)使用DNS 的時候,Zookeeper 用來上報的IP 地址的網(wǎng)絡(luò)接口名字。
默認(rèn): default
,hbase.zookeeper.dns.nameserver
當(dāng)使用DNS 的時候,Zookeepr 使用的DNS 的域名或者IP 地址,Zookeeper 用它來確定和master 用來進(jìn)行通訊的域名.
默認(rèn): default
hbase.regionserver.dns.interface
當(dāng)使用DNS 的時候,RegionServer 用來上報的IP 地址的網(wǎng)絡(luò)接口名字。
默認(rèn): default
hbase.regionserver.dns.nameserver
當(dāng)使用DNS 的時候,RegionServer 使用的DNS 的域名或者IP 地址,RegionServer 用它來確定和master 用來進(jìn)行通訊的域名.
默認(rèn): default
hbase.master.dns.interface
當(dāng)使用DNS 的時候,Master 用來上報的IP 地址的網(wǎng)絡(luò)接口名字。
默認(rèn): default
hbase.master.dns.nameserver
當(dāng)使用DNS 的時候,RegionServer 使用的DNS 的域名或者IP 地址,Master 用它來確定用來進(jìn)行通訊的域名.
默認(rèn): default
hbase.balancer.period
Master 執(zhí)行region balancer的間隔。
默認(rèn): 300000
hbase.regions.slop
當(dāng)任一regionserver 有average (average * slop)個region 是會執(zhí)行Rebalance
默認(rèn): 0
hbase.master.logcleaner.ttl
Hlog 存在于.oldlogdir 文件夾的最長時間, 超過了就會被 Master 的線程清理掉. 默認(rèn): 600000
hbase.master.logcleaner.plugins
LogsCleaner 服務(wù)會執(zhí)行的一組LogCleanerDelegat 。值用逗號間隔的文本表示。這些WAL/HLog cleaners會按順序調(diào)用??梢园严日{(diào)用的放在前面。你可以實現(xiàn)自己的LogCleanerDelegat ,加到Classpath 下,然后在這里寫 下類的全稱。一般都是加在默認(rèn)值的前面。
默認(rèn): org.apache.hadoop.hbase.master.TimeToLiveLogCleaner
hbase.regionserver.global.memstore.upperLimit
單個region server的全部memtores 的最大值。超過這個值,一個新的update 操作會被掛起,強(qiáng)制執(zhí)行flush 操作。
,默認(rèn): 0.4
hbase.regionserver.global.memstore.lowerLimit
當(dāng)強(qiáng)制執(zhí)行flush 操作的時候,當(dāng)?shù)陀谶@個值的時候,flush 會停止。默認(rèn)是堆大小的 35 . 如果這個值和 hbase.regionserver.global.memstore.upperLimit 相同就意味著當(dāng)update 操作因為內(nèi)存限制被掛起時,會盡量少的執(zhí)行flush(譯者注:一旦執(zhí)行flush ,值就會比下限要低,不再執(zhí)行)
默認(rèn): 0.35
hbase.server.thread.wakefrequency
service 工作的sleep 間隔,單位毫秒。 可以作為service 線程的sleep 間隔,比如log roller. 默認(rèn): 10000
hbase.hregion.memstore.flush.size
當(dāng)memstore 的大小超過這個值的時候,會flush 到磁盤。這個值被一個線程每隔hbase.server.thread.wakefrequency 檢查一下。
默認(rèn): 67108864
hbase.hregion.preclose.flush.size
當(dāng)一個region 中的memstore 的大小大于這個值的時候,我們又觸發(fā)了close. 會先運行“pre-flush”操作,清理這個需要關(guān)閉的 memstore ,然后將這個region 下線。當(dāng)一個region 下線了,我們無法再進(jìn)行任何寫操作。如果一個memstore 很大的時候,flush 操作會消耗很多時間。"pre-flush" 操作意味著在region 下線之前,會先把memstore 清空。這樣在最終執(zhí)行close 操作的時 候,flush 操作會很快。
默認(rèn): 5242880
hbase.hregion.memstore.block.multiplier
如果memstore 有hbase.hregion.memstore.block.multiplier 倍數(shù)的 hbase.hregion.flush.size 的大小,就會阻塞update 操作。這是為了預(yù)防在update 高峰期會導(dǎo)致的失控。如果不設(shè)上 界,flush 的時候會花很長的時間來合并或者分割,最壞的情況就是引發(fā)out of memory異常。(譯者注:內(nèi)存操作的速度和磁盤不匹配,需要等一等。原文似乎有誤)
默認(rèn): 2
hbase.hregion.memstore.mslab.enabled
體驗特性:啟用memStore 分配本地緩沖區(qū)。這個特性是為了防止在大量寫負(fù)載的時候堆的碎片過多。這可以減少GC 操作的頻率。(GC有可能會Stop the world)(譯者注:實現(xiàn)的原理相當(dāng)于預(yù)分配內(nèi)存,而不是每一個值都要從堆里分配)
默認(rèn): false
hbase.hregion.max.filesize
最大HStoreFile 大小。若某個Column families的HStoreFile 增長達(dá)到這個值,這個Hegion 會被切割成兩個。 Default: 256M.
默認(rèn): 268435456
,hbase.hstore.compactionThreshold
當(dāng)一個HStore 含有多于這個值的HStoreFiles(每一個memstore flush產(chǎn)生一個HStoreFile) 的時候,會執(zhí)行一個合并操作,把這HStoreFiles 寫成一個。這個值越大,需要合并的時間就越長。
默認(rèn): 3
hbase.hstore.blockingStoreFiles
當(dāng)一個HStore 含有多于這個值的HStoreFiles(每一個memstore flush產(chǎn)生一個HStoreFile) 的時候,會執(zhí)行一個合并操作,update 會阻塞直到合并完成,直到超過了hbase.hstore.blockingWaitTime 的值
默認(rèn): 7
hbase.hstore.blockingWaitTime
hbase.hstore.blockingStoreFiles 所限制的StoreFile 數(shù)量會導(dǎo)致update 阻塞,這個時間是來限制阻塞時間的。當(dāng)超過了這個時間,HRegion 會停止阻塞update 操作,不過合并還有沒有完成。默認(rèn)為90s.
默認(rèn): 90000
hbase.hstore.compaction.max
每個“小”合并的HStoreFiles 最大數(shù)量。
默認(rèn): 10
hbase.hregion.majorcompaction
一個Region 中的所有HStoreFile 的major compactions的時間間隔。默認(rèn)是1天。 設(shè)置為0就是禁用這個功能。
默認(rèn): 86400000
hbase.mapreduce.hfileoutputformat.blocksize
MapReduce 中HFileOutputFormat 可以寫 storefiles/hfiles. 這個值是hfile 的blocksize 的最小值。通常在Hbase 寫Hfile 的時候,bloocksize 是由table schema(HColumnDescriptor)決定的,但是在mapreduce 寫的時候,我們無法獲取schema 中blocksize 。這個值 越小,你的索引就越大,你隨機(jī)訪問需要獲取的數(shù)據(jù)就越小。如果你的cell 都很小,而且你需要更快的隨機(jī)訪問,可以把這個值調(diào)低。
默認(rèn): 65536
hfile.block.cache.size
分配給HFile/StoreFile的block cache 占最大堆(-Xmx setting) 的比例。默認(rèn)是20,設(shè)置為0就是不分配。
默認(rèn): 0.2
hbase.hash.type
哈希函數(shù)使用的哈希算法??梢赃x擇兩個值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 這個哈希是給 bloom filters用的.
默認(rèn): murmur
,hbase.master.keytab.file
HMaster server 驗證登錄使用的kerberos keytab 文件路徑。(譯者注:Hbase 使用Kerberos 實現(xiàn)安全)
默認(rèn):
hbase.master.kerberos.principal
例如. "hbase/_HOST@EXAMPLE.COM". HMaster運行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中獲取. 如果 "_HOST" 被用做hostname portion,需要使用實際運行的hostname 來替代它。
默認(rèn):
hbase.regionserver.keytab.file
HRegionServer 驗證登錄使用的kerberos keytab 文件路徑。
默認(rèn):
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
默認(rèn):
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. " 。 單位是毫秒
默認(rèn): 180000
zookeeper.znode.parent
ZooKeeper 中的Hbase 的根ZNode 。所有的Hbase 的ZooKeeper 會用這個目錄配置相對路徑。默認(rèn)情況下,所有的Hbase 的ZooKeeper 文件路徑是用相對路徑,所以他們會都去這個目錄下面。
默認(rèn): /hbase
zookeeper.znode.rootserver
ZNode 保存的 根region 的路徑. 這個值是由Master 來寫,client 和regionserver 來讀的。如果設(shè)為一個相對地址,父目錄就是 ${zookeeper.znode.parent}.默認(rèn)情形下,意味著根region 的路徑存儲在/hbase/root-region- server.
默認(rèn): root-region-server
hbase.zookeeper.quorum
,Zookeeper 集群的地址列表,用逗號分割。例 如:"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". 默認(rèn)是 localhost, 是給偽分布式用的。要修改才能在完全分布式的情況下使用。如果在hbase-env.sh 設(shè)置了HBASE_MANAGES_ZK, 這些ZooKeeper 節(jié)點就會和Hbase 一起啟動。
默認(rèn): localhost
hbase.zookeeper.peerport
ZooKeeper 節(jié)點使用的端口。詳細(xì)參見:
默認(rèn): 2888
hbase.zookeeper.leaderport
ZooKeeper 用來選擇Leader 的端口,詳細(xì)參見:
默認(rèn): 3888
hbase.zookeeper.property.initLimit
ZooKeeper 的zoo.conf 中的配置。 初始化synchronization 階段的ticks 數(shù)量限制 默認(rèn): 10
hbase.zookeeper.property.syncLimit
ZooKeeper 的zoo.conf 中的配置。 發(fā)送一個請求到獲得承認(rèn)之間的ticks 的數(shù)量限制 默認(rèn): 5
hbase.zookeeper.property.dataDir
ZooKeeper 的zoo.conf 中的配置。 快照的存儲位置
默認(rèn): ${hbase.tmp.dir}/zookeeper
hbase.zookeeper.property.clientPort
ZooKeeper 的zoo.conf 中的配置。 客戶端連接的端口
默認(rèn): 2181
hbase.zookeeper.property.maxClientCnxns
ZooKeeper 的zoo.conf 中的配置。 ZooKeeper 集群中的單個節(jié)點接受的單個Client(以IP 區(qū)分) 的請求的并發(fā)數(shù)。這個值可以調(diào)高一點,防止在單機(jī)和偽分布式模式中出問題。 默認(rèn): 2000
hbase.rest.port
HBase REST server的端口
默認(rèn): 8080
hbase.rest.readonly
定義REST server的運行模式。可以設(shè)置成如下的值: false: 所有的HTTP 請求都是被允許的 - GET/PUT/POST/DELETE. true:只有GET 請求是被允許的
默認(rèn): false
,