HDFS中DataNode磁盤如何管理

這篇文章將為大家詳細講解有關HDFS中DataNode磁盤如何管理,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

為光明等地區(qū)用戶提供了全套網頁設計制作服務,及光明網站建設行業(yè)解決方案。主營業(yè)務為網站設計、成都網站設計、光明網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

在單一DataNode管理多個磁盤的情況下,執(zhí)行普通寫操作時的每個磁盤用量比較平均。但是,添加或者更換磁盤將會導致DataNode磁盤用量嚴重不均衡,傳統(tǒng)的HDFS均衡器關注點是DataNode之間(inter-)而不是intra-,但是Hadoop 3.0及以上版本中,新的HDFS Intra-DataNode磁盤平衡器可以很好得解決上述問題。

HDFS現(xiàn)在包括(在CDH 5.8.2及更高版本中提供)全面的存儲容量管理方法,用于跨節(jié)點移動數(shù)據(jù)。熟悉Hadoop簡單配置的同學應該都知道hdfs-site.xml,在HDFS中,DataNode將數(shù)據(jù)塊擴展到本地文件系統(tǒng)目錄,可以使用hdfs-site.xml中的dfs.datanode.data.dir指定。在一個典型的安裝過程中,每個目錄(在HDFS術語中稱作卷)位于不同的設備上(例如,在單獨的HDD和SSD上)。

當我們將新塊寫入HDFS時,DataNode使用卷選擇策略為塊選擇磁盤。目前支持兩種策略類型:輪詢(round-robin)和可用空間(available space)(HDFS-1804)。

HDFS中DataNode磁盤如何管理

簡而言之,如上圖所示,輪詢策略在可用磁盤上均勻分配新塊,而可用空間策略優(yōu)先將數(shù)據(jù)寫入具有最多可用空間(按百分比)的磁盤。

默認情況下,DataNode使用基于輪詢的策略來編寫新塊。但是,在長時間運行的集群中,由于HDFS中的大量文件刪除或通過磁盤熱交換功能添加新的DataNode磁盤等事件,DataNode仍然可能創(chuàng)建了顯著不平衡的卷。即使使用基于可用空間的卷選擇策略,卷不平衡現(xiàn)象仍然會導致磁盤I/O效率降低:例如,每個新的寫入都轉到新添加的空磁盤而其他磁盤空閑,這會給新磁盤造成瓶頸。

Apache Hadoop社區(qū)開發(fā)了服務器脫機腳本以緩解數(shù)據(jù)不平衡問題。但是,由于在HDFS代碼庫之內,這些腳本要求DataNode在磁盤間移動數(shù)據(jù)前處于脫機狀態(tài)。因此,HDFS-1312引入了在線磁盤平衡器,旨在根據(jù)各種指標重新平衡正在運行的DataNode上的卷。與HDFS Balancer類似,HDFS磁盤平衡器作為DataNode中的線程運行,以跨具有相同存儲類型的卷移動塊文件。

磁盤平衡器101

讓我們使用示例逐步探索該功能。首先,確認所有DataNode上的dfs.disk.balancer.enabled配置都設置為true。從CDH 5.8.2開始,用戶可以通過Cloudera Manager中的HDFS安全閥片段指定此配置:

HDFS中DataNode磁盤如何管理

在此示例中,我們將向預加載的HDFS DataNode(/ mnt / disk1)添加新磁盤,并將新磁盤裝入/mnt/disk2。在CDH中,每個HDFS數(shù)據(jù)目錄都在一個單獨的磁盤上,因此用戶可以使用df來顯示磁盤使用情況:

# df -h …. /var/disk1      5.8G  3.6G  1.9G  66% /mnt/disk1 /var/disk2      5.8G   13M  5.5G   1% /mnt/disk2

顯然,是時候讓磁盤再次平衡!傳統(tǒng)的磁盤平衡器任務涉及三個步驟(通過HDFS diskbalancer命令實現(xiàn)):計劃,執(zhí)行和查詢。在第一步中,HDFS客戶端從NameNode讀取有關指定DataNode的必要信息,以生成執(zhí)行計劃:

# hdfs diskbalancer -plan lei-dn-3.example.org 16/08/19 18:04:01 INFO planner.GreedyPlanner: Starting plan for Node : lei-dn-3.example.org:20001 16/08/19 18:04:01 INFO planner.GreedyPlanner: Disk Volume set 03922eb1-63af-4a16-bafe-fde772aee2fa Type : DISK plan completed.Th 16/08/19 18:04:01 INFO planner.GreedyPlanner: Compute Plan for Node : lei-dn-3.example.org:20001 took 5 ms 16/08/19 18:04:01 INFO command.Command: Writing plan to : /system/diskbalancer/2016-Aug-19-18-04-01

從輸出中可以看出,HDFS 磁盤平衡器通過數(shù)據(jù)節(jié)點將磁盤使用信息報告給NameNode,并計算指定DataNode上的數(shù)據(jù)移動步驟。每個步驟都指定要移動數(shù)據(jù)的源卷和目標卷,以及預期要移動的數(shù)據(jù)量。

在撰寫本文時,HDFS支持的唯一規(guī)劃器是GreedyPlanner,它不斷地將數(shù)據(jù)從最常用的設備移動到最少使用的設備,直到所有數(shù)據(jù)均勻分布在所有設備上。用戶還可以在plan命令中指定空間利用率的閾值,如果空間利用率的差異低于閾值,則規(guī)劃人員會認為磁盤是平衡的。(另一個值得注意的選擇是通過在規(guī)劃過程中指定--bandwidth來限制磁盤平衡器任務I / O,以免磁盤平衡器I/O影響前臺工作。)

磁盤平衡器執(zhí)行計劃生成為存儲在HDFS中的JSON文件。默認情況下,計劃文件存儲在/system/diskbalancer目錄中:

# hdfs dfs -ls /system/diskbalancer/2016-Aug-19-18-04-01 Found 2 items -rw-r--r--   3 hdfs supergroup       1955 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.before.json -rw-r--r--   3 hdfs supergroup        908 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json

要在DataNode上執(zhí)行計劃,請運行:

$ hdfs diskbalancer -execute /system/diskbalancer/2016-Aug-17-17-03-56/172.26.10.16.plan.json 16/08/17 17:22:08 INFO command.Command: Executing "execute plan" command

此命令用于將JSON計劃文件提交給DataNode,后者在BlockMoverthread線程的后臺執(zhí)行。

要檢查DataNode上diskbalancer任務的狀態(tài),請使用query命令:

# hdfs diskbalancer -query lei-dn-3:20001 16/08/19 21:08:04 INFO command.Command: Executing "query plan" command. Plan File: /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json Plan ID: ff735b410579b2bbe15352a14bf001396f22344f7ed5fe24481ac133ce6de65fe5d721e223b08a861245be033a82469d2ce943aac84d9a111b542e6c63b40e75 Result: PLAN_DONE

輸出(PLAN_DONE)表示磁盤平衡任務已完成。如果要驗證磁盤平衡器的有效性,可以再次使用df -h查看跨兩個本地磁盤的數(shù)據(jù)分布情況:

# df -h Filesystem      Size  Used Avail Use% Mounted on …. /var/disk1      5.8G  2.1G  3.5G  37% /mnt/disk1 /var/disk2      5.8G  1.6G  4.0G  29% /mnt/disk2

只要輸出確認磁盤平衡器成功地將磁盤空間使用量差異減少到10%以下,那就意味著任務完成了。

關于“HDFS中DataNode磁盤如何管理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

文章名稱:HDFS中DataNode磁盤如何管理
文章地址:http://bm7419.com/article22/geiocc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供響應式網站、網頁設計公司、電子商務、網站營銷、網站維護、網站導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網站優(yōu)化