1. 程式人生 > >Hbase中hbase-site.xml中引數代表的意義

Hbase中hbase-site.xml中引數代表的意義

該文件是用hbase預設配置檔案生成的,檔案源是 hbase-default.xml。

在實際的HBase生產環境中應用於%HBASE_HOME%/conf/hbase-site.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/[email protected]". 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/[email protected]". 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

預設: 2888

hbase.zookeeper.leaderport

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

預設: 3888

hbase.zookeeper.property.initLimit

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

預設: 10

hbase.zookeeper.property.syncLimit

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

預設: 5

hbase.zookeeper.property.dataDir

ZooKeeper的zoo.conf中的配置。 快照的儲存位置

預設: ${hbase.tmp.dir}/zookeeper

hbase.zookeeper.property.clientPort

ZooKeeper的zoo.conf中的配置。 客戶端連線的埠

預設: 2181

hbase.zookeeper.property.maxClientCnxns

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

預設: 2000

hbase.rest.port

HBase REST server的埠

預設: 8080

hbase.rest.readonly

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

預設: false