Hadoop系列之HDFS 資料塊 12

2021-10-17 10:06:23 字數 917 閱讀 5474

要把大檔案儲存在 hdfs上,hdfs 會把大檔案分割成小塊,即我們通常說的資料塊( block ),它是 hadoop 分布式檔案系統最小的儲存單元,而且我們沒辦法決定指定塊的儲存節點位址,這些 namenode 會替我們決定。資料塊預設大小是 128mb,比作業系統裡面的塊概念要大很多(作業系統塊大小是 4kb ),我們可以根據實際需求修改 hdfs 塊大小。檔案的所有資料塊大小都是一樣的,除了最後乙個,它可能小於塊大小或者剛好等於塊大小。檔案會被分割成若干個 128mb 的小資料塊,再寫入hdfs的。

假如需要把乙個 518mb 的文字檔案 example.txt 儲存到 hdfs,在塊大小預設情況下,hdfs 將會建立 5 個資料塊,前面4個資料塊大小將是 128mb,最後乙個是 6mb,而不是 128mb。這樣會節省不少儲存空間。

hdfs 儲存的資料集一般比較大,資料量級一般是 tb 級別或者 pb 級別的。如果像 linux 系統那樣每個塊只有 4kb。那麼 hdfs 將會儲存非常多的資料塊,這將導致元資料暴增,namenode 管理維護這些元資料將非常吃力。且很快會成為集群效能的瓶頸。另一方面,資料塊的大小不能太大,不然檔案系統處理資料延遲會更加嚴重。

以下是 hdfs 資料塊的優勢:

由於資料塊的固定的,磁碟能夠儲存多少資料塊很容易就可以計算出來。

hdfs 可以儲存比單個磁碟容量還大的資料檔案,因為檔案會被劃分成多個 hdfs 資料塊,並儲存在集群的多個datanode 磁碟上。

資料塊很容易在 datanode 之間複製,以便達到資料的容錯性和高可用性。

hdfs 資料塊的概念簡化了 datanode 的資料儲存方式。所有塊的元資料都是在 namenode 維護的。datanode 不需要關心塊的元資料,比如檔案許可權,儲存位置等。

大資料與Hadoop系列之HDFS命令講解

hdfs命令基本格式 hadoop fs cmd args hadoop fs ls 列出hdfs檔案系統根目錄下的目錄和檔案 hadoop fs ls r 列出hdfs檔案系統所有的目錄和檔案 hadoop fs put local file hdfs file hdfs file的父目錄一定要存...

Hadoop系列一HDFS簡介

namenode nn namenode的metadata資訊在啟動後會載入到記憶體中,metadata資訊儲存在磁碟檔案fsimage,edits檔案記錄對metadata的操作日誌,block位置資訊只存在記憶體,不儲存到fsimage。secondarynamenode snn 不是nn的備份...

hadoop系列三 HDFS操作

0 檢視hdfs中的目錄資訊 hadoop fs ls hdfs路徑 1 上傳檔案到hdfs中 hadoop fs put 本地檔案 aaa hadoop fs copyfromlocal 本地檔案 hdfs路徑 copyfromlocal等價於 put hadoop fs movefromloca...