Hbase運維手冊.doc_第1頁
Hbase運維手冊.doc_第2頁
Hbase運維手冊.doc_第3頁
Hbase運維手冊.doc_第4頁
Hbase運維手冊.doc_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Hbase運維手冊1.region情況需要檢查1. region的數(shù)量(總數(shù)和每臺regionserver上的region數(shù))2. region的大小如果發(fā)現(xiàn)異??梢酝ㄟ^手動merge region和手動分配region來調(diào)整從CDH前臺和master前臺以及regionServer的前臺都可以看到region數(shù)量,如master前臺: 在region server前臺可以看到storeFile大?。?.緩存命中率緩存命中率對hbase的讀有很大的影響,可以觀察這個指標來調(diào)整blockcache的大小。從regionserver web頁面可以看到block cache的情況: 注意:HBase上Regionserver的內(nèi)存分為兩個部分,一部分作為Memstore,主要用來寫;另外一部分作為BlockCache,主要用于讀。 寫請求會先寫入Memstore,Regionserver會給每個region提供列族數(shù)提供一定數(shù)量的Memstore,當Memstore滿64MB以后,會啟動 flush刷新到磁盤。當Memstore的總大小超過限制時(heapsize * hbase.regionserver.global.memstore.upperLimit * 0.9),會強行啟動flush進程,從最大的Memstore開始flush直到低于限制。 讀請求先到Memstore中查數(shù)據(jù),查不到就到BlockCache中查,再查不到就會到磁盤上讀,并把讀的結(jié)果放入BlockCache。由于BlockCache采用的是LRU策略,因此BlockCache達到上限(heapsize * hfile.block.cache.size * 0.85)后,會啟動淘汰機制,淘汰掉最老的一批數(shù)據(jù)。一個Regionserver上有一個BlockCache和N個Memstore,它們的大小之和不能大于等于heapsize * 0.8,否則HBase不能正常啟動。默認配置下,BlockCache為0.2,而Memstore為0.4。在注重讀響應(yīng)時間的應(yīng)用場景下,可以將 BlockCache設(shè)置大些,Memstore設(shè)置小些,以加大緩存的命中率。HBase RegionServer包含三個級別的Block優(yōu)先級隊列: Single:如果一個Block第一次被訪問,則放在這一優(yōu)先級隊列中; Multi:如果一個Block被多次訪問,則從Single隊列移到Multi隊列中; InMemory:如果一個Block是inMemory的,則放到這個隊列中。以上將Cache分級思想的好處在于: 首先,通過inMemory類型Cache,可以有選擇地將in-memory的column families放到RegionServer內(nèi)存中,例如Meta元數(shù)據(jù)信息; 通過區(qū)分Single和Multi類型Cache,可以防止由于Scan操作帶來的Cache頻繁顛簸,將最少使用的Block加入到淘汰算法中。默認配置下,對于整個BlockCache的內(nèi)存,又按照以下百分比分配給Single、Multi、InMemory使用:0.25、0.50和0.25。注意,其中InMemory隊列用于保存HBase Meta表元數(shù)據(jù)信息,因此如果將數(shù)據(jù)量很大的用戶表設(shè)置為InMemory的話,可能會導(dǎo)致Meta表緩存失效,進而對整個集群的性能產(chǎn)生影響。3.讀寫請求數(shù)通過讀寫請求數(shù)可以大概看出每臺regionServer的壓力,如果壓力分布不均勻,應(yīng)該檢查regionServer上的region以及其它指標 4.壓縮隊列壓縮隊列存放的是正在壓縮的storefile,compact操作對hbase的讀寫影響較大通過cdh的hbase圖表庫可以看到集群總的壓縮隊列大?。嚎梢酝ㄟ^CDH的hbase主頁查詢compact日志:點擊“壓縮”進入:5.刷新隊列單個region的memstore寫滿(128M)或regionServer上所有region的memstore大小總合達到門限時會進行flush操作,flush操作會產(chǎn)生新的storeFile同樣可以通過CDH的hbase前臺查看flush日志:6.rpc調(diào)用隊列沒有及時處理的rpc操作會放入rpc操作隊列,從rpc隊列可以看出服務(wù)器處理請求的情況 7.文件塊保存在本地的百分比datanode和regionserver一般都部署在同一臺機器上,所以region server管理的region會優(yōu)先存儲在本地,以節(jié)省網(wǎng)絡(luò)開銷。如果block locality較低有可能是剛做過balance或剛重啟,經(jīng)過compact之后region的數(shù)據(jù)都會寫到當前機器的datanode,block locality也會慢慢達到接近100:8.內(nèi)存使用情況內(nèi)存使用情況,主要可以看used Heap和memstore的大小,如果usedHeadp一直超過80-85%以上是比較危險的memstore很小或很大也不正常從region Server的前臺可以看到: 9.檢查數(shù)據(jù)一致性以及修復(fù)方法數(shù)據(jù)一致性是指:1. 每個region都被正確的分配到一臺regionserver上,并且region的位置信息及狀態(tài)都是正確的。2. 每個table都是完整的,每一個可能的rowkey都可以對應(yīng)到唯一的一個regionhbase hbck注:有時集群正在啟動或region正在做split操作,會造成數(shù)據(jù)不一致hbase hbck -details加上details會列出更詳細的檢查信息,包括所以正在進行的split任務(wù)hbase hbck Table1 Table2如果只想檢查指定的表,可以在命令后面加上表名,這樣可以節(jié)省操作時間CDH通過CDH提供的檢查報告也可以看到hbck的結(jié)果,日常只需要看CDH hbck的報告即可: 選擇“最近的Hbck結(jié)果”: 1)局部的修復(fù)如果出現(xiàn)數(shù)據(jù)不一致,修復(fù)時要最大限度的降低可能出現(xiàn)的風險,使用以下命令對region進行修復(fù)風險較低: hbase hbck -fixAssignments 修復(fù)region沒有分配(unassigned),錯誤分配(incorrectly assigned)以及多次分配(multiply assigned)的問題 hbase hbck -fixMeta 刪除META表里有記錄但HDFS里沒有數(shù)據(jù)記錄的region 添加HDFS里有數(shù)據(jù)但是META表里沒有記錄的region到META表 hbase hbck -repairHoles 等價于:hbase hbck -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsHoles的作用: 如果rowkey出現(xiàn)空洞,即相鄰的兩個region的rowkey不連續(xù),則使用這個參數(shù)會在HDFS里面創(chuàng)建一個新的region。創(chuàng)建新的region之后要使用-fixMeta和-fixAssignments參數(shù)來使用掛載這個region,所以一般和前兩個參數(shù)一起使用 2)Region重疊修復(fù) 進行以下操作非常危險,因為這些操作會修改文件系統(tǒng),需要謹慎操作! 進行以下操作前先使用hbck details查看詳細問題,如果需要進行修復(fù)先停掉應(yīng)用,如果執(zhí)行以下命令時同時有數(shù)據(jù)操作可能會造成不可期的異常。 hbase hbck -fixHdfsOrphans 將文件系統(tǒng)中的沒有metadata文件(.regioninfo)的region目錄加入到hbase中,即創(chuàng)建.regioninfo目錄并將region分配到regionser hbase hbck -fixHdfsOverlaps 通過兩種方式可以將rowkey有重疊的region合并: 1. merge:將重疊的region合并成一個大的region 2. sideline:將region重疊的部分去掉,并將重疊的數(shù)據(jù)先寫入到臨時文件,然后再導(dǎo)入進來。 如果重疊的數(shù)據(jù)很大,直接合并成一個大的region會產(chǎn)生大量的split和compact操作,可以通過以下參數(shù)控制region過大: -maxMerge 合并重疊region的最大數(shù)量 -sidelineBigOverlaps 假如有大于maxMerge個數(shù)的region重疊,則采用sideline方式處理與其它region的重疊. -maxOverlapsToSideline 如果用sideline方式處理重疊region,最多sideline n個region . hbase hbck -repair 以下命令的縮寫:hba hbase hbck -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile sidelineBigOverlaps 可以指定表名:hba hbase hbck -repair Table1 Table2 hbase hbck -fixMetaOnly fixAssignments 如果只有META表的region不一致,則可以使用這個命令修復(fù) hbase hbck fixVersionFile Hbase的數(shù)據(jù)文件啟動時需要一個version file,如果這個文件丟失,可以用這個命令來新建一個,但是要保證hbck的版本和Hbase集群的版本是一樣的 hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair 如果ROOT表和META表都出問題了Hbase無法啟動,可以用這個命令來創(chuàng)建新的ROOT和META表。 這個命令的前提是Hbase已經(jīng)關(guān)閉,執(zhí)行時它會從hbase的home目錄加載hbase的相關(guān)信息(.regioninfo),如果表的信息是完整的就會創(chuàng)建新的root和meta目錄及數(shù)據(jù) hbase hbck fixSplitParents 當region做split操作的時候,父region會被自動清除掉。但是有時候子region在父region被清除之前又做了split。造成有些延遲離線的父region存在于META表和HDFS中,但是沒有部署,HBASE又不能清除他們。這種情況下可以 使用此命令重置這些在META表中的region為在線狀態(tài)并且沒有split。然后就可以使用之前的修復(fù)命令把這個region修復(fù) 10.手動merge region進行操作前先將balancer關(guān)閉,操作完成后再打開balancer經(jīng)過一段時間的運行之后有可能會產(chǎn)生一些很小的region,需要定期檢查這些region并將它們和相鄰的region合并以減少系統(tǒng)的總region數(shù),減少管理開銷 合并方法:1. 找到需要合并的region的encoded name2. 進入hbase shell3. 執(zhí)行merge_region region1,region2 手動分配region如果發(fā)現(xiàn)臺regionServer資源占用特別高,可以檢查這臺regionserver上的region是否存在過多比較大的region,通過hbase shell將部分比較大的region分配給其他不是很忙的regions server:move encodeRegionName, ServerName #encodeRegionName指的regioName后面的編碼,ServerName指的是master-status的Region Servers列表例:move 24d9eef6ba5616b1a60180503e62bae7,DN1,60020,1429840460046手動major_compact進行操作前先將balancer關(guān)閉,操作完成后再打開balancer選擇一個系統(tǒng)比較空閑的時間手工major_compact,如果hbase更新不是太頻繁,可以一個星期對所有表做一次 major_compact,這個可以在做完一次major_compact后,觀看所有的storefile數(shù)量,如果storefile數(shù)量增加到 major_compact后的storefile的近二倍時,可以對所有表做一次major_compact,時間比較長,操作盡量避免高鋒期注:fms現(xiàn)在生產(chǎn)上開啟了自動major_compact,不需要做手動major compactbalance_switchbalance_switch true 打開balancerbalance_switch flase 關(guān)閉balancer配置master是否執(zhí)行平衡各個regionserver的region數(shù)量,當我們需要維護或者重啟一個regionserver時,會關(guān)閉balancer,這樣就使得region在regionserver上的分布不均,這個時候需要手工的開啟balance。regionserver重啟 graceful_stop.sh -restart -reload -debugnodename進行操作前先將balancer關(guān)閉,操作完成后再打開balancer這個操作是平滑的重啟regionserver進程,對服務(wù)不會有影響,他會先將需要重啟的regionserver上面的所有region遷移到其它的服務(wù)器,然后重啟,最后又會將之前的region遷移回來,但我們修改一個配置時,可以用這種方式重啟每一臺機 子,對于hbase regionserver重啟,不要直接kill進程,這樣會造成在zookeeper.session.timeout這個時間長的中斷,也不要通過bin/hbase-daemon.sh stop regionserver去重啟,如果運氣不太好,-ROOT-或者.META.表在上面的話,所有的 請求會全部失敗regionserver關(guān)閉下線bin/graceful_stop.sh nodename進行操作前先將balancer關(guān)閉,操作完成后再打開balancer和上面一樣,系統(tǒng)會在關(guān)閉之前遷移所有region,然后stop進程。flush表所有memstore刷新到hdfs,通常如果發(fā)現(xiàn)regionserver的內(nèi)存使用過大,造成該機的 regionserver很多線程block,可以執(zhí)行一下flush操作,這個操作會造成hbase的storefile數(shù)量劇增,應(yīng)盡量避免這個操 作,還有一種情況,在hbase進行遷移的時候,如果選擇拷貝文件方式,可以先停寫入,然后flush所有表,拷貝文件強制splitHbase 允許客戶端強制執(zhí)行split,在hbase shell中執(zhí)行以下命令: split forced_table, b /其中forced_table 為要split的table , b 為split 點region splits執(zhí)行過程:region server處理寫請求的時候,會先寫入memstore,當memstore 達到一定大小的時候,會寫入磁盤成為一個store file。這個過程叫做 memstore flush。當store files 堆積到一定大小的時候,region server 會 執(zhí)行compact操作,把他們合成一個大的文件。 當每次執(zhí)行完flush 或者compact操作,都會判斷是否需要split。當發(fā)生split的時候,會生成兩個region A 和 region B但是parent region數(shù)據(jù)file并不會發(fā)生復(fù)制等操作,而是region A 和region B 會有這些file的引用。這些引用文件會在下次發(fā)生compact操作的時候清理掉,并且當region中有引用文件的時候是不會再進行split操作的。這個地方需要注意一下:(大量的寫入會刷大量的HFile,一個region就會對這大量的hfile進行compact操作。如果這時候觸發(fā)了split操作,這個region會成為父region,而兩個子region會保留父region的引用文件。而在這其間,子region會繼續(xù)寫入數(shù)據(jù)。那么又可能觸發(fā)子region的compact,這里的關(guān)鍵點來了子region如果做compact的文件都是新寫入的文件,而遲遲不去compact父region 引用的文件,會導(dǎo)致一個問題就是這個子region無法被split掉了(因為含有父region引用的region是不能被split的)。那么子region越來越大,由于寫入文件數(shù)量急劇增長,父region的ref文件總也得不到機會compact,就形成了大region的惡性循環(huán)情況由于region太大,compact無法完成,但是由于compact無法完成導(dǎo)致region無法split,無法分攤compact的壓力給其他regionserver。)雖然split region操作是region server單獨確定的,但是split過程必須和很多其他部件合作。region server 在split開始前和結(jié)束前通知master,并且需要更新.META.表,這樣,客戶端就能知道有新的region。在hdfs中重新排列目錄結(jié)構(gòu)和數(shù)據(jù)文件。split是一個復(fù)雜的操作。在split region的時候會記錄當前執(zhí)行的狀態(tài),當出錯的時候,會根據(jù)狀態(tài)進行回滾。下圖表示split中,執(zhí)行的過程。(紅色線表示region server 或者master的操作,綠色線表示client的操作。)1.region server 決定split region,第一步,region server在zookeeper中創(chuàng)建在/hbase/region-in-transition/region-name 目錄下,創(chuàng)建一個znode,狀態(tài)為SPLITTING.2.因為master有對region-in-transition 的znode做監(jiān)聽,所以,mater的得知parent region需要split3.region server 在hdfs的parent region的目錄下創(chuàng)建一個名為“.splits”的子目錄4.region server 關(guān)閉parent region。強制flush緩存,并且在本地數(shù)據(jù)結(jié)構(gòu)中標記region為下線狀態(tài)。如果這個時候客戶端剛好請求到parent region,會拋出NotServingRegionException。這時客戶端會進行補償性重試。5.region server在.split 目錄下分別為兩個daughter region創(chuàng)建目錄和必要的數(shù)據(jù)結(jié)構(gòu)。然后創(chuàng)建兩個引用文件指向parent regions的文件。6.region server 在HDFS中,創(chuàng)建真正的region目錄,并且把引用文件移到對應(yīng)的目錄下。7.region server 發(fā)送一個put的請求到.META.表中,并且在.META.表中設(shè)置parent region為下線狀態(tài),并且在parent region對應(yīng)的row中兩個daughter region的信息。但是這個時候在.META.表中daughter region 還不是獨立的row。這個時候如果client scan .META.表,會發(fā)現(xiàn)parent region正在split,但是client還看不到daughter region的信息。當這個put 成功之后,parent region split會被正在的執(zhí)行。如果在 RPC 成功之前 region server 就失敗了,master和下次打開parent region的region server 會清除關(guān)于這次split的臟狀態(tài)。但是當RPC返回結(jié)果給到parent region ,即.META.成功更新之后,region split的流程還會繼續(xù)進行下去。相當于是個補償機制,下次在打開這個parent region的時候會進行相應(yīng)的清理操作。8.region server 打開兩個daughter region接受寫操作。9.region server 在.META.表中增加daughters A 和 B region的相關(guān)信息,在這以后,client就能發(fā)現(xiàn)這兩個新的regions并且能發(fā)送請求到這兩個新的region了。client本地具體有.META.表的緩存,當他們訪問到parent region的時候,發(fā)現(xiàn)parent region下線了,就會重新訪問.META.表獲取最新的信息,并且更新本地緩存。10.region server 更新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論