chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

企業(yè)級HDFS高可用與YARN資源調(diào)度方案

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2025-09-08 17:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大數(shù)據(jù)平臺運(yùn)維實(shí)戰(zhàn):從零構(gòu)建企業(yè)級 HDFS 高可用與 YARN 資源調(diào)度體系

引言:為什么你的大數(shù)據(jù)平臺總是在關(guān)鍵時刻掉鏈子?

凌晨3點(diǎn),你被電話驚醒。值班同事焦急地說:"HDFS NameNode 掛了,整個數(shù)據(jù)平臺癱瘓,業(yè)務(wù)方的實(shí)時報(bào)表全部中斷!"你匆忙打開電腦,看著滿屏的告警信息,心里暗想:如果當(dāng)初做好了高可用配置,現(xiàn)在就不會這么被動了。

這樣的場景,是不是很熟悉?

作為一名在大數(shù)據(jù)運(yùn)維領(lǐng)域摸爬滾打8年的老兵,我見過太多因?yàn)榛A(chǔ)架構(gòu)不夠健壯而導(dǎo)致的生產(chǎn)事故。今天,我想和大家分享一套經(jīng)過實(shí)戰(zhàn)檢驗(yàn)的 HDFS 高可用與 YARN 資源調(diào)度方案,這套方案幫助我們團(tuán)隊(duì)將平臺可用性從 99.5% 提升到 99.99%,年故障時間從 43 小時降低到不足 1 小時。

一、HDFS 高可用架構(gòu)設(shè)計(jì):讓你的數(shù)據(jù)永不丟失

1.1 傳統(tǒng) HDFS 架構(gòu)的致命缺陷

在深入高可用方案之前,我們先來看看傳統(tǒng) HDFS 架構(gòu)為什么會成為整個大數(shù)據(jù)平臺的阿喀琉斯之踵。

傳統(tǒng) HDFS 采用主從架構(gòu),包含一個 NameNode(NN)和多個 DataNode(DN)。NameNode 負(fù)責(zé)管理文件系統(tǒng)的命名空間和客戶端對文件的訪問,DataNode 負(fù)責(zé)實(shí)際數(shù)據(jù)的存儲。這種設(shè)計(jì)簡單優(yōu)雅,但存在一個致命問題:NameNode 是單點(diǎn)故障。

我曾經(jīng)歷過一次慘痛的教訓(xùn):某個周五下午,NameNode 服務(wù)器因?yàn)閮?nèi)存故障宕機(jī),由于沒有做高可用,整個 HDFS 集群癱瘓。更糟糕的是,NameNode 的元數(shù)據(jù)出現(xiàn)損壞,恢復(fù)過程耗時整整 18 個小時。那個周末,整個運(yùn)維團(tuán)隊(duì)都在公司度過。

1.2 HDFS HA 架構(gòu)全景圖

基于這些血淚教訓(xùn),我們設(shè)計(jì)并實(shí)施了一套完整的 HDFS 高可用方案:

          ┌─────────────────┐
          │  ZooKeeper   │
          │  Cluster   │
          │ (3-5 nodes)  │
          └────────┬────────┘
              │
        ┌────────────┴────────────┐
        │             │
    ┌───────▼────────┐   ┌────────▼───────┐
    │ Active NN   │   │ Standby NN  │
    │ 10.0.1.10   │?─────? 10.0.1.11   │
    └───────┬────────┘   └────────────────┘
        │             │
        │   JournalNode    │
        │    Cluster     │
        │  ┌──────────────┐   │
        └────? 10.0.1.20  ?─────┘
          │ 10.0.1.21  │
          │ 10.0.1.22  │
          └──────────────┘
              │
          ┌────────▼────────┐
          │  DataNodes   │
          │  (N nodes)   │
          └─────────────────┘

這個架構(gòu)的核心設(shè)計(jì)思想包括:

1.雙 NameNode 熱備:Active NN 處理所有客戶端請求,Standby NN 實(shí)時同步元數(shù)據(jù)

2.JournalNode 集群:確保元數(shù)據(jù)的一致性和持久化

3.ZooKeeper 集群:負(fù)責(zé)故障檢測和自動切換

4.ZKFC 進(jìn)程:監(jiān)控 NN 健康狀態(tài),觸發(fā)主備切換

1.3 高可用配置實(shí)戰(zhàn)

讓我們從實(shí)際配置開始,一步步構(gòu)建這個高可用系統(tǒng)。

Step 1: 配置 hdfs-site.xml


  
 
   dfs.nameservices
   mycluster
 
 
  
 
   dfs.ha.namenodes.mycluster
   nn1,nn2
 
 
  
 
   dfs.namenode.rpc-address.mycluster.nn1
   node1:8020
 
 
  
 
   dfs.namenode.rpc-address.mycluster.nn2
   node2:8020
 
 
  
 
   dfs.namenode.shared.edits.dir
   qjournal://node1:8485;node2:8485;node3:8485/mycluster
 
 
  
 
   dfs.client.failover.proxy.provider.mycluster
   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
 
 
  
 
   dfs.ha.fencing.methods
   
      sshfence
      shell(/bin/true)
   
 
 
  
 
   dfs.ha.fencing.ssh.private-key-files
   /home/hadoop/.ssh/id_rsa
 
 
  
 
   dfs.ha.automatic-failover.enabled
   true
 

Step 2: 配置 core-site.xml


  
 
   fs.defaultFS
   hdfs://mycluster
 
 
  
 
   ha.zookeeper.quorum
   node1:2181,node2:2181,node3:2181
 
 
  
 
   hadoop.tmp.dir
   /data/hadoop/tmp
 

1.4 故障切換測試與調(diào)優(yōu)

配置完成后,最關(guān)鍵的是驗(yàn)證故障切換是否真的可靠。我總結(jié)了一套完整的測試方案:

測試場景 1:正常切換

# 查看當(dāng)前 Active NN
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 手動切換
hdfs haadmin -transitionToStandby nn1
hdfs haadmin -transitionToActive nn2

# 驗(yàn)證切換后的狀態(tài)
hdfs haadmin -getServiceState nn1 # 應(yīng)該顯示 standby
hdfs haadmin -getServiceState nn2 # 應(yīng)該顯示 active

測試場景 2:模擬故障

# 在 Active NN 節(jié)點(diǎn)上執(zhí)行
# 方法1:直接 kill 進(jìn)程
jps | grep NameNode | awk'{print $1}'| xargskill-9

# 方法2:模擬網(wǎng)絡(luò)故障
iptables -A INPUT -p tcp --dport 8020 -j DROP
iptables -A OUTPUT -p tcp --sport 8020 -j DROP

# 監(jiān)控自動切換日志
tail-f /var/log/hadoop/hdfs/hadoop-hdfs-zkfc-*.log

關(guān)鍵調(diào)優(yōu)參數(shù)

經(jīng)過大量生產(chǎn)實(shí)踐,我總結(jié)出以下關(guān)鍵調(diào)優(yōu)參數(shù):

 

 dfs.ha.zkfc.health-monitor.rpc-timeout.ms
 5000 


 

 dfs.qjournal.write-txns.timeout.ms
 60000 


 

 dfs.client.failover.max.attempts
 15 



 dfs.client.failover.sleep.base.millis
 500 

二、YARN 資源調(diào)度優(yōu)化:讓每一份算力都物盡其用

2.1 YARN 資源調(diào)度的核心挑戰(zhàn)

在管理千節(jié)點(diǎn)規(guī)模的 Hadoop 集群時,我發(fā)現(xiàn)資源調(diào)度是最容易被忽視,但又最影響用戶體驗(yàn)的環(huán)節(jié)。常見的問題包括:

?資源利用率低:集群整體 CPU 使用率不足 40%,但用戶卻抱怨資源不夠

?任務(wù)等待時間長:小任務(wù)被大任務(wù)阻塞,簡單的查詢要等待數(shù)小時

?資源分配不均:某些隊(duì)列資源閑置,某些隊(duì)列排隊(duì)嚴(yán)重

?優(yōu)先級管理混亂:緊急任務(wù)無法及時獲取資源

2.2 三大調(diào)度器深度對比

YARN 提供了三種調(diào)度器,每種都有其適用場景:

調(diào)度器 適用場景 優(yōu)勢 劣勢
FIFO Scheduler 測試環(huán)境、單用戶場景 實(shí)現(xiàn)簡單、無額外開銷 資源利用率低、無法多租戶
Capacity Scheduler 多租戶、需要資源隔離 資源保障、彈性共享 配置復(fù)雜、需要預(yù)先規(guī)劃
Fair Scheduler 動態(tài)負(fù)載、公平共享 自動均衡、配置靈活 可能造成資源碎片化

基于我的經(jīng)驗(yàn),90% 的生產(chǎn)環(huán)境應(yīng)該選擇 Capacity Scheduler,因?yàn)樗芴峁┳詈玫馁Y源隔離和保障。

2.3 Capacity Scheduler 最佳實(shí)踐

讓我分享一個真實(shí)的案例:某金融公司的大數(shù)據(jù)平臺,需要支撐實(shí)時風(fēng)控、離線報(bào)表、數(shù)據(jù)挖掘三類業(yè)務(wù)。我們設(shè)計(jì)了如下的隊(duì)列結(jié)構(gòu):

root (100%)
├── production (70%)
│  ├── realtime (30%)   # 實(shí)時風(fēng)控,保障最低資源
│  ├── batch (25%)    # 離線報(bào)表,定時任務(wù)
│  └── adhoc (15%)    # 即席查詢,彈性伸縮
├── development (20%)    # 開發(fā)測試環(huán)境
│  ├── dev-team1 (10%)
│  └── dev-team2 (10%)
└── maintenance (10%)    # 運(yùn)維任務(wù)專用

核心配置文件 capacity-scheduler.xml:


  
 
   yarn.scheduler.capacity.root.queues
   production,development,maintenance
 
 
  
 
   yarn.scheduler.capacity.root.production.capacity
   70
 
 
   yarn.scheduler.capacity.root.production.maximum-capacity
   90 
 
 
   yarn.scheduler.capacity.root.production.queues
   realtime,batch,adhoc
 
 
  
 
   yarn.scheduler.capacity.root.production.realtime.capacity
   30
 
 
   yarn.scheduler.capacity.root.production.realtime.maximum-capacity
   50
 
 
   yarn.scheduler.capacity.root.production.realtime.user-limit-factor
   2 
 
 
   yarn.scheduler.capacity.root.production.realtime.priority
   1000 
 
 
  
 
   yarn.scheduler.capacity.root.production.realtime.disable-preemption
   false
 
 
   yarn.scheduler.capacity.root.production.realtime.intra-queue-preemption.disable
   false
 
 
  
 
   yarn.scheduler.capacity.root.production.realtime.acl_submit_applications
   realtime-group
 
 
   yarn.scheduler.capacity.root.production.realtime.acl_administer_queue
   admin-group
 
 
  
 
   yarn.scheduler.capacity.root.production.batch.maximum-application-lifetime
   86400 
 
 
  
 
   yarn.scheduler.capacity.root.production.adhoc.maximum-applications
   100 
 

2.4 高級調(diào)度策略

1. 基于標(biāo)簽的調(diào)度(Node Labels)

在異構(gòu)集群中,我們可以通過節(jié)點(diǎn)標(biāo)簽實(shí)現(xiàn)更精細(xì)的資源管理:

# 創(chuàng)建節(jié)點(diǎn)標(biāo)簽
yarn rmadmin -addToClusterNodeLabels"GPU,SSD,MEMORY"

# 為節(jié)點(diǎn)打標(biāo)簽
yarn rmadmin -replaceLabelsOnNode"node1=GPU node2=GPU"
yarn rmadmin -replaceLabelsOnNode"node3=SSD node4=SSD"
yarn rmadmin -replaceLabelsOnNode"node5=MEMORY node6=MEMORY"

# 配置隊(duì)列使用特定標(biāo)簽

 yarn.scheduler.capacity.root.production.realtime.accessible-node-labels
 SSD


 yarn.scheduler.capacity.root.production.realtime.accessible-node-labels.SSD.capacity
 100

2. 動態(tài)資源池(Dynamic Resource Pools)

針對業(yè)務(wù)負(fù)載的潮汐效應(yīng),我們實(shí)現(xiàn)了動態(tài)資源池:

#!/usr/bin/env python3
# dynamic_resource_manager.py

importsubprocess
importjson
fromdatetimeimportdatetime

classDynamicResourceManager:
 def__init__(self):
   self.peak_hours = [(8,12), (14,18)] # 業(yè)務(wù)高峰期
   self.off_peak_hours = [(0,6), (22,24)] # 業(yè)務(wù)低谷期
   
 defget_current_load(self):
   """獲取當(dāng)前集群負(fù)載"""
    cmd ="yarn cluster -list"
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
   # 解析輸出,獲取資源使用率
   returnself.parse_cluster_metrics(result.stdout)
 
 defadjust_queue_capacity(self, queue, capacity):
   """動態(tài)調(diào)整隊(duì)列容量"""
    cmd =f"yarn rmadmin -refreshQueues"
   # 先更新配置文件
   self.update_capacity_config(queue, capacity)
   # 刷新隊(duì)列配置
    subprocess.run(cmd, shell=True)
   
 defauto_scale(self):
   """基于時間和負(fù)載的自動伸縮"""
    current_hour = datetime.now().hour
    current_load =self.get_current_load()
   
   ifself.is_peak_hour(current_hour):
     # 高峰期:增加 realtime 隊(duì)列資源
     ifcurrent_load['realtime'] >80:
       self.adjust_queue_capacity('root.production.realtime',50)
       self.adjust_queue_capacity('root.production.batch',15)
   else:
     # 低谷期:增加 batch 隊(duì)列資源
     self.adjust_queue_capacity('root.production.realtime',20)
     self.adjust_queue_capacity('root.production.batch',40)
     
if__name__ =="__main__":
  manager = DynamicResourceManager()
  manager.auto_scale()

三、監(jiān)控與故障診斷:問題發(fā)現(xiàn)比解決更重要

3.1 構(gòu)建全方位監(jiān)控體系

一個完善的監(jiān)控體系應(yīng)該包含以下層次:

┌─────────────────────────────────────┐
│     應(yīng)用層監(jiān)控          │
│  (Job成功率/延遲/資源使用)     │
├─────────────────────────────────────┤
│     服務(wù)層監(jiān)控          │
│  (NN/RM/DN/NM 健康狀態(tài))      │
├─────────────────────────────────────┤
│     系統(tǒng)層監(jiān)控          │
│  (CPU/內(nèi)存/磁盤/網(wǎng)絡(luò))       │
├─────────────────────────────────────┤
│     基礎(chǔ)設(shè)施監(jiān)控         │
│  (機(jī)房/網(wǎng)絡(luò)/電力)         │
└─────────────────────────────────────┘

核心監(jiān)控指標(biāo)與告警閾值:

# prometheus-alerts.yml
groups:
-name:hdfs_alerts
 rules:
  -alert:NameNodeDown
   expr:up{job="namenode"}==0
   for:1m
   labels:
    severity:critical
   annotations:
    summary:"NameNode{{ $labels.instance }}is down"
    
  -alert:HDFSCapacityHigh
   expr:hdfs_cluster_capacity_used_percent>85
   for:5m
   labels:
    severity:warning
   annotations:
    summary:"HDFS capacity usage is{{ $value }}%"
    
  -alert:DataNodeDiskFailure
   expr:hdfs_datanode_failed_volumes>0
   for:1m
   labels:
    severity:warning
   annotations:
    summary:"DataNode{{ $labels.instance }}has{{ $value }}failed volumes"
    
-name:yarn_alerts
 rules:
  -alert:YarnQueueBlocked
   expr:yarn_queue_pending_applications>100
   for:10m
   labels:
    severity:warning
   annotations:
    summary:"Queue{{ $labels.queue }}has{{ $value }}pending applications"
    
  -alert:YarnMemoryPressure
   expr:yarn_cluster_memory_used_percent>90
   for:5m
   labels:
    severity:critical
   annotations:
    summary:"YARN cluster memory usage is{{ $value }}%"

3.2 常見故障處理 Playbook

故障場景 1:NameNode 進(jìn)入安全模式

# 檢查安全模式狀態(tài)
hdfs dfsadmin -safemode get

# 查看具體原因
hdfs dfsadmin -report

# 常見原因及解決方案:
# 1. 數(shù)據(jù)塊不足
hdfs fsck / -blocks -files -locations
# 強(qiáng)制離開安全模式(慎用)
hdfs dfsadmin -safemode leave

# 2. DataNode 未完全啟動
# 等待 DataNode 匯報(bào)完成,通常需要幾分鐘

# 3. 磁盤空間不足
# 清理日志和臨時文件
find /var/log/hadoop -name"*.log.*"-mtime +7 -delete

故障場景 2:YARN 應(yīng)用卡死

# 獲取應(yīng)用列表
yarn application -list

# 查看具體應(yīng)用狀態(tài)
yarn application -status application_1234567890_0001

# 查看應(yīng)用日志
yarn logs -applicationId application_1234567890_0001

# 強(qiáng)制終止應(yīng)用
yarn application -killapplication_1234567890_0001

# 釋放隊(duì)列資源
yarn rmadmin -refreshQueues

3.3 性能調(diào)優(yōu)實(shí)戰(zhàn)

HDFS 性能優(yōu)化:

 

 dfs.client.write.packet.size
 131072 



 dfs.datanode.handler.count
 20 


 

 dfs.datanode.max.transfer.threads
 8192 



 dfs.client.read.shortcircuit
 true 

YARN 性能優(yōu)化:

 

 yarn.nodemanager.resource.memory-mb
 65536 



 yarn.nodemanager.resource.cpu-vcores
 32 


 

 yarn.resourcemanager.scheduler.client.thread-count
 50 



 yarn.resourcemanager.scheduler.class
 org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

四、自動化運(yùn)維工具鏈

4.1 自動化巡檢腳本

#!/bin/bash
# hdfs_health_check.sh

LOG_FILE="/var/log/hdfs_health_check_$(date +%Y%m%d).log"

log_info() {
 echo"[$(date '+%Y-%m-%d %H:%M:%S')] INFO:$1"|tee-a$LOG_FILE
}

log_error() {
 echo"[$(date '+%Y-%m-%d %H:%M:%S')] ERROR:$1"|tee-a$LOG_FILE
}

# 檢查 NameNode 狀態(tài)
check_namenode() {
  log_info"Checking NameNode status..."
 
 fornninnn1 nn2;do
    state=$(hdfs haadmin -getServiceState$nn2>/dev/null)
   if[ $? -eq 0 ];then
      log_info"NameNode$nnis$state"
     if["$state"="active"];then
        ACTIVE_NN=$nn
     fi
   else
      log_error"Failed to get status for NameNode$nn"
      send_alert"NameNode$nnstatus check failed"
   fi
 done
 
 if[ -z"$ACTIVE_NN"];then
    log_error"No active NameNode found!"
    send_alert"Critical: No active NameNode"
   return1
 fi
}

# 檢查 HDFS 容量
check_hdfs_capacity() {
  log_info"Checking HDFS capacity..."
 
  capacity_info=$(hdfs dfsadmin -report | grep -A 1"Configured Capacity")
  used_percent=$(echo"$capacity_info"| grep"DFS Used%"| awk'{print $3}'|tr-d'%')
 
 if[ $(echo"$used_percent> 85"| bc) -eq 1 ];then
    log_error"HDFS usage is critical:${used_percent}%"
    send_alert"HDFS capacity critical:${used_percent}%"
 elif[ $(echo"$used_percent> 70"| bc) -eq 1 ];then
    log_info"HDFS usage warning:${used_percent}%"
 else
    log_info"HDFS usage normal:${used_percent}%"
 fi
}

# 檢查壞塊
check_corrupt_blocks() {
  log_info"Checking for corrupt blocks..."
 
  corrupt_blocks=$(hdfs dfsadmin -report | grep"Blocks with corrupt replicas"| awk'{print $5}')
 
 if["$corrupt_blocks"-gt 0 ];then
    log_error"Found$corrupt_blockscorrupt blocks"
    send_alert"HDFS has$corrupt_blockscorrupt blocks"
   
   # 自動修復(fù)嘗試
    log_info"Attempting to fix corrupt blocks..."
    hdfs fsck / -delete
 else
    log_info"No corrupt blocks found"
 fi
}

# 發(fā)送告警
send_alert() {
 # 這里可以集成企業(yè)微信、釘釘?shù)雀婢? echo"$1"| mail -s"HDFS Alert"ops-team@company.com
}

# 主函數(shù)
main() {
  log_info"Starting HDFS health check..."
 
  check_namenode
  check_hdfs_capacity
  check_corrupt_blocks
 
  log_info"Health check completed"
}

main

4.2 容量規(guī)劃與預(yù)測

基于歷史數(shù)據(jù)的容量預(yù)測模型:

#!/usr/bin/env python3
# capacity_predictor.py

importpandasaspd
importnumpyasnp
fromsklearn.linear_modelimportLinearRegression
fromdatetimeimportdatetime, timedelta
importmatplotlib.pyplotasplt

classHDFSCapacityPredictor:
 def__init__(self):
   self.model = LinearRegression()
   self.history_data = []
   
 defcollect_metrics(self):
   """收集 HDFS 使用率數(shù)據(jù)"""
   # 實(shí)際環(huán)境中從監(jiān)控系統(tǒng)獲取
   # 這里用示例數(shù)據(jù)
   return{
     'timestamp': datetime.now(),
     'used_bytes':self.get_hdfs_used(),
     'total_bytes':self.get_hdfs_total()
    }
 
 deftrain_model(self, days=90):
   """基于歷史數(shù)據(jù)訓(xùn)練預(yù)測模型"""
    df = pd.DataFrame(self.history_data)
    df['days'] = (df['timestamp'] - df['timestamp'].min()).dt.days
   
    X = df[['days']].values
    y = df['used_bytes'].values
   
   self.model.fit(X, y)
   
   # 計(jì)算增長率
    growth_rate =self.model.coef_[0]
    daily_growth_gb = growth_rate / (1024**3)
   
   returndaily_growth_gb
 
 defpredict_capacity_exhaustion(self):
   """預(yù)測容量耗盡時間"""
    current_used =self.get_hdfs_used()
    total_capacity =self.get_hdfs_total()
    daily_growth =self.train_model()
   
    remaining_capacity = total_capacity - current_used
    days_until_full = remaining_capacity / (daily_growth *1024**3)
   
    exhaustion_date = datetime.now() + timedelta(days=days_until_full)
   
   return{
     'days_remaining':int(days_until_full),
     'exhaustion_date': exhaustion_date.strftime('%Y-%m-%d'),
     'daily_growth_gb': daily_growth,
     'recommendation':self.get_recommendation(days_until_full)
    }
 
 defget_recommendation(self, days_remaining):
   """基于剩余天數(shù)給出建議"""
   ifdays_remaining 

五、生產(chǎn)環(huán)境最佳實(shí)踐總結(jié)

5.1 架構(gòu)設(shè)計(jì)原則

1.高可用優(yōu)先:寧可犧牲一些性能,也要保證服務(wù)可用性

2.監(jiān)控先行:沒有監(jiān)控的系統(tǒng)等于裸奔

3.自動化運(yùn)維:能自動化的絕不手工,減少人為錯誤

4.容量冗余:始終保持 30% 以上的資源冗余

5.灰度發(fā)布:任何變更都要先在測試環(huán)境驗(yàn)證

5.2 運(yùn)維 CheckList

日常巡檢清單:

? NameNode 主備狀態(tài)正常

? HDFS 容量使用率 < 80%

? 無壞塊和丟失塊

? DataNode 全部在線

? YARN ResourceManager 狀態(tài)正常

? 隊(duì)列資源使用合理

? 無長時間 pending 的任務(wù)

? 系統(tǒng)日志無異常錯誤

? 最近的備份可用

5.3 故障恢復(fù) RTO/RPO 目標(biāo)

故障類型 RTO(恢復(fù)時間目標(biāo)) RPO(恢復(fù)點(diǎn)目標(biāo)) 實(shí)現(xiàn)方式
NameNode 故障 < 1 分鐘 0 HA 自動切換
DataNode 故障 < 10 分鐘 0 副本自動恢復(fù)
機(jī)架故障 < 30 分鐘 0 機(jī)架感知副本
機(jī)房故障 < 4 小時 < 1 小時 跨機(jī)房容災(zāi)

結(jié)語:運(yùn)維的最高境界是"無為而治"

經(jīng)過這些年的實(shí)踐,我越來越認(rèn)同一個理念:優(yōu)秀的運(yùn)維不是救火隊(duì)長,而是防火專家。當(dāng)你的系統(tǒng)能夠自動處理 90% 的故障,當(dāng)你的監(jiān)控能夠提前預(yù)警潛在問題,當(dāng)你的團(tuán)隊(duì)可以安心休假而不擔(dān)心線上服務(wù),這才是運(yùn)維的最高境界。

這篇文章分享的每一個配置、每一行代碼、每一個架構(gòu)決策,都來自真實(shí)的生產(chǎn)環(huán)境。希望這些經(jīng)驗(yàn)?zāi)軒椭闵僮邚澛?,?gòu)建一個真正穩(wěn)定、高效、易維護(hù)的大數(shù)據(jù)平臺。

記住,技術(shù)永遠(yuǎn)在演進(jìn),但核心的運(yùn)維思想不會變:穩(wěn)定壓倒一切,預(yù)防勝于治療,自動化解放人力

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • HDFS
    +關(guān)注

    關(guān)注

    1

    文章

    32

    瀏覽量

    10093
  • 大數(shù)據(jù)
    +關(guān)注

    關(guān)注

    64

    文章

    9049

    瀏覽量

    143389

原文標(biāo)題:大數(shù)據(jù)平臺運(yùn)維實(shí)戰(zhàn):從零構(gòu)建企業(yè)級 HDFS 高可用與 YARN 資源調(diào)度體系

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    SAS走進(jìn)企業(yè)級存儲應(yīng)用

    SAS走進(jìn)企業(yè)級存儲應(yīng)用串行SCSI(SAS)的出現(xiàn)已經(jīng)有幾年了。2005年,在主要的接口技術(shù)中,由于OEM服務(wù)器制造商和系統(tǒng)集成商開始提供串行SCSI解決方案,企業(yè)級存儲市場將會顯現(xiàn)革命性的進(jìn)展
    發(fā)表于 11-13 21:58

    睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心落戶深圳

    睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心落戶深圳4月26日,睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心在睿訊深圳辦公室亮相。這是繼睿訊KVM行業(yè)首家形象店在華強(qiáng)北賽格廣場成立之后的又一創(chuàng)舉,是睿訊為廣大機(jī)房
    發(fā)表于 05-11 14:07

    睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心落戶深圳

    睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心落戶深圳      4月26日,睿訊企業(yè)級機(jī)房解決方案創(chuàng)新中心在睿訊深圳辦公室
    發(fā)表于 05-14 14:50

    2017年企業(yè)級SaaS服務(wù)發(fā)展趨勢?

    企業(yè)級SaaS服務(wù)經(jīng)過2014年的萌芽,2015年的發(fā)展,2016年的高速增長,越來越多的企業(yè)更加傾向于通過云計(jì)算降低成本并實(shí)現(xiàn)資源優(yōu)化配置。據(jù)不完全統(tǒng)計(jì),截止到2017年,國內(nèi)企業(yè)級
    發(fā)表于 07-17 10:22

    采用nvSRAM確保企業(yè)級SSD故障時電源可靠性

    。企業(yè)級SSD緩存中的任何其它數(shù)據(jù)在電源故障情況下假定為丟失?!盎貙憽蹦J较鄬τ凇皩懲ā蹦J蕉阅艽蠓嵘S機(jī)IOPS性能,因此更受隨機(jī)IOPS驅(qū)動器的青睞?! 榱舜_?!盎貙憽睂?shí)施方案的正常運(yùn)行,
    發(fā)表于 09-26 09:44

    大話企業(yè)級Android開發(fā)

    大話企業(yè)級Android開發(fā)
    發(fā)表于 07-11 19:39

    Linux的yarn介紹

    1.yarn介紹一個分布式運(yùn)算程序的資源調(diào)度系統(tǒng);yarn中有一個ResourceManager負(fù)責(zé)接收資源申請的請求
    發(fā)表于 07-17 08:33

    Flink on YARN(下):常見問題與排查思路

    較多,1/2 節(jié)點(diǎn)上的 CPU 資源接近用滿內(nèi)存資源剩余較多,申請資源中某一維度資源值配置過大也可能造成無法申請到資源;檢查是否有
    發(fā)表于 10-10 14:14

    Flink on YARN(下):常見問題與排查思路

    將推出 Flink on YARN 應(yīng)用解讀系列文章,分為上、下兩篇。上篇分享了基于 FLIP-6 重構(gòu)后的資源調(diào)度模型介紹 Flink on YARN 應(yīng)用啟動全流程,本文將根據(jù)社區(qū)
    發(fā)表于 10-14 15:04

    大話企業(yè)級Android開發(fā)

    大話企業(yè)級Android開發(fā)
    發(fā)表于 03-31 11:37

    企業(yè)級的LInux系統(tǒng)日志管理

    企業(yè)級LInux系統(tǒng)日志管理
    發(fā)表于 05-29 11:33

    Yarn基本結(jié)構(gòu)和運(yùn)行原理解析

    一、Yarn基本結(jié)構(gòu)Hadoop三大核心組件:分布式文件系統(tǒng)HDFS、分布式計(jì)算框架MapReduce,分布式集群資源調(diào)度框架Yarn。
    發(fā)表于 01-05 16:58

    大話企業(yè)級Android開發(fā)

    大話企業(yè)級Android開發(fā)
    發(fā)表于 03-05 11:15

    Hadoop的YARN資源管理系統(tǒng)

    本質(zhì)上是資源管理系統(tǒng)。YARN提供了資源管理和資源調(diào)度等機(jī)制
    的頭像 發(fā)表于 03-15 17:00 ?2920次閱讀
    Hadoop的<b class='flag-5'>YARN</b><b class='flag-5'>資源</b>管理系統(tǒng)

    如何通過YARN設(shè)計(jì)分布式資源動態(tài)調(diào)度協(xié)同分配系統(tǒng)

      Storm on yarn是目前主流的分布式資源調(diào)度框架,但其存在需要人工干預(yù)和無法根據(jù)資源可用性實(shí)時調(diào)整系統(tǒng)
    發(fā)表于 03-09 17:29 ?12次下載
    如何通過<b class='flag-5'>YARN</b>設(shè)計(jì)分布式<b class='flag-5'>資源</b>動態(tài)<b class='flag-5'>調(diào)度</b>協(xié)同分配系統(tǒng)