【HDFS】一、HDFS概述

一、HDFS概述

1.1HDFS產生背景

隨着數據量越來越大,在一個操作系統管轄的範圍內存不下了,那麼就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的文件,這就是分佈式文件管理系統。HDFS只是分佈式文件管理系統中的一種。

1.2HDFS的概念

​ HDFS,它是一個文件系統,用於存儲文件,通過目錄樹來定位文件;其次,它是分佈式的,由很多服務器聯合起來實現其功能,集羣中的服務器有各自的角色。

​ HDFS的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,並不適合用來做網盤應用。

1.3HDFS優缺點

優點

  1. 高容錯性

    (1)數據自動保存多個副本。它通過增加副本的形式,提高容錯性。

    (2)某一個副本丟失以後,它可以自動恢復。

  2. 適合大數據處理

    (1)數據規模:能夠處理數據規模達到 GB、TB、甚至PB級別的數據。

    (2)文件規模:能夠處理百萬規模以上的文件數量,數量相當之大。

  3. 流式數據訪問

    (1)一次寫入,多次讀取,不能修改,只能追加。

    (2)它能保證數據的一致性。

  4. 可構建在廉價機器上,通過多副本機制,提高可靠性。

缺點

  1. 不適合低延時數據訪問,比如毫秒級的存儲數據,是做不到的。

  2. 無法高效的對大量小文件進行存儲

    (1)存儲大量小文件的話,它會佔用 NameNode大量的內存來存儲文件、目錄和塊信息。這樣是不可取的,因爲NameNode的內存總是有限的。

    (2)小文件存儲的尋道時間會超過讀取時間,它違反了HDFS的設計目標。

  3. 併發寫入、文件隨機修改

    (1)一個文件只能有一個寫,不允許多個線程同時寫。

    (2)僅支持數據 append(追加),不支持文件的隨機修改。

1.4 HDFS架構

HDFS架構圖

Hdfs架構.png

Client:就是客戶端。

  • 文件切分。文件上傳 HDFS 的時候,Client 將文件切分成一個一個的Block,然後進行存儲。
  • 與NameNode交互,獲取文件的位置信息。
  • 與DataNode交互,讀取或者寫入數據。
  • Client提供一些命令來管理HDFS,比如啓動或者關閉HDFS。
  • Client可以通過一些命令來訪問HDFS。

NameNode:就是master,它是一個主管、管理者。

  • 管理HDFS的名稱空間
  • 管理數據塊(Block)映射信息
  • 配置副本策略
  • 處理客戶端讀寫請求

DataNode:就是Slave。NameNode下達命令,DataNode執行實際的操作。

  • 存儲實際的數據塊
  • 執行數據塊的讀\寫

    Secondary NameNode:並非NameNode的熱備。當NameNode掛掉的時候,它並不能馬上替換NameNode並提供服務。

  • 輔助NameNode,分擔其工作量

  • 定期合併Fsimage和Edits,並推送給NameNode
  • 在緊急情況下,可輔助恢復NameNode

1.4HDFS文件塊大小

    HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數( dfs.blocksize)來規定,默認大小在hadoop2.x版本中是128M,老版本中是64M。
    HDFS的塊比磁盤的塊大,其目的是爲了最小化尋址開銷。如果塊設置得足夠大,從磁盤傳輸數據的時間會明顯大於定位這個塊開始位置所需的時間。因而,傳輸一個由多個塊組成的文件的時間取決於磁盤傳輸速率。
    如果尋址時間約爲10ms,而傳輸速率爲100MB/s,爲了使尋址時間僅佔傳輸時間的1%,我們要將塊大小設置約爲100MB。默認的塊大小128MB。
    塊的大小:10ms*100*100M/s = 100M
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章