衆所周知,HDFS中以數據塊(block)爲單位進行存儲管理。本文簡單介紹一下HDFS中數據塊(block)的概念,以及衆多分佈式存儲系統(不止是HDFS)使用block做爲存儲管理基本單位的意義。node
數據塊網絡
數據塊的概念並不陌生,在磁盤中,每一個磁盤都有默認的數據塊大小,這是磁盤進行數據讀/寫的最小單位,磁盤塊通常爲512字節。在分佈式文件系統中,數據塊通常遠大於磁盤塊的大小,而且爲磁盤塊大小的整數倍,例如,HDFS block size默認爲64MB。架構
分佈式存儲系統中選擇大block size的主要緣由是爲了最小化尋址開銷,使得磁盤傳輸數據的時間能夠明顯大於定位這個塊所需的時間。然而,在HDFS中block size也很差設置的過大,這是由於MapReduce中的map任務一般一次處理一個塊中的數據,所以若是block太大,則map數就會減小,做業運行的並行度就會受到影響,速度就會較慢。分佈式
Why blockoop
在不少分佈式文件系統中咱們均可以看到block的存在,這種設計的好處主要有如下幾點:學習
Why bigger block大數據
在普通文件系統中,使用較大的磁盤塊:spa
在HDFS中,使用大數據塊:架構設計
Block VS. Chunk設計
因爲我也是最近纔開始比較仔細的接觸Hadoop,GFS中的DataNode又被稱爲ChuckServer,所以常常會被HDFS中的block和chunk搞得confused掉。今天看到了一個比較好的解釋,在這裏記錄一下:
block:如上文,是HDFS中的存儲管理單元,相似磁盤的block。
chuck:HDFS中存儲的文件被劃分爲多個塊(chuck),每一個chuck的大小與block的大小相同(除了最後一個chuck),這些文件chuck就被存儲到block中。
好啦,記錄的很簡單。之前很喜歡一篇文章記錄的很詳盡,所以好久都憋不出一篇博文,就算準備充分能夠開寫了,可是又會以爲好長,懶得寫。因此呢,爲了讓本身學習得更有節奏吧,如今決定有點感悟就記錄下來,方便之後查看。固然,也能夠一段時間merge 整理一下 相關的短文啦!
YUKI,乾巴爹 哈哈
參考
《Hadoop權威指南》(第二版)P43
《Hadoop技術內幕:深刻解析Hadoop Common和HDFS架構設計與實現原理》 P218