日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


DataNode在運行過程中,為了計算DN的capacity使用量,實現(xiàn)數(shù)據(jù)存儲的動態(tài)均衡,DN會對已配置的數(shù)據(jù)存儲路徑(dfs.datanode.data.dir)進行du -sk操作,以此獲得capacity使用量匯報給NN中,然后NN就知道哪些DN有空間能被寫數(shù)據(jù)進去,哪些是空間不足的。

1. HDFS對底層的磁盤存儲如何選擇的?

 一個HDFS集群,會有很多個datanode節(jié)點,每個datanode節(jié)點會掛載很多塊磁盤。HDFS在存儲數(shù)據(jù)時如何動態(tài)負載均衡最優(yōu)化地往每個datanode,每個磁盤上存儲數(shù)據(jù)呢?

 其實沒啥,DataNode在運行過程中,為了計算DN的capacity使用量,實現(xiàn)數(shù)據(jù)存儲的動態(tài)均衡,DN會對已配置的數(shù)據(jù)存儲路徑(dfs.datanode.data.dir)進行du -sk操作,以此獲得capacity使用量匯報給NN中,然后NN就知道哪些DN有空間能被寫數(shù)據(jù)進去,哪些是空間不足的。

圖片

為了保證數(shù)據(jù)使用量的近實時性,目前DN是以默認10分鐘的間隔時間執(zhí)行一次。假設(shè)按照一個DN節(jié)點12個數(shù)據(jù)目錄對應(yīng)12塊盤的情況,就會有12個du操作在每個10分鐘內(nèi)都會執(zhí)行一次。在datanode存儲的數(shù)據(jù)使用率比較高的時候,會十分消耗性能。直接引發(fā)阻塞io,系統(tǒng)load直線增高。

這種問題在大規(guī)模的集群中是很常見的,下面是針對線上(hadoop2.6版本的)簡易零時的優(yōu)化手段。說明:此問題僅存在于低于hadoop2.8版本,高于此版本已經(jīng)修復(fù)。

https://issues.apache.org/jira/browse/HADOOP-9884

如果碰到這種情況,升級不了集群版本,那么我們還有其他奇技淫巧嗎?

2.通過修改HDFS代碼實現(xiàn)優(yōu)化

先回顧一下du,df的使用

du原理簡述:

du命令全程disk usage,它的統(tǒng)計原理在于將目標路徑下的當前沒有被刪除的文件進行大小累加,然后得出總使用量。這種計算方式在文件數(shù)量少時往往不會表現(xiàn)出什么問題。但是當目標路徑目錄多,文件多的時候,du會表現(xiàn)出明顯的時間執(zhí)行耗時。

df 原理簡述:

df命令統(tǒng)計值通過文件系統(tǒng)獲取的。df命令的弊端是它不能按照具體目錄進行使用量的統(tǒng)計。df是按照所在磁盤級別進行統(tǒng)計的。換句話說,用df命令在屬于同一塊物理盤的子路徑下執(zhí)行df命令,獲取的值會是完全一致的。比較遺憾,這種情況將無法支持DataNode多block pool共用一塊盤的情況。

處理方式:使用 df 命令替換 du

捕獲到datanode執(zhí)行過程中調(diào)用的 du -sk 命令,替換為df -k 。

實現(xiàn)腳本如下:

##將原始的 du指令更換名稱

mv /usr/bin/du /usr/bin/du_bak
vim /usr/bin/du
 
#!/bin/sh
if [[ $2 == */current/BP-* ]] && [ $1 == -sk ]
then
    used=`df -k $2 | grep -vE 'Used' | awk '{print $3}'`
    echo -e "$usedt$2"
else
    echo -e "$(du_bak $@)"
fi

chmod +x /usr/bin/du

3.批量部署的執(zhí)行環(huán)境

跳板機(10.90.72.195)已經(jīng)部署好ansible環(huán)境,配置主機名,執(zhí)行ansible-playbook腳本即可。

執(zhí)行路徑:/home/tool/updata_datanodes_du
需要修改的配置文件:/home/tool/updata_datanodes_du/datanodes
執(zhí)行腳本:./run.sh

updata_du.yml

---
- hosts: all_datanodes
remote_user: root
gather_facts: F # 跳過gather_facts環(huán)節(jié)
serial: 70 #開啟的并發(fā)數(shù)
tasks:
- name: "檢查主機du是否已經(jīng)被部署過"
stat:
path: "/usr/bin/du_bak"
register: file_stat
- name: "同步du腳本文件到目標主機"
copy: # 使用復(fù)制模塊,進行文件分發(fā),從本地主機分發(fā)到遠程主機
src: '{{ item.src }}' # 源文件,變量定義多個源文件
dest: "/tmp/" # 文件復(fù)制到目標主機的目錄
owner: root
group: root
mode: 0777
with_items: # 本地源文件列表
- { src: '/home/tool/updata_datanodes_du/scp_files/du' }
when: not file_stat.stat.exists
- name: "檢查du文件是否同步成功"
stat:
path: "/tmp/du"
register: tmp_du_stat
- name: "備份du文件"
command: mv /usr/bin/du /usr/bin/du_bak
when: tmp_du_stat.stat.exists
- name: "更新為新的du腳本文件"
command: mv /tmp/du /usr/bin/du
when: tmp_du_stat.stat.exists

分享到:
標簽:HDFS
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定