HDFS學習 基本概念

2021-09-23 06:13:07 字數 1892 閱讀 1433

hdfs是hadoop的核心之一,是乙個分布式檔案系統。所謂分布式檔案系統,就是多個節點通過網路形成乙個整體系統,它和單機檔案系統的最大區別在於,可以儲存乙個遠超單機儲存能力的檔案。

其儲存方式大致就是:把檔案分隔成若干個份,存放在不同的節點上,再由乙個角色(hdfs中是namenode)負責記錄檔案的某乙份存放在哪個節點上。當使用者想要讀取檔案的時候,首先會和namenode互動,獲取檔案資料的具體存放位置,然後在和對應節點進行互動,從而獲取檔案資料。

hdfs在設計之初,就已經假設了很多極端情況,並對這些情況作了很好的處理,因此hdfs的可靠性非常好。下面詳細介紹:

硬體容易發生故障

hdfs假設硬體發生故障是乙個正常事件,hdfs在遇到硬體故障時,會通過備份機制很好的保障資料不丟失,並且還可以對使用者遮蔽故障感知

資料量大

hdfs假設執行在hdfs平台上的應用都是具有很大的資料集。因此hdfs可以很好的協調多個節點來儲存這些大檔案。但是伴隨的是,hdfs對於小而多的檔案的處理能力不是很好。

簡化一致性模型

hdfs認為檔案一旦被寫入之後,就會被持久化儲存,不被修改。這個假設有一定的道理,因為hdfs被設計為儲存大檔案,因此對於大檔案而言即使有錯誤,相對於巨大的總體資料而言也會顯得不足以對最終結果產生影響;另外對大檔案進行修改,本身就是一件困難的事情,首先去定位目標資料所在位置,都需要費一番功夫,因此hdfs乾脆不支援對檔案進行修改。

hdfs中比較主要的概念有:namenode,block,datanode

hdfs是乙個主從架構,namenode就是其master節點,用於管理整個檔案系統的命名空間,並且負責與客戶端進行互動,返回檔案中具體資料的存放位置;

datanode通常集群中的乙個個節點,負責管理分該節點上的所有block,並且通過tcp協議定時想namenode傳送心跳來報告自己的狀態及資訊,以便於namenode能夠即使知道這個datanode是否還正常,儲存的資料量是否已經達到閾值等等。

block是用於儲存檔案真實資料的邏輯單位,由於hdfs被設計成善於儲存大檔案,因此相比於普通的檔案系統而言,它的乙個block的大小是遠大於後者的,它的預設大小是128mb(這事hadoop2.x的預設值),不僅如此,為了應對硬體可能出現的故障,預設情況下,hdfs預設為每個block,建立三個副本。

hdfs架構如圖所示:

從圖中可以看出:

hdfs預設的block大小為128m,因此在hdfs中所謂的小檔案,就是大小遠小於128m的檔案就被稱之為小檔案。 在hdfs世界裡,不管這個檔案有多小,只要它存放在hdfs中,都會至少占用乙個block,儘管實際上占用的儲存空間是檔案的大小。這是因為在namenode看來,乙個檔案至少需要乙個block,它是根據這個block的id來確定檔案的實際存放位置。

hdfs不適合儲存海量小檔案的原因在於,海量的小檔案對於datanode沒有什麼影響,但是對namenode對造成巨大的負擔。namenode會為每個儲存在集群中的檔案建立乙個物件,這個物件中包含檔案的路徑資訊、檔案存放在那些block中(以blockid表示)、檔名等一系列資訊,據資料介紹,namenode中用於代表乙個檔案的物件大小約150位元組。因此當hdfs中儲存的檔案越多,那麼namenode中表示檔案的物件就會越多,相應的,namenode中所需要的記憶體就越大。據資料估算,如果hdfs中存放10億個小檔案(每個檔案都小於128m),那麼namenode為記錄這些儲存檔案需要的記憶體大約為300gb,這還不算其他程序占用的記憶體,因此這對於單機而言,記憶體過大。當namenode所需要記憶體過大時,會帶來如下影響:

可以看這篇博文:hadoop解決小檔案儲存思路和增加namenode記憶體

HDFS的基本概念

當一台計算機無法儲存海量資料時,就對他進行分割槽,分開在若干臺計算機上。然而普通的檔案系統無法勝任這一工作,於是,分布式檔案系統就應運而生。1.資料塊 每個硬碟都有預設的資料塊大小,大小不一。他們是磁碟讀寫資料的最小單位。hdfs中有同樣的概念,但是根據其海量資料的要求,一般乙個塊大小為 128 m...

HDFS原理分析 基本概念

hdfs是hadoop distribute file system 的簡稱,也就是hadoop的乙個分布式檔案系統。hdfs設計理念之一就是讓它能執行在普通的硬體之上,即便硬體出現故障,也可以通過容錯策略來保證資料的高可用。hdfs是hadoop distribute file system 的簡...

HDFS入門之基本概念

hdfs 是 hadoop distribute file system 的簡稱,意為 hadoop 分布式檔案系統。是 hadoop 核心元件之一,作為最底層的分布式儲存服務而存在。分布式檔案系統解決的問題就是大資料儲存。它們是橫跨在多台計算機上的儲存系統。分布式檔案系統在大資料時代有著廣泛的應用...