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先把資料...