自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HDFS監(jiān)控背后那些事兒,構(gòu)建Hadoop監(jiān)控共同體

企業(yè)動態(tài) Hadoop
HDFS是Hadoop生態(tài)的一部分,監(jiān)控方案不僅需適用HDFS,其他組件如Yarn、Hbase、Hive等,也需適用。

HDFS監(jiān)控挑戰(zhàn)

  • HDFS是Hadoop生態(tài)的一部分,監(jiān)控方案不僅需適用HDFS,其他組件如Yarn、Hbase、Hive等,也需適用
  • HDFS API提供的指標較多,部分指標沒必要實時采集,但故障時需能快速獲取到
  • Hadoop相關(guān)組件的日志,比較重要,如問題定位、審計等
  • 監(jiān)控方案不僅能滿足監(jiān)控本身,故障定位涉及指標也應(yīng)覆蓋

Hadoop監(jiān)控方案

Hadoop監(jiān)控數(shù)據(jù)采集通過HTTP API,或者JMX。實際中,用到比較多的產(chǎn)品主要有:CDH、Ambari,此外,還有部分工具,如Jmxtrans、HadoopExporter(用于Prometheus)。

CDH為Cloudera公司開源的一款集部署、監(jiān)控、操作等于一體的Hadoop生態(tài)組件管理工具,也提供收費版(比免費版多提供數(shù)據(jù)備份恢復(fù)、故障定位等特性)。CDH提供的HDFS監(jiān)控界面在體驗上是非常優(yōu)秀的,是對HDFS監(jiān)控指標深入發(fā)掘之后的濃縮,比如HDFS容量、讀寫流量及耗時、Datanode磁盤刷新耗時等。

 

圖1 CDH提供的HDFS監(jiān)控界面

Ambari與CDH類似,它是Hortonworks公司(與Cloudera公司已合并)開源。它的擴展性要比較好,另外,它的信息可以從機器、組件、集群等不同維度展現(xiàn),接近運維工程師使用習(xí)慣。

 

圖2 Ambari提供的HDFS監(jiān)控界面

如果使用CDH,或者Ambari進行HDFS監(jiān)控,也存在實際問題:

  • 對應(yīng)的Hadoop及相關(guān)組件版本不能自定義
  • 不能很好的滿足大規(guī)模HDFS集群實際監(jiān)控需求

其他工具,如Jmxtrans目前還不能很好適配Hadoop,因此,實際的監(jiān)控方案選型為:

  • 采集:HadoopExporter,Hadoop HTTP API(說明:HDFS主要調(diào)用http://{domain}:{port}/jmx)
  • 日志:通過ELK來收集、分析
  • 存儲:Prometheus
  • 展現(xiàn):Grafana,HDFS UI,Hue
  • 告警:對接京東云告警系統(tǒng)

HDFS監(jiān)控指標

主要指標概覽

表1 HDFS主要監(jiān)控指標概覽

 

黑盒監(jiān)控指標

基本功能

文件整個生命周期中,是否存在功能異常,主要監(jiān)控創(chuàng)建、查看、修改、刪除動作。

  • 查看時,需校對內(nèi)容,有一種方式,可以在文件中寫入時間戳,查看時校對時間戳,這樣,可以根據(jù)時間差來判斷是否寫超時
  • 切記保證生命周期完整,否則,大量監(jiān)控產(chǎn)生的臨時文件可能導(dǎo)致HDFS集群垮掉

白盒監(jiān)控指標

錯誤

Block丟失數(shù)量

采集項:MissingBlocks

如果出現(xiàn)塊丟失,則意味著文件已經(jīng)損壞,所以需要在塊丟失前,提前預(yù)判可能出現(xiàn)Block丟失風(fēng)險(通過監(jiān)控UnderReplicatedBlocks來判斷)。

不可用數(shù)據(jù)節(jié)點占比

采集項:

 

在BlockPlacementPolicyDefault.java中的isGoodTarget定義了選取Datanode節(jié)點策略,其中有兩項是“節(jié)點是否在下線”、“是否有足夠存儲空間”,如果不可用數(shù)量過多,則可能導(dǎo)致選擇不到健康的Datanode,因此,必須保證一定數(shù)量的健康Datanode。

 

圖4 選取可用Datanode時部分判斷條件

錯誤日志關(guān)鍵字監(jiān)控

部分常見錯誤監(jiān)控(主要監(jiān)控Exception/ERROR),對應(yīng)關(guān)鍵字:

IOException、NoRouteToHostException、SafeModeException、UnknownHostException。

未復(fù)制Block數(shù)

采集項:UnderReplicatedBlocks

UnderReplicatedBlocks在數(shù)據(jù)節(jié)點下線、數(shù)據(jù)節(jié)點故障等均會產(chǎn)生大量正在同步的塊數(shù)。

FGC監(jiān)控

采集項:FGC

讀寫成功率

采集項:

monitor_write.status/monitor_read.status

根據(jù)Block實際讀寫流量匯聚計算,是對外SLA指標的重要依據(jù)。

數(shù)據(jù)盤故障

采集項:NumFailedVolumes

如果一個集群有1000臺主機,每臺主機是12塊盤(一般存儲型機器標準配置),那么這將會是1萬2000塊數(shù)據(jù)盤,按照機械盤平均季度故障率1.65%(數(shù)據(jù)存儲服務(wù)商Backblaze統(tǒng)計)計算,平均每個月故障7塊盤。若集群規(guī)模再擴大,那么運維工程師將耗費很大精力在故障盤處理與服務(wù)恢復(fù)上。很顯然,一套自動化的數(shù)據(jù)盤故障檢測、自動報修、服務(wù)自動恢復(fù)機制成為剛需。

除故障盤監(jiān)控外,故障數(shù)據(jù)盤要有全局性解決方案。在實踐中,以場景為維度,通過自助化的方式來實現(xiàn)對此問題處理。

 

圖5 基于場景實現(xiàn)的Jenkins自助化任務(wù)

流量

Block讀、寫次數(shù)

采集項:

 

采集Datanode數(shù)據(jù)進行匯聚計算。

網(wǎng)絡(luò)進出流量

采集項:

  1. node_network_receive_bytes_total/ node_network_transmit_bytes_total 

沒有直接可以使用的現(xiàn)成數(shù)據(jù),需要通過ReceivedBytes(接收字節(jié)總量)、SentBytes(發(fā)送字節(jié)總量)來計算。

磁盤I/O

采集項:node_disk_written_bytes_total/ node_disk_read_bytes_total

延遲

RPC處理平均時間

采集項:RpcQueueTimeAvgTime

采集RpcQueueTimeAvgTime(RPC處理平均時間)、SyncsAvgTime(Journalnode同步耗時)。

慢節(jié)點數(shù)量

采集項:SlowPeerReports

慢節(jié)點主要特征是,落到該節(jié)點上的讀、寫較平均值差距較大,但給他足夠時間,仍然能返回正確結(jié)果。通常導(dǎo)致慢節(jié)點出現(xiàn)的原因除機器硬件、網(wǎng)絡(luò)外,對應(yīng)節(jié)點上的負載較大是另一個主要原因。實際監(jiān)控中,除監(jiān)控節(jié)點上的讀寫耗時外,節(jié)點上的負載也需要重點監(jiān)控。

根據(jù)實際需要,可以靈活調(diào)整Datanode匯報時間,或者開啟“陳舊節(jié)點”(Stale Node)檢測,以便Namenode準確識別故障實例。涉及部分配置項:

  • dfs.namenode.heartbeat.recheck-interval
  • dfs.heartbeat.interval
  • dfs.namenode.avoid.read.stale.datanode
  • dfs.namenode.avoid.write.stale.datanode
  • dfs.namenode.stale.datanode.interval

容量

集群總空間、空間使用率

采集項:PercentUsed

HDFS UI花費了很大篇幅來展現(xiàn)存儲空間相關(guān)指標,足以說明它的重要性。

空間使用率計算包含了處于“下線中”節(jié)點空間,這是一個陷阱。如果有節(jié)點處于下線狀態(tài),但它們代表的空間仍計算在總空間,如果下線節(jié)點過多,存在這樣“怪象”:集群剩余空間很多,但已無空間可寫。

此外,在Datanode空間規(guī)劃時,要預(yù)留一部分空間。HDFS預(yù)留空間有可能是其他程序使用,也有可能是文件刪除后,但一直被引用,如果“Non DFS Used”一直增大,則需要追查具體原因并優(yōu)化,可以通過如下參數(shù)來設(shè)置預(yù)留空間:

  • dfs.datanode.du.reserved.calculator
  • dfs.datanode.du.reserved
  • dfs.datanode.du.reserved.pct

作為HDFS運維開發(fā)人員,需清楚此公式:Configured Capacity = Total Disk Space - Reserved Space = Remaining Space + DFS Used + Non DFS Used。

Namenode堆內(nèi)存使用率

采集項:

  1. HeapMemoryUsage.used/HeapMemoryUsage.committed 

如果將此指標作為HDFS核心指標,也是不為過的。元數(shù)據(jù)和Block映射關(guān)系占據(jù)了Namenode大部分堆內(nèi)存,這也是HDFS不適合存儲大量小文件的原因之一。堆內(nèi)存使用過大,可能會出現(xiàn)Namenode啟動慢,潛在FGC風(fēng)險,因此,堆內(nèi)存使用情況需重點監(jiān)控。

實際中,堆內(nèi)存使用率增加,不可避免,給出有效的幾個方案:

  • 調(diào)整堆內(nèi)存分配
  • 建立文件生命周期管理機制,及時清理部分無用文件
  • 小文件合并
  • 使用HDFS Federation橫向擴展

盡管這些措施可以在很長時間內(nèi),有效降低風(fēng)險,但提前規(guī)劃好集群也是很有必要。

數(shù)據(jù)均衡度

采集項:

 

HDFS而言,數(shù)據(jù)存儲均衡度,一定程度上決定了它的安全性。實際中,根據(jù)各存儲實例的空間使用率,來計算這組數(shù)據(jù)的標準差,用以反饋各實例之間的數(shù)據(jù)均衡程度。數(shù)據(jù)較大情況下,如果進行數(shù)據(jù)均衡則會比較耗時,盡管通過調(diào)整并發(fā)度、速度也很難快速的完成數(shù)據(jù)均衡。針對這種情況,可以嘗試優(yōu)先下線空間已耗盡的實例,之后再擴容的方式來實現(xiàn)均衡的目的。還有一點需注意,在3.0版本之前,數(shù)據(jù)均衡只能是節(jié)點之間的均衡,不能實現(xiàn)節(jié)點內(nèi)部不同數(shù)據(jù)盤的均衡。

RPC請求隊列的長度

采集項:CallQueueLength(RPC請求隊列長度)。

文件數(shù)量

采集項:FilesTotal

與堆內(nèi)存使用率配合使用。每個文件系統(tǒng)對象(包括文件、目錄、Block數(shù)量)至少占有150字節(jié)堆內(nèi)存,根據(jù)此,可以粗略預(yù)估出一個Namenode可以保存多少文件。根據(jù)文件與塊數(shù)量之間的關(guān)系,也可以對塊大小做一定優(yōu)化。

下線實例數(shù)

采集項:NumDecommissioningDataNodes

HDFS集群規(guī)模較大時,實時掌握健康實例說,定期修復(fù)故障節(jié)點并及時上線,可以為公司節(jié)省一定成本。

其他

除上述主要指標外,服務(wù)器、進程JVM、依賴服務(wù)(Zookeeper、DNS)等通用監(jiān)控策略也需添加。

HDFS監(jiān)控落地

Grafana儀表盤展現(xiàn):主要用于服務(wù)巡檢、故障定位(說明:Grafana官方提供的HDFS監(jiān)控模板,數(shù)據(jù)指標相對較少)

 

圖6 HDFS部分集群Grafana儀表盤

ELK-Hadoop:主要用于全局日志檢索,以及錯誤日志關(guān)鍵字監(jiān)控

 

圖7 ES中搜索HDFS集群日志

 

圖8 日志服務(wù)搜索HDFS集群日志

Hue、HDFS UI:主要用于HDFS問題排查與日常維護

HDFS案例

案例1

DNS產(chǎn)生臟數(shù)據(jù),導(dǎo)致Namenode HA故障

發(fā)現(xiàn)方式:功能監(jiān)控、SLA指標異常

故障原因:DNS服務(wù)器產(chǎn)生臟數(shù)據(jù),致使Namenode主機名出錯,在HA切換時,因找到錯誤主機而失敗

優(yōu)化建議:DNS作為最基礎(chǔ)服務(wù),務(wù)必保證其數(shù)據(jù)正確與穩(wěn)定,在一定規(guī)模情況下,切忌使用修改/etc/hosts方式來解決主機名問題,如果沒有高可用的內(nèi)部DNS服務(wù),建議使用DNSMasq來搭建一套DNS服務(wù)器

案例2

機架分組不合理,導(dǎo)致HDFS無法寫入

發(fā)現(xiàn)方式:功能監(jiān)控寫異常偶發(fā)性告警

故障原因:HDFS開啟機架感知,不同分組機器資源分配不合理,部分分組存儲資源耗盡,在選擇Datanode時,找不到可用節(jié)點

優(yōu)化建議:合理分配各機架上的實例數(shù)量,并分組進行監(jiān)控。在規(guī)模較小情況下,可用考慮關(guān)閉機架感知功能

附:

HDFS監(jiān)控自定義任務(wù):

https://github.com/cloud-op/monitor

[[265257]]

作者:李子樹

京東云應(yīng)用研發(fā)部 

Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計成適合運行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。在大數(shù)據(jù)生態(tài)圈中,HDFS是最重要的底層分布式文件系統(tǒng),它的穩(wěn)定性關(guān)乎整個生態(tài)系統(tǒng)的健康。本文介紹了HDFS相關(guān)的重要監(jiān)控指標,分享指標背后的思考。

【本文為51CTO專欄作者“京東云”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號JD-jcloud獲取授權(quán)】 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2010-05-24 19:05:33

SNMP管理對象

2010-05-24 18:46:04

SNMP應(yīng)用實體

2018-07-16 14:54:49

海信

2020-02-12 10:45:04

紫光云

2018-09-27 13:20:59

共同體人工智能量子計算

2009-12-02 16:13:55

2017-05-09 17:33:24

2020-11-23 16:31:27

信息安全數(shù)據(jù)技術(shù)

2010-05-24 10:51:55

十連跳利益共同體

2017-04-17 18:35:21

華為

2019-02-20 10:22:20

監(jiān)控HDFSHadoop

2018-09-21 09:25:37

浦發(fā)銀行科技合作共同體金融云服務(wù)

2023-05-29 10:10:06

2013-08-28 17:35:35

監(jiān)控故障告警雅虎

2017-03-06 13:35:29

華為

2020-11-09 13:12:18

數(shù)字化微軟合作
點贊
收藏

51CTO技術(shù)棧公眾號