日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hbase日常运维

發(fā)布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hbase日常运维 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Hbase日常運維

1.1 監(jiān)控Hbase運行狀況

1.1.1 操作系統(tǒng)

1.1.1.1 IO
1.群集網(wǎng)絡(luò)IO,磁盤IO,HDFS IO

IO越大說明文件讀寫操作越多。當(dāng)IO突然增加時,有可能:1.compact隊列較大,集群正在進行大量壓縮操作。

2.正在執(zhí)行mapreduce作業(yè)

可以通過CDH前臺查看整個集群綜合的數(shù)據(jù)或進入指定機器的前臺查看單臺機器的數(shù)據(jù):

1.Io wait

磁盤IO對集群的影響比較大,如果io wait時間過長需檢查系統(tǒng)或磁盤是否有異常。通常IO增加時io wait也會增加,現(xiàn)在FMS的機器正常情況io wait在50ms以下

跟主機相關(guān)的指標(biāo)可以在CDH前臺左上角先點“主機”選項卡然后選要查看的主機:

1.1.1.2 CPU

如果CPU占用過高有可能是異常情況引起集群資源消耗,可以通過其他指標(biāo)和日志來查看集群正在做什么。

1.1.1.3 內(nèi)存

1.1.2 JAVA

GC 情況

regionserver長時間GC會影響集群性能并且有可能會造成假死的情況

1.1.3 重要的hbase指標(biāo)

1.1.3.1 region情況

需要檢查

  • region的數(shù)量(總數(shù)和每臺regionserver上的region數(shù))

  • region的大小
  • 如果發(fā)現(xiàn)異常可以通過手動merge region和手動分配region來調(diào)整

    從CDH前臺和master前臺以及regionServer的前臺都可以看到region數(shù)量,如master前臺:

    在region server前臺可以看到storeFile大小:

    1.1.3.2 緩存命中率

    緩存命中率對hbase的讀有很大的影響,可以觀察這個指標(biāo)來調(diào)整blockcache的大小。

    從regionserver web頁面可以看到block cache的情況:

    1.1.3.3 讀寫請求數(shù)

    通過讀寫請求數(shù)可以大概看出每臺regionServer的壓力,如果壓力分布不均勻,應(yīng)該檢查regionServer上的region以及其它指標(biāo)

    master web上可以看到所以regionServer的讀寫請求數(shù)

    regionServer上可以看到每個region的讀寫請求數(shù)

    1.1.3.4 壓縮隊列

    壓縮隊列存放的是正在壓縮的storefile,compact操作對hbase的讀寫影響較大

    通過cdh的hbase圖表庫可以看到集群總的壓縮隊列大小:

    可以通過CDH的hbase主頁查詢compact日志:

    點擊“壓縮”進入:

    1.1.3.5 刷新隊列

    單個region的memstore寫滿(128M)或regionServer上所有region的memstore大小總合達到門限時會進行flush操作,flush操作會產(chǎn)生新的storeFile

    同樣可以通過CDH的hbase前臺查看flush日志:

    1.1.3.6 rpc調(diào)用隊列

    沒有及時處理的rpc操作會放入rpc操作隊列,從rpc隊列可以看出服務(wù)器處理請求的情況

    1.1.3.7 文件塊保存在本地的百分比

    datanode和regionserver一般都部署在同一臺機器上,所以region server管理的region會優(yōu)先存儲在本地,以節(jié)省網(wǎng)絡(luò)開銷。如果block locality較低有可能是剛做過balance或剛重啟,經(jīng)過compact之后region的數(shù)據(jù)都會寫到當(dāng)前機器的datanode,block locality也會慢慢達到接近100:

    1.1.3.8 內(nèi)存使用情況

    內(nèi)存使用情況,主要可以看used Heap和memstore的大小,如果usedHeadp一直超過80-85%以上是比較危險的

    memstore很小或很大也不正常

    從region Server的前臺可以看到:

    1.1.3.9 slowHLogAppendCount

    寫HLog過慢(>1s)的操作次數(shù),這個指標(biāo)可以作為HDFS狀態(tài)好壞的判斷

    在region Server前臺查看:

    1.1.4 CDH檢查日志

    CDH有強大的系統(tǒng)事件和日志搜索功能,每一個服務(wù)(如:hadoop,hbase)的主頁都提供了事件和告警的查詢,日常運維除了CDH主頁的告警外,需要查看這些事件以發(fā)現(xiàn)潛在的問題:

    選擇“事件搜索”中的標(biāo)簽(“警報”、“嚴(yán)重”)可以進入相關(guān)的事件日志,如“嚴(yán)重”:

    1.2 檢查數(shù)據(jù)一致性以及修復(fù)方法

    數(shù)據(jù)一致性是指:
    1.每個region都被正確的分配到一臺regionserver上,并且region的位置信息及狀態(tài)都是正確的。
    2.每個table都是完整的,每一個可能的rowkey 都可以對應(yīng)到唯一的一個region.

    1.2.1 檢查

    hbase 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.2.2 修復(fù)

    1.2.2.1 局部的修復(fù)

    如果出現(xiàn)數(shù)據(jù)不一致,修復(fù)時要最大限度的降低可能出現(xiàn)的風(fēng)險,使用以下命令對region進行修復(fù)風(fēng)險較低:

    1.2.2.1.1 hbase hbck -fixAssignments

    修復(fù)region沒有分配(unassigned),錯誤分配(incorrectly assigned)以及多次分配(multiply assigned)的問題

    1.2.2.1.2 hbase hbck -fixMeta

    刪除META表里有記錄但HDFS里沒有數(shù)據(jù)記錄的region
    添加HDFS里有數(shù)據(jù)但是META表里沒有記錄的region到META表
    1.2.2.1.3 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ù)一起使用

    1.2.2.2 Region重疊修復(fù)

    進行以下操作非常危險,因為這些操作會修改文件系統(tǒng),需要謹(jǐn)慎操作!

    進行以下操作前先使用hbck –details查看詳細問題,如果需要進行修復(fù)先停掉應(yīng)用,如果執(zhí)行以下命令時同時有數(shù)據(jù)操作可能會造成不可期的異常。

    1.2.2.2.1 hbase hbck -fixHdfsOrphans

    將文件系統(tǒng)中的沒有metadata文件(.regioninfo)的region目錄加入到hbase中,即創(chuàng)建.regioninfo目錄并將region分配到regionser

    1.2.2.2.2 hbase hbck -fixHdfsOverlaps

    通過兩種方式可以將rowkey有重疊的region合并:

  • merge:將重疊的region合并成一個大的region

  • sideline:將region重疊的部分去掉,并將重疊的數(shù)據(jù)先寫入到臨時文件,然后再導(dǎo)入進來。
  • 如果重疊的數(shù)據(jù)很大,直接合并成一個大的region會產(chǎn)生大量的split和compact操作,可以通過以下參數(shù)控制region過大:

    -maxMerge <n> 合并重疊region的最大數(shù)量

    -sidelineBigOverlaps 假如有大于maxMerge個數(shù)的 region重疊, 則采用sideline方式處理與其它region的重疊.

    -maxOverlapsToSideline <n> 如果用sideline方式處理重疊region,最多sideline n個region .

    1.2.2.2.3 hbase hbck -repair
    以下命令的縮寫: hbase hbck -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile –sidelineBigOverlaps 可以指定表名:
    hbase hbck -repair Table1 Table2

    1.2.2.2.4 hbase hbck -fixMetaOnly –fixAssignments

    如果只有META表的region不一致,則可以使用這個命令修復(fù)

    1.2.2.2.5 hbase hbck –fixVersionFile

    Hbase的數(shù)據(jù)文件啟動時需要一個version file,如果這個文件丟失,可以用這個命令來新建一個,但是要保證hbck的版本和Hbase集群的版本是一樣的

    1.2.2.2.6 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ù)

    1.2.2.2.7 hbase hbck –fixSplitParents

    當(dāng)region做split操作的時候,父region會被自動清除掉。但是有時候子region在父region被清除之前又做了split。造成有些延遲離線的父region存在于META表和HDFS中,但是沒有部署,HBASE又不能清除他們。這種情況下可以使用此命令重置這些在META表中的region為在線狀態(tài)并且沒有split。然后就可以使用之前的修復(fù)命令把這個region修復(fù)

    1.3 手動merge region

    進行操作前先將balancer關(guān)閉,操作完成后再打開balancer

    經(jīng)過一段時間的運行之后有可能會產(chǎn)生一些很小的region,需要定期檢查這些region并將它們和相鄰的region合并以減少系統(tǒng)的總region數(shù),減少管理開銷

    合并方法:
  • 找到需要合并的region的encoded name

  • 進入hbase shell

  • 執(zhí)行merge_region ‘region1’,’region2’
  • 1.4 手動分配region

    如果發(fā)現(xiàn)臺regionServer資源占用特別高,可以檢查這臺regionserver上的region是否存在過多比較大的region,通過hbase shell將部分比較大的region分配給其他不是很忙的regions server:

    move ‘regionId’,’serverName’

    例:

    move '54fca23d09a595bd3496cd0c9d6cae85','vmcnod05,60020,1390211132297'

    1.5 手動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 compact

    1.6 balance_switch

    balance_switch true 打開balancer

    balance_switch flase 關(guān)閉balancer

    配置master是否執(zhí)行平衡各個regionserver的region數(shù)量,當(dāng)我們需要維護或者重啟一個regionserver時,會關(guān)閉balancer,這樣就使得region在regionserver上的分布不均,這個時候需要手工的開啟balance。

    1.7 regionserver重啟

    graceful_stop.sh --restart --reload --debug nodename

    進行操作前先將balancer關(guān)閉,操作完成后再打開balancer

    這個操作是平滑的重啟regionserver進程,對服務(wù)不會有影響,他會先將需要重啟的regionserver上面的所有 region遷移到其它的服務(wù)器,然后重啟,最后又會將之前的region遷移回來,但我們修改一個配置時,可以用這種方式重啟每一臺機子,對于hbase regionserver重啟,不要直接kill進程,這樣會造成在zookeeper.session.timeout這個時間長的中斷,也不要通過 bin/hbase-daemon.sh stop regionserver去重啟,如果運氣不太好,-ROOT-或者.META.表在上面的話,所有的請求會全部失敗

    1.8 regionserver關(guān)閉下線

    bin/graceful_stop.sh nodename

    進行操作前先將balancer關(guān)閉,操作完成后再打開balancer

    和上面一樣,系統(tǒng)會在關(guān)閉之前遷移所有region,然后stop進程。

    1.9 flush表

    所有memstore刷新到hdfs,通常如果發(fā)現(xiàn)regionserver的內(nèi)存使用過大,造成該機的 regionserver很多線程block,可以執(zhí)行一下flush操作,這個操作會造成hbase的storefile數(shù)量劇增,應(yīng)盡量避免這個操 作,還有一種情況,在hbase進行遷移的時候,如果選擇拷貝文件方式,可以先停寫入,然后flush所有表,拷貝文件

    1.10 Hbase遷移

    1.10.1 copytable方式

    bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=zookeeper1,zookeeper2,zookeeper3:/hbase 'testtable'

    這個操作需要添加hbase目錄里的conf/mapred-site.xml,可以復(fù)制hadoop的過來。

    1.10.2 Export/Import

    bin/hbase org.apache.hadoop.hbase.mapreduce.Export testtable /user/testtable [versions] [starttime] [stoptime]

    bin/hbase org.apache.hadoop.hbase.mapreduce.Import testtable /user/testtable

    1.10.3 直接拷貝hdfs對應(yīng)的文件

    首先拷貝hdfs文件,如bin/hadoop distcp hdfs://srcnamenode:9000/hbase/testtable/ hdfs://distnamenode:9000/hbase/testtable/

    然后在目的hbase上執(zhí)行bin/hbase org.jruby.Main bin/add_table.rb /hbase/testtable

    生成meta信息后,重啟hbase

    2 Hadoop日常運維

    2.1 監(jiān)控Hadoop運行狀況

  • nameNode、ResourseManager內(nèi)存(namenode要有足夠內(nèi)存)

  • DataNode和NodeManager運行狀態(tài)

  • 磁盤使用情況

  • 服務(wù)器負(fù)載狀態(tài)
  • 2.2 檢查HDFS文件健康狀況

    命令:hadoop fsck

    2.3 開啟垃圾箱(trash)功能

    trash功能它默認(rèn)是關(guān)閉的,開啟后,被你刪除的數(shù)據(jù)將會mv到操作用戶目錄的".Trash"文件夾,可以配置超過多長時間,系統(tǒng)自動刪除過期數(shù)據(jù)。這樣一來,當(dāng)操作失誤的時候,可以把數(shù)據(jù)mv回來

    轉(zhuǎn)載于:https://blog.51cto.com/ybs000/2121364

    總結(jié)

    以上是生活随笔為你收集整理的Hbase日常运维的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。