HBase-site.xml 常見重要配置參數


HBase 常見重要配置參數

(1) Hbase.rpc.timeout
rpc 的超時時間,默認 60s,不建議修改,避免影響正常的業務,在線上環境剛開始配置的是 3 秒,運行半天后發現了大量的 timeout error,原因是有一個 region 出現了如下問題阻塞了寫操作:“Blocking updates … memstore size 434.3m is >= than blocking 256.0m size”可見不能太低

(2) ipc.socket.timeout:socket 建立鏈接的超時時間,應該小於或者等於 rpc 的超時時間,默認為 20s

(3) hbase.client.retries.number:重試次數,默認為 10,可配置為 3

(4) hbase.client.pause:重試的休眠時間,默認為 1s,可減少,比如 100ms

(5) hbase.regionserver.lease.period:scan 查詢時每次與 server 交互的超時時間,默認為 60s,可不調整


HBase 默認配置參數

1. hbase.rootdir

  • 這個目錄是 RegionServer 的共享目錄,用來持久化 HBase。URL 需要是 “完全正確” 的,還要包含文件系統的 scheme。 例如 “/hbase” 表示 HBase 在 HDFS 中占用的實際存儲位置,HDFS 的 NameNode 運行在主機名為 master5 的 8020 端口,則 hbase.rootdir 的設置應為 “hdfs://master5:8020/hbase”。在默認情況下 HBase 是寫在 /tmp 中的。不修改這個配置的話,數據會在重啟的時候丟失。特別注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必須一致。
  • 默認為 file:///tmp/hbase-${user.name}/hbase

2. hbase.cluster.distributed

  • HBase 的運行模式。為 false 表示單機模式,為 true 表示分布式模式。若為 false,HBase 和 ZooKeeper 會運行在同一個 JVM 中
  • 默認值為 false

3. hbase.master (hbase.master.port)

  • 如果只設置單個 Hmaster,那么 hbase.master 屬性參數需要設置為 master5:60000 (主機名:60000)
  • 如果要設置多個 Hmaster,那么我們只需要提供端口 60000,因為選擇真正的 master 的事情會有 zookeeper 去處理
  • 默認端口號:60000

4. hbase.tmp.dir

  • 本地文件系統的臨時文件夾。可以修改到一個更為持久的目錄上。(/tmp會在重啟時清除)
  • 默認: /tmp/hbase-${user.name}

5. hbase.master.info.port

  • HBase Master web 界面端口. 設置為 -1 意味着你不想讓它運行
  • 默認: 60010

6. hbase.master.info.bindAddress

  • HBase Master web 界面綁定的端口
  • 默認: 0.0.0.0

7. hbase.client.write.buffer

  • HTable 客戶端的寫緩沖的默認大小。這個值越大,需要消耗的內存越大。因為緩沖在客戶端和服務端都有實例,所以需要消耗客戶端和服務端兩個地方的內存。得到的好處是,可以減少 RPC 的次數。可以這樣估算服務器端被占用的內存: hbase.client.write.buffer * hbase.regionserver.handler.count
  • 默認: 2097152 (2G)

8. hbase.regionserver.port

  • HBase RegionServer 綁定的端口
  • 默認: 60020

9. hbase.regionserver.info.port

  • HBase RegionServer web 界面綁定的端口 設置為 -1 意味這你不想與運行 RegionServer 界面
  • 默認: 60030

10. hbase.regionserver.info.port.auto

  • Master 或 RegionServer 是否要動態搜一個可以用的端口來綁定界面。當 hbase.regionserver.info.port已經被占用的時候,可以搜一個空閑的端口綁定。這個功能在測試的時候很有用。默認關閉
  • 默認: false

11. hbase.regionserver.info.bindAddress

  • HBase RegionServer web 界面的IP地址
  • 默認: 0.0.0.0

12. hbase.regionserver.class

  • RegionServer 使用的接口。客戶端打開代理來連接region server的時候會使用到
  • 默認: org.apache.hadoop.hbase.ipc.HRegionInterface

13. hbase.client.pause

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

14. hbase.client.retries.number

  • 最大重試次數。例如 region 查詢,Get 操作,Update 操作等等都可能發生錯誤,需要重試。這是最大重試錯誤的值
  • 默認: 10

15. hbase.client.scanner.caching

  • 當調用 Scanner 的 next 方法,而值又不在緩存里的時候,從服務端一次獲取的行數。越大的值意味着 Scanner 會快一些,但是會占用更多的內存。當緩沖被占滿的時候,next 方法調用會越來越慢。慢到一定程度,可能會導致超時。例如超過了 hbase.regionserver.lease.period
  • 默認: 1

16.hbase.client.keyvalue.maxsize

  • 一個 KeyValue 實例的最大 size。這個是用來設置存儲文件中的單個 entry 的大小上界。因為一個 KeyValue 是不能分割的,所以可以避免因為數據過大導致 region 不可分割。明智的做法是把它設為可以被最大 region size 整除的數。如果設置為 0 或者更小,就會禁用這個檢查。默認 10MB
  • 默認: 10485760 (10MB)

17. hbase.regionserver.lease.period

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

18. hbase.regionserver.handler.count

  • RegionServers 受理的 RPC Server 實例數量。對於 Master 來說,這個屬性是 Master 受理的 handler 數量
  • 默認: 10

19. hbase.regionserver.msginterval

  • RegionServer 發消息給 Master 時間間隔,單位是毫秒
  • 默認: 3000

20. hbase.regionserver.optionallogflushinterval

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

21. hbase.regionserver.regionSplitLimit

  • region 的數量到了這個值后就不會在分裂了。這不是一個 region 數量的硬性限制。但是起到了一定指導性的作用,到了這個值就該停止分裂了。默認是 MAX_INT。就是說不阻止分裂。
  • 默認: 2147483647 (1G)

22. hbase.regionserver.logroll.period

  • 提交 commit log 的間隔,不管有沒有寫足夠的值
  • 默認: 3600000

23. hbase.regionserver.hlog.reader.impl

  • HLog file reader 的實現
  • 默認: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader

24. hbase.regionserver.hlog.writer.impl

  • HLog file writer 的實現
  • 默認: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter

25. hbase.regionserver.thread.splitcompactcheckfrequency

  • region server 多久執行一次 split/compaction 檢查
  • 默認: 20000

26. hbase.regionserver.nbreservationblocks

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

27. hbase.zookeeper.dns.interface

  • 當使用 DNS 的時候,Zookeeper 用來上報的 IP 地址的網絡接口名字
  • 默認: default

28. hbase.zookeeper.dns.nameserver

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

29. hbase.regionserver.dns.interface

  • 當使用 DNS 的時候,RegionServer 用來上報的 IP 地址的網絡接口名字
  • 默認: default

30. hbase.regionserver.dns.nameserver

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

31. hbase.master.dns.interface

  • 當使用 DNS 的時候,Master 用來上報的 IP 地址的網絡接口名字
  • 默認: default

32. hbase.master.dns.nameserver

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

33. hbase.balancer.period

  • Master 執行 region balancer 的間隔
  • 默認: 300000

34. hbase.regions.slop

  • 當任一 regionserver 有 average + (average * slop) 個 region 是會執行 Rebalance
  • 默認: 0

35. hbase.master.logcleaner.ttl

  • Hlog 存在於.oldlogdir 文件夾的最長時間, 超過了就會被 Master 的線程清理掉
  • 默認: 600000

36. hbase.master.logcleaner.plugins

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

37. hbase.regionserver.global.memstore.upperLimit

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

38. hbase.regionserver.global.memstore.lowerLimit

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

39. hbase.server.thread.wakefrequency

  • service 工作的 sleep 間隔,單位毫秒。 可以作為 service 線程的 sleep 間隔,比如 log roller
  • 默認: 10000

40. hbase.hregion.memstore.flush.size

  • 當 memstore 的大小超過這個值的時候,會 flush 到磁盤。這個值被一個線程每隔 hbase.server.thread.wakefrequency 檢查一下
  • 默認: 67108864 (64MB)

41. hbase.hregion.preclose.flush.size

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

42. hbase.hregion.memstore.block.multiplier

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

43. hbase.hregion.memstore.mslab.enabled

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

44. hbase.hregion.max.filesize

  • 最大 HStoreFile 大小。若某個 Column families 的 HStoreFile 增長達到這個值,這個 Hegion 會被切割成兩個
  • 默認: 268435456 (256M)

45. hbase.hstore.compactionThreshold

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

46. hbase.hstore.blockingStoreFiles

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

47. hbase.hstore.blockingWaitTime

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

48. hbase.hstore.compaction.max

  • 每個“小”合並的 HStoreFiles 最大數量
  • 默認: 10

49. hbase.hregion.majorcompaction

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

50. hbase.mapreduce.hfileoutputformat.blocksize

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

51. hfile.block.cache.size

  • 分配給 HFile/StoreFile 的 block cache 占最大堆(-Xmx setting)的比例。默認是20%,設置為0就是不分配
  • 默認: 0.2

52. hbase.hash.type

  • 哈希函數使用的哈希算法。可以選擇兩個值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 這個哈希是給 bloom filters 用的
  • 默認: murmur

53. hbase.master.keytab.file

  • HMaster server 驗證登錄使用的 kerberos keytab 文件路徑。(譯者注:Hbase 使用 Kerberos實現安全)
  • 默認: none

54. hbase.master.kerberos.principal

  • 例如. “hbase/_HOST@EXAMPLE.COM”。 HMaster 運行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中獲取. 如果 “_HOST” 被用做 hostname portion,需要使用實際運行的 hostname 來替代它
  • 默認: none

55. hbase.regionserver.keytab.file

  • HRegionServer 驗證登錄使用的 kerberos keytab 文件路徑
  • 默認: none

56. 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
  • 默認: none

57. zookeeper.session.timeout

  • ZooKeeper 會話超時。Hbase 把這個值傳遞改 zk 集群,向它推薦一個會話的最大超時時間。單位是毫秒
  • 默認: 180000

58. zookeeper.znode.parent

  • ZooKeeper 中的 Hbase 的根 ZNode。所有的 Hbase 的 ZooKeeper 會用這個目錄配置相對路徑。默認情況下,所有的 Hbase 的 ZooKeeper 文件路徑是用相對路徑,所以它們會都去這個目錄下面\
  • 默認: /hbase

59. zookeeper.znode.rootserver

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

60. hbase.zookeeper.quorum

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

61. hbase.zookeeper.peerport

  • ZooKeeper節點使用的端口
  • 默認: 2888

62. hbase.zookeeper.leaderport

  • ZooKeeper用來選擇Leader的端口
  • 默認: 3888

63. hbase.zookeeper.property.initLimit

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

64. hbase.zookeeper.property.syncLimit

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

65. hbase.zookeeper.property.dataDir

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

66. hbase.zookeeper.property.clientPort

  • ZooKeeper的zoo.conf中的配置。 客戶端連接的端口
  • 默認: 2181

67. hbase.zookeeper.property.maxClientCnxns

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

68. hbase.rest.port

  • HBase REST server的端口
    -默認: 8080

69. hbase.rest.readonly

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

70. hbase.regionserver.restart.on.zk.expire

  • 當 regionserver 遇到 ZooKeeper session expired , regionserver 是否選擇 restart
  • 默認: false


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM