HDFS 核心原理
HDFS 核心原理
?
HDFS(Hadoop?Distribute?File?System)是一個分布式文件系統(tǒng) 文件系統(tǒng)是操作系統(tǒng)提供的磁盤空間管理服務(wù),只需要我們指定把文件放到哪兒,從哪個路徑讀取文件句可以了,不用關(guān)心文件在磁盤上是如何存放的 當文件所需空間大于本機磁盤空間時,如何處理呢? 一是加磁盤,但加到一定程度就有限制了 二是加機器,用遠程共享目錄的方式提供網(wǎng)絡(luò)化的存儲,這種方式可以理解為分布式文件系統(tǒng)的雛形,可以把不同文件放入不同的機器中,空間不足了可以繼續(xù)加機器,突破了存儲空間的限制 但這個方式有多個問題 (1)單機負載可能極高 例如某個文件是熱門,很多用戶經(jīng)常讀取這個文件,就使此文件所在機器的訪問壓力極高 (2)數(shù)據(jù)不安全 如果某個文件所在的機器出現(xiàn)故障,這個文件就不能訪問了,可靠性很差 (3)文件整理困難 例如想把一些文件的存儲位置進行調(diào)整,就需要看目標機器的空間是否夠用,并且需要自己維護文件位置,如果機器非常多,操作就極為復(fù)雜 HDFS的解決思路 HDFS是個抽象層,底層依賴很多獨立的服務(wù)器,對外提供統(tǒng)一的文件管理功能,對于用戶來講,感覺就想在操作一臺機器,感受不到HDFS下面的多臺服務(wù)器 例如用戶訪問HDFS中的?/a/b/c.mpg?這個文件,HDFS負責從底層相應(yīng)服務(wù)器中讀取,然后返回給用戶,這樣用戶只需和HDFS打交道,不關(guān)心這個文件是怎么存儲的 寫文件示例 例如用戶需要保存一個文件?/a/b/xxx.avi HDFS首先會把這個文件進行分割,例如分為4塊,然后分別放到不同服務(wù)器上 這樣做有個好處,不怕文件太大,并且讀文件的壓力不會全都集中在一臺服務(wù)器上 但如果某臺服務(wù)器壞了,文件就讀不全了 HDFS為保證文件可靠性,會把每個文件塊進行多個備份 塊1?:?A?B?C 塊2?:?A?B?D 塊3?:?B?C?D 塊4?:?A?C?D 這樣文件的可靠性就大大增強了,即使某個服務(wù)器壞了,也可以完整讀取文件 同時還帶來一個很大的好處,就是增加了文件的并發(fā)訪問能力,比如多個用戶讀取這個文件時,都要讀塊1,HDFS可以根據(jù)服務(wù)器的繁忙程度,選擇從哪臺服務(wù)器讀塊1 元數(shù)據(jù)的管理 HDFS中存了哪些文件? 文件被分成了哪些塊? 每個塊被放在哪臺服務(wù)器上? …… 這些都叫做元數(shù)據(jù),這些元數(shù)據(jù)被抽象為一個目錄樹,記錄了這些復(fù)雜的對應(yīng)關(guān)系 這些元數(shù)據(jù)由一個單獨的模塊進行管理,這個模塊叫做?NameNode 存放文件塊的真實服務(wù)器叫做?DataNode 所以用戶訪問HDFS的過程可以理解為: 用戶?->?HDFS?->?NameNode?->?DataNode HDFS?優(yōu)點 (1)容量可以線性擴展 (2)有副本機制,存儲可靠性高,吞吐量增大 (3)有了NameNode后,用戶訪問文件只需指定HDFS上的路徑 posted on 2018-08-12 01:03 micwin 閱讀(...) 評論(...) ?編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/chinanetwind/articles/9461814.html
總結(jié)
- 上一篇: 大型网站系统架构系列:负载均衡详解(一)
- 下一篇: requests模块的入门使用