黑猴子的家 HBase 之 Hadoop通用性優化

2021-08-30 08:44:13 字數 2320 閱讀 4728

hbase 依賴於 hadoop,講hbase優化,不得不講hadoop優化,此處hadoop優化,不僅僅針對hbase,對於依賴hadoop生態的都有相對優化幫助

1、namenode元資料備份使用ssd

ssd2、定時備份namenode上的元資料

每小時或者每天備份,如果資料極其重要,可以5~10分鐘備份一次。備份可以通過定時任務複製元資料目錄即可。

3、為namenode指定多個元資料目錄

使用dfs.name.dir或者dfs.namenode.name.dir指定。這樣可以提供元資料的冗餘和健壯性,以免發生故障。

4、namenode的dir自恢復

設定dfs.namenode.name.dir.restore為true,允許嘗試恢復之前失敗的dfs.namenode.name.dir目錄,在建立checkpoint時做此嘗試,如果設定了多個磁碟,建議允許。

5、hdfs保證rpc呼叫會有較多的執行緒數

hdfs-site.xml

屬性:dfs.namenode.handler.count

解釋:該屬性是namenode服務預設執行緒數,的預設值是10,根據機器的可用記憶體可以調整為50~100

屬性:dfs.datanode.handler.count

解釋:該屬性預設值為10,是datanode的處理執行緒數,如果hdfs客戶端程式讀寫請求比較多,可以調高到1520,設定的值越大,記憶體消耗越多,不要調整的過高,一般業務中,510即可。

6、hdfs副本數的調整

hdfs-site.xml

屬性:dfs.replication

解釋:如果資料量巨大,且不是非常之重要,可以調整為23,如果資料非常之重要,可以調整為35。

7、hdfs檔案塊大小的調整

hdfs-site.xml

屬性:dfs.blocksize

解釋:塊大小定義,該屬性應該根據儲存的大量的單個檔案大小來設定,如果大量的單個檔案都小於100m,建議設定成64m塊大小,對於大於100m或者達到gb的這種情況,建議設定成256m,一般設定範圍波動在64m~256m之間。

8、mapreduce job任務服務執行緒數調整

mapred-site.xml

屬性:mapreduce.jobtracker.handler.count

解釋:該屬性是job任務執行緒數,預設值是10,根據機器的可用記憶體可以調整為50~100

9、http伺服器工作執行緒數

mapred-site.xml

屬性:mapreduce.tasktracker.http.threads

解釋:定義http伺服器工作執行緒數,預設值為40,對於大集群可以調整到80~100

10、檔案排序合併優化

mapred-site.xml

屬性:mapreduce.task.io.sort.factor

解釋:檔案排序時同時合併的資料流的數量,這也定義了同時開啟檔案的個數,預設值為10,如果調高該引數,可以明顯減少磁碟io,即減少檔案讀取的次數。

11、設定任務併發

12、mr輸出資料的壓縮

mapred-site.xml

屬性:mapreduce.map.output.compress、mapreduce.output.fileoutputformat.compress

解釋:對於大集群而言,建議設定map-reduce的輸出為壓縮的資料,而對於小集群,則不需要。

mapred-site.xml

屬性:mapreduce.tasktracker.map.tasks.maximum

mapreduce.tasktracker.reduce.tasks.maximum

解釋:以上兩個屬性分別為乙個單獨的job任務可以同時執行的map和reduce的數量。

設定上面兩個引數時,需要考慮cpu核數、磁碟和記憶體容量。假設乙個8核的cpu,業務內容非常消耗cpu,那麼可以設定map數量為4,如果該業務不是特別消耗cpu型別的,那麼可以設定map數量為40,reduce數量為20。這些引數的值修改完成之後,一定要觀察是否有較長等待的任務,如果有的話,可以減少數量以加快任務執行,如果設定乙個很大的值,會引起大量的上下文切換,以及記憶體與磁碟之間的資料交換,這裡沒有標準的配置數值,需要根據業務和硬體配置以及經驗來做出選擇。

在同一時刻,不要同時執行太多的mapreduce,這樣會消耗過多的記憶體,任務會執行的非常緩慢,我們需要根據cpu核數,記憶體容量設定乙個mr任務併發的最大值,使固定資料量的任務完全載入到記憶體中,避免頻繁的記憶體和磁碟資料交換,從而降低磁碟io,提高效能。

大概估算公式:

map = 2 + ⅔cpu_core

reduce = 2 + ⅓cpu_core

黑猴子的家 HBase 的架構

hbase一種是作為儲存的分布式檔案系統,另一種是作為資料處理模型的mr框架。因為日常開發人員比較熟練的是結構化的資料進行處理,但是在hdfs直接儲存的檔案往往不具有結構化,所以催生出了hbase在hdfs上的操作。如果需要查詢資料,只需要通過鍵值便可以成功訪問。架構圖如下圖所示 hbase內建有z...

黑猴子的家 HBase 高可用 HA

在hbase中hmaster負責監控regionserver的生命週期,均衡regionserver的負載,如果hmaster掛掉了,那麼整個hbase集群將陷入不健康的狀態,並且此時的工作狀態並不會維持太久。所以hbase支援對hmaster的高可用配置。1 關閉hbase集群 如果沒有開啟則跳過...

黑猴子的家 HBase 寫資料流程

1 client也是先訪問zookeeper,找到meta表,並獲取meta表資訊。2 確定當前將要寫入的資料所對應的regionserver伺服器和region。3 client向該regionserver伺服器發起寫入資料請求,然後regionserver收到請求並響應。4 client先把資料...