成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解密HDFS如何判斷磁盤存儲大小,存儲動態負載均衡的?

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

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

 一個HDFS集群,會有很多個datanode節點,每個datanode節點會掛載很多塊磁盤。HDFS在存儲數據時如何動態負載均衡最優化地往每個datanode,每個磁盤上存儲數據呢?

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

圖片

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

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

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

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

2.通過修改HDFS代碼實現優化

先回顧一下du,df的使用

du原理簡述:

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

df 原理簡述:

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

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

捕獲到datanode執行過程中調用的 du -sk 命令,替換為df -k 。

實現腳本如下:

##將原始的 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 "$used\t$2"
else
    echo -e "$(du_bak $@)"
fi

chmod +x /usr/bin/du

3.批量部署的執行環境

跳板機(10.90.72.195)已經部署好ansible環境,配置主機名,執行ansible-playbook腳本即可。

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

updata_du.yml

---
- hosts: all_datanodes
remote_user: root
gather_facts: F # 跳過gather_facts環節
serial: 70 #開啟的并發數
tasks:
- name: "檢查主機du是否已經被部署過"
stat:
path: "/usr/bin/du_bak"
register: file_stat
- name: "同步du腳本文件到目標主機"
copy: # 使用復制模塊,進行文件分發,從本地主機分發到遠程主機
src: '{{ item.src }}' # 源文件,變量定義多個源文件
dest: "/tmp/" # 文件復制到目標主機的目錄
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

責任編輯:武曉燕 來源: 滌生大數據
相關推薦

2023-10-23 06:47:37

Redis磁盤存儲

2017-04-17 13:24:43

數據庫內存數據庫存儲

2011-12-12 10:02:20

虛擬化本地存儲SANsymphony

2018-10-31 09:07:56

磁帶磁盤存儲

2013-01-21 13:38:27

IBMdW

2009-01-11 22:38:37

SSD固態盤綠色

2017-11-08 08:31:57

NAS存儲移動硬盤

2010-03-25 11:09:07

Hyper-V磁盤存儲虛擬化Hyper-V

2022-05-06 09:21:57

工作負載SPDK線程

2010-05-18 20:05:43

富士通磁盤存儲

2018-08-28 15:10:16

數據庫數據存儲Hadoop

2023-03-30 13:32:51

負載均衡器HDFS

2019-05-16 14:28:48

硬盤存儲設備

2018-12-03 08:31:40

負載均衡解密Web 服務器

2018-12-03 13:50:03

流量網絡負載均衡

2017-08-14 09:05:50

SIOC存儲負載

2023-11-22 08:35:34

存儲引擎bitcask

2024-05-31 13:29:47

2015-04-02 12:42:26

HDFS分層存儲高效

2017-05-22 14:58:01

負載存儲性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品无人区卡一卡二卡三 | 一区二区不卡高清 | 丁香久久| 国产黑丝av | 精品一区在线免费观看 | 在线免费看黄 | 99久久婷婷国产精品综合 | 国产日韩欧美一区 | 免费在线看黄视频 | 久久精品aaa| 日本在线中文 | 日韩一区不卡 | 精品视频一二区 | 操网站 | 成人h动漫精品一区二区器材 | 美女一级黄 | 亚洲人成在线播放 | 婷婷综合久久 | 亚洲欧美日韩精品久久亚洲区 | 午夜在线观看免费 | 99久久精品国产麻豆演员表 | 国产亚洲一区二区三区 | 91社影院在线观看 | 福利视频一区二区三区 | 国产精品视屏 | 激情国产| 国产日韩视频在线 | 国产欧美一区二区三区久久 | 中文字幕一级毛片视频 | 久久久91精品国产一区二区三区 | 精品国产成人 | 九久久 | 欧美久久综合 | 黄色香蕉视频在线观看 | 北条麻妃国产九九九精品小说 | 亚洲一区中文字幕 | 黄色国产视频 | 午夜视频在线观看网址 | 日韩中文字幕一区二区 | 成人视屏在线观看 | 精品国产一区二区三区性色 |