HBase調優 | HBase Compaction參數調優

2021-03-01 HBase技術社區

Compaction的主要目的: 1.將多個HFile 合併為較大HFile,從而提高查詢性能 2.減少HFile 數量,減少小文件對HDFS 影響 3.提高Region初始化速度。

hbase.hstore.compaction.min

當某個列族下的HFile 文件數量超過這個值,則會觸發 minor compaction操作 默認是3,比較小,建議設置10-15 這個值影響是: 設置過小會導致合併文件太頻繁,特別是頻繁bulkload 或者數據量比較大的情況下 設置過大又會導致一個列族下面的HFile 數量比較多,影響查詢效率

進階: 這個值的設置還和業務數據的特點有關係,比如類似詳單雲系統,業務邏輯是 按月建表,每個月建一個表,rowkey是reverse(手機號碼)+時間戳 數據每3-5分鐘導入一次。查詢邏輯是根據手機號碼+時間段查詢 通常手機流量使用情況會某個號碼會不斷的產生,所以一個手機號碼產生的數據基本上會按照分布在很多HFile中。 如果hbase.hstore.compaction.min 設置過大的話,則一個查詢時候會訪問較多的 HFile 影響查詢效率。 這種業務就不適合設置的特別大。

相反如果是類似只查詢某段時間的日誌業務,查詢的數據都比較集中,也就是查詢只會發生在一個HFile或者相鄰的2個HFile 中。 此時合併文件,對查詢效率的提升影響不大。則可以將該值設置的大一些,減少合併對系統的影響。

hbase.hstore.compaction.max

一次最多可以合併多少個HFile,默認為 10 限制某個列族下面選擇最多可選擇多少個文件來進行合併 注意需要滿足條件hbase.hstore.compaction.max > hbase.hstore.compaction.min

hbase.hstore.compaction.max.size

默認Long最大值,minor_compact 時 HFile 大小超過這個值則不會被選中合併 用來限制防止過大的HFile被選中合併,減少寫放大以及提高合併速度

hbase.hstore.compaction.min.size

默認 memstore 大小,minor_compact 時 HFile 小於這個值,則一定會被選中 可用來優化儘量多的選擇合併小的文件

hbase.regionserver.thread.compaction.small 默認1,每個RS的 minor compaction線程數,其實不是很準確,這個線程主要是看參與合併的HFile數據量 有可能minor compaction數據量較大會使用compaction.large 提高線程可提高HFile 合併效率

hbase.regionserver.thread.compaction.large 默認1,每個RS的 major compaction線程數,其實不是很準確,這個線程主要是看參與合併的HFile數據量 有可能minor compaction數據量較大會使用compaction.large 提高線程可提高 HFile 合併效率

hbase.hregion.majorcompaction

默認:86400000

關閉hbase major compaction,業務低谷手動執行

推薦 4 個 Apache 頂級項目的官方公眾號,希望對大家了解開源大數據生態,擴展技術視野有所幫助。

由 Apache Flink Community China 運營管理,旨在聯合國內的 Flink 大 V,向國內宣傳和普及 Flink 相關的技術。公眾號將持續輸出 Flink 最新社區動態,入門教程、Meetup 資訊、應用案例以及源碼解析等內容,希望聯合社區同學一起推動國內大數據技術發展。

研究探討 Apache HBase 內核原理,源碼剖析,周邊生態以及實踐應用,匯集眾多Apache HBase PMC & Committer以及愛好使用者,提供一線Apache HBase企業實戰以及Flink集成等資訊。

相關焦點

  • HBase原理 | HBase Compaction介紹與參數調優
    hbase.hstore.compaction.min默認值 3,一個列族下的HFile數量超過該值就會觸發Minor Compaction,這個參數默認值小了,一般情況下建議調大到5~10之間,注意相應調整下一個參數。
  • HBase調優|HBase + G1GC 性能調優
    先傳送門一下,之前在HBaseConAsia2017分享過一個G1GC調優的PPT: http://openinx.github.io/2012/01/01/my-share/首先,對G1算法不熟悉的同學,可以仔細讀一讀Oracle的G1算法教程,教程基本交代了G1的運行原理以及和CMS本質區別,如果對算法細節感興趣,可以讀一下Garbage-First
  • HBase的讀寫和javaAPI的使用
    一、hbase系統管理表hbase:namespace,記錄了hbase中所有namespace的信息 ,當前系統下有哪些namespace信息scan 'hbase:namespace'hbase:meta,記錄了region信息scan 'hbase:meta'二、讀寫思想client(get、scan)rowkey條件(1)由於rowkey是存儲在region
  • 10大HBase常見運維工具整理
    兩個工具都可以指定row的起止位置和timestamp來進行範圍查詢# RowCounter掃描t1hbase org.apache.hadoop.hbase.mapreduce.RowCounter t1#用CellCounter掃描t1表並將結果寫入HDFS的/tmp/t1.cell目錄hbase org.apache.hadoop.hbase.mapreduce.CellCounter
  • HBase實踐篇 | 為HBase的Thrift 客戶端API設計連接池
    這些參數更詳細的說明以及調優建議,可以參考阿里雲資料庫 Redis 的實踐文檔: https://help.aliyun.com/document_detail/98726.html上述內容的參考連結:https://blog.csdn.net/u_ascend/article/details/80594306https://help.aliyun.com
  • HBase與mapreduce集成
    在公司中,大多數都是hbase和mapreduce共同進行業務操作,hbase多數都是讀寫操作,hbase和hadoop在內部已經封裝好了,我們要做的就是調用。常見的模式1、從hbase讀取數據將hbase的數據作為map的輸入2、將數據寫入hbase將hbase作為reduce輸出3、從hbase讀,再寫入hbase
  • Hbase命令大全
    通過help 『hbase』 命名來查看hbase shell 支持的所有命令,hbase將命令進行分組,其中ddl、dml使用較多。默認為 『summary』hbase> statushbase> status 'simple'hbase> status 'summary'hbase> status 'detailed'hbase> status 'replication'hbase> status 'replication', 'source'hbase
  • 關於Hbase的一些常見問題
    但是在hbase-site.xml配置文件裡有個參數hbase.bulkload.retries.number控制了hbase對一個hfile最多plit多少次。這個參數默認是10,如果某個hfile跨越的region數超過10個就會報上述Exception。
  • HBase學習之路 (四)HBase的API操作
    ;  6 import org.apache.hadoop.hbase.HColumnDescriptor;  7 import org.apache.hadoop.hbase.HTableDescriptor;  8 import org.apache.hadoop.hbase.TableName;  9 import org.apache.hadoop.hbase.client.Admin; 10
  • 如何將Hive與HBase整合聯用
    2、確保 Hive 的 lib 目錄下有 hive-hbase-handler-xxx.jar、Zookeeper jar、HBase Server jar、HBase Client jar 包。HBase表不存在CREATE EXTERNAL TABLE hive_table (key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val"
  • Hive整合HBase完整筆記(親測)
    TBLPROPERTIES("hbase.table.name"= "hbase_testcourse"); 指定HBase表名內部表創建語句如下:create tablecourse.hbase_testcourse(cname string,score int) STORED BY 'org.apache.
  • Apache HBase 出現信息洩漏漏洞 - OSCHINA - 中文開源技術交流社區
    任何連接到 HBase 集群的授權用戶都可以修改參數和看到他們本沒有權限看到的 HBase 數據信息。    setAcl /hbase world:anyone:r,sasl:hbase:cdrwa    setAcl /hbase/backup-masters sasl:hbase:cdrwa    setAcl /hbase/draining sasl:hbase:cdrwa    setAcl /hbase/flush-table-proc sasl:hbase
  • HBase基礎環境搭建
    遠程工具連接關閉Selinux關閉防火牆chkconfig iptables off修改主機名第一個network,修改後,將主機命名為masterhbaseNETWORKING=yes#HOSTNAME=localhost.localdomainHOSTNAME=masterhbase
  • HBase基礎學習之bulkload了解
    之前在學習importTSV我們準備兩份數據這兩份數據在導入hbase後,數據還是存在的,我們如果想要實現和hive中類似「剪切」的功能該怎麼辦?這種可以跨過先寫入memstore,直接將數據轉換為storefile文件。
  • Flink SQL 實戰:HBase 的結合應用
    在容器中啟動 HBase shell,創建一張名為 dim_hbase 的 HBase 表,建表語句如下所示:# 在hbase shell創建 hbase表hbase(main):002:0> create 'dim_hbase','cf'Created table dim_hbaseTook 1.3120 seconds=> Hbase
  • Python 環境下的自動化機器學習超參數調優
    機器學習算法的性能高度依賴於超參數的選擇,對機器學習超參數進行調優是一項繁瑣但卻至關重要的任務。本文介紹了一個使用「Hyperopt」庫對梯度提升機(GBM)進行貝葉斯超參數調優的完整示例,並著重介紹了其實現過程。由於機器學習算法的性能高度依賴於超參數的選擇,對機器學習超參數進行調優是一項繁瑣但至關重要的任務。
  • 深入 HBase 架構解析
    這樣,客戶端在第一次訪問用戶Table的流程就變成了:從ZooKeeper(/hbase/meta-region-server)中獲取hbase:meta的位置(HRegionServer的位置),緩存該位置信息。從HRegionServer中查詢用戶Table對應請求的RowKey所在的HRegionServer,緩存該位置信息。
  • HBase二級索引方案
    03 HBse二級索引方案A.基於Coprocessor方案1、官方特性其實從0.94版本開始,HBase官方文檔已經提出了hbase上面實現二級索引的一種路徑:基於CoprocessorApache Phoenix: 功能圍繞著SQL on hbase,支持和兼容多個hbase版本, 二級索引只是其中一塊功能。 二級索引的創建和管理直接有SQL語法支持,使用起來很簡便, 該項目目前社區活躍度和版本更新迭代情況都比較好。
  • 通過Java API 像 MySQL一樣查詢HBASE
    如果需要查看scan結果的全部指標,配置參數ALL_METRICS需要設置為true。或者,我們只需要補發指標,那麼可以通過指定關心的指標即可。  示例:  查看表的全部內容: hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
  • 「HBase筆記」從洗襪子到hbase(hbase是什麼鬼東西)
    為何使用 HBase1、Hadoop是 hbase存儲的基礎。這幾年興起的 Hadoop擁有高性能、高穩定性、易管理的大數據應用平臺。基於 Hadoop衍生出大量優秀的開放源碼項目, Hadoop即將成為大數據的代名詞。2、Hadoop實現了一種分布式文件系統(HDFS)。