摘自:http://debugo.com/hbase-params/
通用和master配置
hbase.rootdir
默認(rèn): file:///tmp/hbase-${user.name}/hbase
region server的數(shù)據(jù)根目錄瘪校,用來持久化HBase。例如,要表示hdfs中的’/hbase’目錄论寨,namenode 運(yùn)行在debugo01的8020端口,則需要設(shè)置為hdfs:// debugo01:8020/hbase匾乓。這個(gè)是必須要設(shè)置的項(xiàng)目忘晤,默認(rèn)值本地文件系統(tǒng)的/tmp只能在單機(jī)模式使用窃判。
hbase.master.port
默認(rèn): 60000
HBase的Master服務(wù)端口燥爷。
hbase.cluster.distributed
默認(rèn): false
HBase的運(yùn)行模式寄摆。false是單機(jī)模式雪侥,true是分布式模式圆凰。若為false,HBase和Zookeeper會(huì)運(yùn)行在同一個(gè)JVM里面杆融。
hbase.tmp.dir
本地的臨時(shí)目錄畅涂。需要注意的是默認(rèn)的/tmp會(huì)在重啟時(shí)清空。
默認(rèn): /tmp/hbase-${user.name}
hbase.master.info.port
默認(rèn): 60010
HBase Master web UI的端口. 設(shè)置為-1 則不運(yùn)行web UI勾邦。
hbase.master.info.bindAddress
默認(rèn): 0.0.0.0
HBase Master web UI綁定的IP
hbase.master.dns.interface
當(dāng)使用DNS的時(shí)候蚣录,Master用來上報(bào)的IP地址的網(wǎng)絡(luò)接口名字。
默認(rèn): default
hbase.master.dns.nameserver
當(dāng)使用DNS的時(shí)候眷篇,RegionServer的DNS域名或者IP 地址萎河,Master用它來確定用來進(jìn)行通訊的域名.
默認(rèn): default
hbase.snapshot.enabled
是否啟用snapshot功能。
默認(rèn)值:true
hbase.balancer.period
Master執(zhí)行region balancer的間隔蕉饼。
默認(rèn): 300000
hbase.master.logcleaner.ttl
Hlog存在于.oldlogdir 文件夾的最長時(shí)間, 超過了就會(huì)被 Master 的線程清理掉.
默認(rèn): 600000
hbase.master.logcleaner.plugins
LogsCleaner服務(wù)會(huì)執(zhí)行的一組LogCleanerDelegat虐杯。值用逗號(hào)間隔的文本表示。這些WAL/HLog cleaners會(huì)按順序調(diào)用昧港∏嬉可以把先調(diào)用的放在前面。你可以實(shí)現(xiàn)自己的LogCleanerDelegat创肥,加到Classpath下达舒,然后在這里寫下類的全稱值朋。一般都是加在默認(rèn)值的前面。
默認(rèn): org.apache.hadoop.hbase.master.TimeToLiveLogCleaner
hbase.rest.port
HBase REST server的端口
默認(rèn): 8080
hbase.rest.readonly
定義REST server的運(yùn)行模式休弃。可以設(shè)置成如下的值: false: 所有的HTTP請求都是被允許的 – GET/PUT/POST/DELETE. true:只有GET請求是被允許的
默認(rèn): false
hbase.coprocessor.master.classes
Master所使用的協(xié)處理器類名圈膏。多個(gè)類的情況下使用逗號(hào)分割塔猾。比如使用org.apache.hadoop.hbase.security.access.AccessController提供了安全管控能力。
默認(rèn): null稽坤。
hbase.rpc.engine
HBase使用的rpc引擎類丈甸。一般使用帶安全驗(yàn)證的org.apache.hadoop.hbase.ipc. SecureRpcEngine類
默認(rèn): null。
** RegionServer相關(guān)**
hbase.regionserver.port
默認(rèn): 60020
HBase RegionServer綁定的端口
hbase.regionserver.info.port
默認(rèn): 60030
HBase RegionServer web 界面綁定的端口尿褪。設(shè)置為-1 則不運(yùn)行web UI
hbase.regionserver.info.port.auto
默認(rèn): false
RegionServer是否在當(dāng)hbase.regionsever.info.port已經(jīng)被占用的時(shí)候睦擂,可以搜一個(gè)空閑的端口綁定。默認(rèn)關(guān)閉杖玲。
hbase.regionserver.info.bindAddress
默認(rèn): 0.0.0.0
HBase RegionServer web 界面的IP地址
hbase.regionserver.class
默認(rèn): org.apache.hadoop.hbase.ipc.HRegionInterface
RegionServer接口類顿仇。客戶端在連接region server的時(shí)候會(huì)使用到摆马。
hbase.regionserver.lease.period
默認(rèn): 60000
客戶端租用HRegion server 期限臼闻,即超時(shí)閥值。單位是毫秒囤采。默認(rèn)情況下述呐,客戶端必須在這個(gè)時(shí)間內(nèi)發(fā)一條信息,否則視為死掉蕉毯。
hbase.regionserver.handler.count
默認(rèn): 10
RegionServers受理的RPC Server實(shí)例數(shù)量乓搬。對于Master來說,這個(gè)屬性是Master受理的handler數(shù)量
hbase.regionserver.msginterval
默認(rèn): 3000
RegionServer 發(fā)消息給 Master 時(shí)間間隔代虾,單位是毫秒
hbase.regionserver.optionallogflushinterval
默認(rèn): 1000
將Hlog同步到HDFS的間隔进肯。如果Hlog沒有積累到一定的數(shù)量,到了時(shí)間棉磨,也會(huì)觸發(fā)同步坷澡。默認(rèn)是1秒,單位毫秒含蓉。
hbase.regionserver.regionSplitLimit
默認(rèn): 2147483647
region的數(shù)量到了這個(gè)值后就不會(huì)在分裂了频敛。這不是一個(gè)region數(shù)量的硬性限制。但是起到了一定指導(dǎo)性的作用馅扣。默認(rèn)是MAX_INT(不限制)斟赚。
hbase.regionserver.logroll.period
默認(rèn): 3600000
提交commit log的間隔,不管有沒有寫足夠的值差油。
hbase.regionserver.hlog.enabled
默認(rèn):true
是否啟用WAL
hbase.regionserver.wal.enablecompression
默認(rèn):false
是否對日志壓縮
hbase.regionserver.hlog.reader.impl
默認(rèn): org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader
HLog file reader 的實(shí)現(xiàn).
hbase.regionserver.hlog.writer.impl
默認(rèn): org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter
HLog file writer 的實(shí)現(xiàn).
hbase.regionserver.thread.splitcompactcheckfrequency
默認(rèn): 20000
region server 多久執(zhí)行一次split/compaction 檢查.
hbase.regionserver.nbreservationblocks
默認(rèn): 4
儲(chǔ)備的內(nèi)存block的數(shù)量(譯者注:就像石油儲(chǔ)備一樣)拗军。當(dāng)發(fā)生out of memory 異常的時(shí)候任洞,我們可以用這些內(nèi)存在RegionServer停止之前做清理操作。
hbase.regionserver.dns.interface
默認(rèn): default
當(dāng)使用DNS的時(shí)候发侵,RegionServer用來上報(bào)的IP地址的網(wǎng)絡(luò)接口名字交掏。
hbase.regionserver.dns.nameserver
默認(rèn): default
當(dāng)使用DNS的時(shí)候,RegionServer使用的DNS的域名或者IP 地址刃鳄,RegionServer用它來確定和master用來進(jìn)行通訊的域名.
hbase.regions.slop
默認(rèn): 0
當(dāng)任一regionserver有average + (average * slop)個(gè)region是會(huì)執(zhí)行Rebalance
hbase.regionserver.global.memstore.upperLimit
默認(rèn): 0.4
單個(gè)region server的全部memtores的最大值盅弛。超過這個(gè)值,一個(gè)新的update操作會(huì)被掛起叔锐,強(qiáng)制執(zhí)行flush操作挪鹏。
hbase.regionserver.global.memstore.lowerLimit
默認(rèn): 0.35
當(dāng)強(qiáng)制執(zhí)行flush操作的時(shí)候,當(dāng)?shù)陀谶@個(gè)值的時(shí)候愉烙,flush會(huì)停止讨盒。默認(rèn)是堆大小的 35% . 如果這個(gè)值和 hbase.regionserver.global.memstore.upperLimit 相同就意味著當(dāng)update操作因?yàn)閮?nèi)存限制被掛起時(shí),會(huì)盡量少的執(zhí)行flush(譯者注:一旦執(zhí)行flush步责,值就會(huì)比下限要低返顺,不再執(zhí)行)
hbase.coprocessor.regionserver.classes
Master所使用的協(xié)處理器類名。多個(gè)類的情況下使用逗號(hào)分割蔓肯。比如使用org.apache.hadoop.hbase.security.access.AccessController提供了安全管控能力创南。
默認(rèn): null。
Client相關(guān)參數(shù)
hbase.client.write.buffer
默認(rèn): 2097152
HTable客戶端的寫緩沖的默認(rèn)大小省核。因?yàn)榫彌_在客戶端和服務(wù)端需要申請空間稿辙,需要消耗客戶端和服務(wù)端兩個(gè)地方的內(nèi)存。較大的buffer气忠,可以減少RPC的次數(shù)邻储,從而提高性能。估算服務(wù)器端被占用的內(nèi)存: hbase.client.write.buffer * hbase.regionserver.handler.count
hbase.client.pause
默認(rèn): 1000
客戶端操作失敗后的重試暫停時(shí)間旧噪。
hbase.client.retries.number
默認(rèn): 10
客戶端失敗后的最大重試次數(shù)吨娜。例如region查詢,get淘钟,Update等操作宦赠。
hbase.client.scanner.caching
默認(rèn): 1
當(dāng)調(diào)用Scanner的next方法,而值又不在緩存里的時(shí)候米母,從服務(wù)端一次獲取的行數(shù)勾扭。越大的值意味著Scanner會(huì)快一些,但是會(huì)占用更多的內(nèi)存铁瞒。當(dāng)緩沖被占滿的時(shí)候妙色,next方法調(diào)用會(huì)越來越慢。慢到一定程度慧耍,可能會(huì)導(dǎo)致超時(shí)身辨。例如超過了hbase.regionserver.lease.period丐谋。
hbase.client.keyvalue.maxsize
默認(rèn): 10485760
一個(gè)KeyValue實(shí)例的最大size.這個(gè)是用來設(shè)置存儲(chǔ)文件中的單個(gè)entry的大小上界。因?yàn)橐粋€(gè)KeyValue是不能分割的煌珊,所以可以避免因?yàn)閿?shù)據(jù)過大導(dǎo)致region不可分割号俐。明智的做法是把它設(shè)為可以被最大region size整除的數(shù)。如果設(shè)置為0或者更小定庵,就會(huì)禁用這個(gè)檢查吏饿。默認(rèn)10MB。
** ZooKeeper相關(guān)**
hbase.zookeeper.dns.interface
當(dāng)使用DNS的時(shí)候洗贰,Zookeeper用來上報(bào)的IP地址的網(wǎng)絡(luò)接口名字找岖。
默認(rèn): default
hbase.zookeeper.dns.nameserver
默認(rèn): default
當(dāng)使用DNS的時(shí)候陨倡,Zookeepr使用的DNS的域名或者IP 地址敛滋,Zookeeper用它來確定和master用來進(jìn)行通訊的域名.
zookeeper.session.timeout
默認(rèn): 180000
ZooKeeper 會(huì)話超時(shí).HBase把這個(gè)值傳遞改zk集群,向他推薦一個(gè)會(huì)話的最大超時(shí)時(shí)間兴革。單位是毫秒绎晃。
zookeeper.znode.parent
默認(rèn): /hbase
ZooKeeper中的HBase的根ZNode。所有的HBase的ZooKeeper會(huì)用這個(gè)目錄配置相對路徑杂曲。默認(rèn)情況下庶艾,所有的HBase的ZooKeeper文件路徑是用相對路徑,所以他們會(huì)都去這個(gè)目錄下面擎勘。
zookeeper.znode.rootserver
默認(rèn): root-region-server
ZNode 保存的根region的路徑. 這個(gè)值是由Master來寫咱揍,client和regionserver 來讀的。如果設(shè)為一個(gè)相對地址棚饵,父目錄就是 ${zookeeper.znode.parent}.默認(rèn)情形下煤裙,意味著根region的路徑存儲(chǔ)在/hbase/root-region-server.
hbase.zookeeper.quorum
默認(rèn): localhost
Zookeeper集群的地址列表,用逗號(hào)分割噪漾。例如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.默認(rèn)是localhost,如果在hbase-env.sh設(shè)置了HBASE_MANAGES_ZK硼砰,這些ZooKeeper節(jié)點(diǎn)就會(huì)和HBase一起啟動(dòng)。
hbase.zookeeper.peerport
默認(rèn): 2888
ZooKeeper節(jié)點(diǎn)使用的端口欣硼。
hbase.zookeeper.leaderport
默認(rèn): 3888
ZooKeeper用來選擇Leader的端口题翰。
hbase.zookeeper.property.initLimit
默認(rèn): 10
ZooKeeper的zoo.conf中的配置。 初始化synchronization階段的ticks數(shù)量限制
hbase.zookeeper.property.syncLimit
默認(rèn): 5
ZooKeeper的zoo.conf中的配置诈胜。 發(fā)送一個(gè)請求到獲得承認(rèn)之間的ticks的數(shù)量限制
hbase.zookeeper.property.dataDir
默認(rèn): ${hbase.tmp.dir}/zookeeper
ZooKeeper的zoo.conf中的配置豹障。 快照的存儲(chǔ)位置
hbase.zookeeper.property.clientPort
默認(rèn): 2181
ZooKeeper的zoo.conf中的配置。 客戶端連接的端口
hbase.zookeeper.property.maxClientCnxns
默認(rèn): 2000
ZooKeeper的zoo.conf中的配置焦匈。 ZooKeeper集群中的單個(gè)節(jié)點(diǎn)接受的單個(gè)Client(以IP區(qū)分)的請求的并發(fā)數(shù)沼填。這個(gè)值可以調(diào)高一點(diǎn),防止在單機(jī)和偽分布式模式中出問題括授。
模式和存儲(chǔ)相關(guān)
hbase.table.max.rowsize
默認(rèn): true
設(shè)置為true時(shí)坞笙,當(dāng)模式在反生變更操作時(shí)則鎖定zookeeper中的表岩饼,以避免并行操作時(shí)破壞表的一致性。
hbase.table.max.rowsize
默認(rèn):1073741824
當(dāng)不指定Get和Scan操作中的scan選項(xiàng)時(shí)薛夜,獲取的最大行的字節(jié)大小籍茧。超過則拋出RowTooBigException異常。
hbase.hregion.memstore.flush.size
默認(rèn): 67108864
當(dāng)memstore的大小超過這個(gè)值梯澜,會(huì)flush到磁盤寞冯。這個(gè)值被一個(gè)線程每隔hbase.server.thread.wakefrequency檢查一下。
hbase.server.thread.wakefrequency
默認(rèn): 10000
Service線程(log roller等)的sleep時(shí)間間隔晚伙,單位毫秒吮龄。
hbase.hregion.preclose.flush.size
默認(rèn): 5242880
當(dāng)一個(gè)region中的memstore的大小大于這個(gè)值的時(shí)候,我們又觸發(fā)了close.會(huì)先運(yùn)行“pre-flush”操作咆疗,清理這個(gè)需要關(guān)閉的memstore漓帚,然后將這個(gè)region下線。當(dāng)一個(gè)region下線了午磁,我們無法再進(jìn)行任何寫操作尝抖。如果一個(gè)memstore很大的時(shí)候,flush操作會(huì)消耗很多時(shí)間迅皇∶亮桑”pre-flush”操作意味著在region下線之前,會(huì)先把memstore清空登颓。這樣在最終執(zhí)行close操作的時(shí)候搅荞,flush操作會(huì)很快。
hbase.hregion.memstore.block.multiplier
默認(rèn): 2
如果memstore有hbase.hregion.memstore.block.multiplier倍數(shù)的hbase.hregion.flush.size的大小框咙,就會(huì)阻塞update操作咕痛。這是為了預(yù)防在update高峰期會(huì)導(dǎo)致的失控。如果不設(shè)上界扁耐,flush的時(shí)候會(huì)花很長的時(shí)間來合并或者分割暇检,最壞的情況就是引發(fā)out of memory異常。
hbase.hregion.memstore.mslab.enabled
默認(rèn): false
體驗(yàn)特性:啟用memStore分配本地緩沖區(qū)婉称。這個(gè)特性是為了防止在大量寫負(fù)載的時(shí)候堆的碎片過多块仆。這可以減少GC操作的頻率。
hbase.hregion.max.filesize
默認(rèn): 268435456
最大HStoreFile大小王暗。若某個(gè)Column families的HStoreFile增長達(dá)到這個(gè)值悔据,這個(gè)Hegion會(huì)被切割成兩個(gè)。 Default: 256M.
hbase.hstore.compactionThreshold
默認(rèn): 3
當(dāng)一個(gè)HStore含有多于這個(gè)值的HStoreFiles的時(shí)候俗壹,會(huì)執(zhí)行一個(gè)合并操作科汗,把這HStoreFiles寫成一個(gè)。這個(gè)值越大绷雏,需要合并的時(shí)間就越長头滔。
hbase.hstore.blockingStoreFiles
默認(rèn): 7
當(dāng)一個(gè)HStore含有多于這個(gè)值的HStoreFiles的時(shí)候怖亭,會(huì)執(zhí)行一個(gè)合并操作,update會(huì)阻塞直到合并完成坤检,直到超過了hbase.hstore.blockingWaitTime的值
hbase.hstore.blockingWaitTime
默認(rèn): 90000
hbase.hstore.blockingStoreFiles所限制的StoreFile數(shù)量會(huì)導(dǎo)致update阻塞兴猩,這個(gè)時(shí)間是來限制阻塞時(shí)間的。當(dāng)超過了這個(gè)時(shí)間早歇,HRegion會(huì)停止阻塞update操作倾芝,不過合并還有沒有完成。默認(rèn)為90s.
hbase.hstore.compaction.max
默認(rèn): 10
每個(gè)“小”合并的HStoreFiles最大數(shù)量箭跳。
hbase.hregion.majorcompaction
默認(rèn): 86400000
一個(gè)Region中的所有HStoreFile的major compactions的時(shí)間間隔晨另。默認(rèn)是1天。 設(shè)置為0就是禁用這個(gè)功能谱姓。
hbase.mapreduce.hfileoutputformat.blocksize
默認(rèn): 65536
MapReduce中HFileOutputFormat可以寫 storefiles/hfiles. 這個(gè)值是hfile的blocksize的最小值借尿。通常在HBase寫Hfile的時(shí)候,bloocksize是由table schema(HColumnDescriptor)決定的逝段,但是在mapreduce寫的時(shí)候垛玻,我們無法獲取schema中blocksize割捅。這個(gè)值越小奶躯,你的索引就越大,你隨機(jī)訪問需要獲取的數(shù)據(jù)就越小亿驾。如果你的cell都很小嘹黔,而且你需要更快的隨機(jī)訪問,可以把這個(gè)值調(diào)低莫瞬。
hfile.block.cache.size
默認(rèn): 0.2
分配給HFile/StoreFile的block cache占最大堆(-Xmx setting)的比例儡蔓。默認(rèn)是20%,設(shè)置為0就是不分配疼邀。
hbase.hash.type
默認(rèn): murmur
哈希函數(shù)使用的哈希算法喂江。可以使用MurmurHash和 jenkins (JenkinsHash). 提供給 bloom filters使用.
** 安全相關(guān)**
hbase.security.authentication
HBase的權(quán)限管控方式旁振』裱可選輸入為simple和kerberos。
默認(rèn)值:simple
hbase.security.authentication
是否啟用HBase安全驗(yàn)證拐袜。
默認(rèn):false
hbase.superuser
HBase的超級(jí)管理員用戶吉嚣。
默認(rèn)值:hbase
hbase.master.keytab.file
默認(rèn):
開啟基于kerberos的Security。HMaster Server驗(yàn)證登錄使用的keytab 文件路徑蹬铺。
hbase.master.kerberos.principal
默認(rèn):
開啟基于kerberos的Security尝哆。HMaster使用principal name。
hbase.regionserver.keytab.file
默認(rèn):
開啟基于kerberos的Security甜攀。HRegionServer驗(yàn)證登錄使用的keytab 文件路徑秋泄。
hbase.regionserver.kerberos.principal
默認(rèn):
開啟基于kerberos的Security琐馆。RegionServer使用的principal name。