hdfs【hadoop distributed file system】是hadoop元件中的分布式儲存系統,提供高可靠性、高擴充套件性和高吞吐率的資料儲存服務。
1.檔案線性切割成塊【block】,塊分散儲存在集群的各個節點中。
2.單一檔案block大小一致,不同的檔案可以設定的不一樣。
3.block可以設定副本數,副本分散在不同的節點【副本數不要超過節點數,這樣副本設定才有意義】。
4.檔案上傳可以設定block大小和副本數,已上傳的檔案block副本數可以調整,大小不變。
5.只支援一次寫入多次讀取,同一時刻只有乙個寫入,可以追加資料。
1.namenode【主】節點儲存檔案元資料,datanode節點儲存檔案block資料。
2.datanode和namenode之間通過心跳確認各個節點的健康情況,以及是否需要重啟節點。
3.hdfsclient與namenode互動元資料資訊,與datanode互動檔案block資料【需先訪問namenode】。
特點:1.基於記憶體儲存,不會和磁碟發生交換。
2.接受客戶端的讀寫請求,收集datanode匯報的block列表資訊。
3.儲存metadata資訊,包括:檔案ownership和permissions、檔案大小、時間、block列表、block偏移量、位置資訊和block副本位置【由datanode上報】等。
持久化:
1.namenode的metadata資訊在啟動後會載入到記憶體。
2.metadata儲存到磁碟檔名稱為"fsimage"。
3.block的位置資訊不會儲存到fsimage。
4.edits記錄對metadata的操作日誌。
特點:1.本地磁碟目錄儲存資料【block】,檔案形式
2.同時儲存block的元資料資訊檔案
3.啟動dn時會向nn匯報block資訊
4.通過向nn傳送心跳保持與其聯絡【3s一次】,如果nn10minutes沒有收到dn的心跳,則認為其已經lost,並copy其上的block到其它dn節點
它不是nn的備份【但可以做備份】,它主要的工作是幫助nn合併edits log,減少nn啟動時間。
snn執行合併時機
》根據配置檔案設定的時間間隔fs.checkpoint.period預設3600s
》根據配置檔案設定edits log大小fs.checkpoint.size規定edits檔案的最大值預設是64m
snn合併流程**:
1.高容錯性
》資料自動儲存副本
》副本丟失後自動恢復
2.適合批處理
》資料不動**動
》資料位置暴露給計算框架【block偏移量】
3.適合大資料處理
》gb、tb、甚至pb級別資料
》百萬規模以上的檔案數量
》10k+節點
4.可構建在廉價機器上
》通過多副本提高可靠性
》提供了容錯和恢復機制
1.小檔案訪問
》占用namenode大量記憶體
》尋道時間超過讀取時間
2.併發寫入、檔案隨機修改
》乙個檔案只能有乙個寫者
3.低延遲資料訪問
》資料延遲較大,比如毫秒級
》低延遲與高吞吐率成反比
簡單快速入手hdfs
為什麼會存在這篇文章,是因為我產生了以下問題,為了理清關係並解決疑惑。什麼是hdfs?需要搭建什麼樣的環境?hdfs只是乙個名詞,還是需要人為的去搭建環境?很多文章都在說hdfs的原理,我就想知道需不需要我去搭建?來自hadoop官網的截圖 簡單點,hadoop處理大資料,那麼必然面對資料的儲存問題...
HDFS入門之基本概念
hdfs 是 hadoop distribute file system 的簡稱,意為 hadoop 分布式檔案系統。是 hadoop 核心元件之一,作為最底層的分布式儲存服務而存在。分布式檔案系統解決的問題就是大資料儲存。它們是橫跨在多台計算機上的儲存系統。分布式檔案系統在大資料時代有著廣泛的應用...
大資料入門 HDFS的特性
目標 掌握hdfs具備的特性 1 海量資料儲存 hdfs可橫向擴充套件,其儲存的檔案可以支援pb級別或更高階別的資料儲存。2 高容錯性 資料儲存多個副本,副本丟失後自動恢復。可構建在廉價的機器上,實現線性擴充套件。當集群增加新節點之後,namenode也可以感知,進行負載均衡,將資料分發和備份資料均...