溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

白話大數據之HDFS

發(fā)布時間:2020-05-28 06:38:39 來源:網絡 閱讀:889 作者:z5wjz 欄目:大數據

很多書上講的都太深奧了,從官方的解釋翻譯過來,或者加一些注解,但是我們的廣大需要入門的同學們需要白話,講的越簡單越好,因此,我整理一下,先把目錄寫在這里:


  1. 首先說,為什么要用hadoop

  2. 講一講什么是文件系統(tǒng)

  3. 硬盤的發(fā)展過程

  4. 水道渠成,來看一下HDFS

  5. 實踐過程


接下來,一個個的說


  1. 為什么要用hadoop

因為分布式存儲+分布式計算,比單機能存的更多,計算時一堆CPU工作,也比一臺機器上的多個CPU性能要好。


2.什么是文件系統(tǒng)

那HDFS是什么,HDFS是Hadoop Distributed File System ??梢岳斫鉃閔adoop的一個模塊,專門用于管理文件存儲。

為了便于深刻的理解HDFS,我們先要了解什么是文件系統(tǒng),因為HDFS從直譯過來看就是hadoop的分布式 文件系統(tǒng),所以我們先看看文件系統(tǒng)。


先設想一下,假設給你一塊磁盤,里面總共有100G的可用空間,你會怎么用掉這些空間呢?

當然我們都知道要先格式化,但你知道為什么要格式化么。。。。格式化之后就會建立文件系統(tǒng)


其實很簡單,好多人都應該做過磁盤碎片整理,應該大概了解磁盤簇的概念吧,那就是格式化時干的,其實簇就是文件系統(tǒng)的一個組成部分。假設把磁盤存儲空間想像成一張白紙,數據是要往白紙上寫的字。格式化就是在紙上畫好線,將紙上分成一個一個的小格子。對應到咱們硬盤上,也就是劃出了很多磁盤簇,通常一個簇是2k大小。但是在硬盤上的簇會比紙上的小格子要復雜一些,因為他還有些附加的內容,里面至少還會記錄著這些內容:我的上一簇在哪里,我的下一簇在哪里


好了,當你存儲一個文件的時候,先要找到一塊磁盤上的空間吧,我們當然希望是在磁盤上有塊連續(xù)的空間,這樣存儲和讀取效率都會很高。但是,你的文件有可能會被繼續(xù)編輯吧,他有可能在某一天,會從原來的20M變成30M,但是需要增加存儲空間的時候,有可能會發(fā)現,啊,20M后面那些空間沒有了,被另一個文件給占用了。那怎么辦,是否需要把后面的所有文件都整體后移10M呢,這種低效的工作相信你也不會干。所以呢,只需要再找一片10M的空間,然后讓你前20M的最后一個簇的指向(我的下一簇在哪里)指向新找到的10M的首個簇就行了。這就是文件系統(tǒng)提供的能力啊


那么再來,你一定會注意到,文件系統(tǒng)應該知道磁盤上的每一簇的大致情況,比如哪個簇上有數據,哪個簇是空白的,對吧

這是當然的,那文件系統(tǒng)怎么知道呢?還記得你曾經聽過的一個詞么,叫作FAT,后來有FAT16,FAT32,再后來是NTFS(這些都是windows文件系統(tǒng)里面用到的,我沒有提linux的文件系統(tǒng),但是道理應該一樣的),咱們就從最簡單的開始說吧,FAT(File Allocation Table)翻譯過來就是文件分配表,通常放在磁盤的頭部。從名字上你也能大概知道他是干什么的吧。其實他就是文件系統(tǒng)的主要登記文件存放在哪個簇上的地方。這個FAT很重要啊,千萬不能搞丟了,一旦丟了,磁盤上的文件也就找不到了(會用磁盤修復工具或土豪請人修復的除外)。你可以把FAT理解為是磁盤上存儲內容的一個總目錄,磁盤上的文件被刪除、新增、移動等等操作,都對應的會要修改FAT里面的內容。


那么,我們再想想,這樣的一個FAT有多大,能存多少內容呢,他又能管理多少磁盤簇呢。對了,他是在限制的,一個FAT16僅能管理不超過2G的磁盤空間,后來FAT32做了改進,可以管理2T的空間。NTFS又做了改進,就沒有空間限制了,因為NTFS會有很多的FAT32類似的東東,不再集中放在磁盤頭部了,會在很多地方都有,數量也會隨著磁盤容量變化。


什么什么。。。。


FAT16僅能2G的磁盤空間。。。。還記得那個年代你買個電腦回家的時候,磁盤要分區(qū)么,也有這個原因的。


好了,我們大概回顧了一下當年的文件系統(tǒng)FAT,你也會大概明白文件系統(tǒng)的作用,有了他,我們的操作系統(tǒng)存儲文件的時候才安心。就像是咱們新買的房子里面,放東西的時候肯定不會亂堆在地上,我們都會買些家具,讓家里多些格式,這樣放的東西規(guī)矩了,才會更多些,找的時候也好找。


3.硬盤的發(fā)展過程

這個比較簡單,我剛學電腦那會,硬盤存儲空間是論M的,后來有個存儲1G的磁盤的時候,覺得牛B的不得了。

再看看現在,磁盤動不動就2T

而且,我們的服務器上還有RAID技術,也就是磁盤陣列技術,可以把一堆磁盤,格式化成一個磁盤,這樣一來,存儲空間就變多了。這曾經是非常牛的技術,現在當然也挺火的。


但是,你以為磁盤的發(fā)展速度夠快了么,其實也是挺快的。但是數據的發(fā)展速度更快。尤其在互聯網時代,真的是爆炸


再牛的硬盤和陣列,也不夠存的。比如我們去年的時候,一天的數據增量是150T左右,你可以想像么。

就算你今天用幾塊大硬盤存上,明天再找?guī)讐K大硬盤,但是你查找數據的時候呢,你做分析的時候呢。


怎么辦,硬盤技術要變革么。。。。


人們是很聰明的,自然而然的就會想到,我們可以模仿磁盤陣列技術,寫一個軟件 ,把一大堆機器上的磁盤都統(tǒng)一管理起來,這樣做成一個超大的虛擬磁盤可以不。哈,必須可以,那么,隨著這種想法,這就是DFS的思路,所以hadoop也有了一個具體想法,他也實施了出來,那就是他的HDFS了。


所以你可以看到磁盤的發(fā)展路徑


小磁盤-大磁盤-磁盤陣列-虛擬的分布式磁盤群


4.水道渠成,來看一下HDFS

既然要做一個虛擬磁盤,是不是也得像真正的磁盤存儲那樣子搞呢,思路相似


我們上面講的最初的文件系統(tǒng)FAT,其實分布式的磁盤也是需要的啊,但名字肯定不會這么叫了,所以hadoop起了個名字:namenode


另外,普通硬盤格式化之后有磁盤簇,HDFS格式化之后是什么呢,當然也是一個個的存儲小格式,名字呢,hadoop稱之為datanode。


namenode肯定是存在某一臺或者少數幾臺機器上的了,相當于整個虛擬磁盤的總目錄,他會記錄哪些datanode是空白的,哪些datanode上面有文件。你看,是不是和FAT很相似。但是比較燒腦的是,他現在管理的是好多臺機器上的好多磁盤存儲。你可以想像,在你部署的HDFS集群上面,實際是運行了一個虛擬的大磁盤,是不是好帥


了解了上面這些之后,可以看看另一篇文章,我覺得寫得很不錯,直接收藏在這里供參考:

http://www.cnblogs.com/laov/p/3434917.html






向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI