白話大數據之HDFS

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


  1. 首先說,爲什麼要用hadoop

  2. 講一講什麼是文件系統

  3. 硬盤的發展過程

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

  5. 實踐過程


接下來,一個個的說


  1. 爲什麼要用hadoop

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


2.什麼是文件系統

那HDFS是什麼,HDFS是Hadoop Distributed File System 。可以理解爲hadoop的一個模塊,專門用於管理文件存儲。

爲了便於深刻的理解HDFS,我們先要了解什麼是文件系統,因爲HDFS從直譯過來看就是hadoop的分佈式 文件系統,所以我們先看看文件系統。


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

當然我們都知道要先格式化,但你知道爲什麼要格式化麼。。。。格式化之後就會建立文件系統


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


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


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

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


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


什麼什麼。。。。


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


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


3.硬盤的發展過程

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

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

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


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


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

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


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


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


所以你可以看到磁盤的發展路徑


小磁盤-大磁盤-磁盤陣列-虛擬的分佈式磁盤羣


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

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


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


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


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


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

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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章