Hadoop之HDFS的概念及用法服務器
一、概念介紹分佈式
Hadoop是Apache旗下的一個項目。他由HDFS、MapReduce、Hive、HBase和ZooKeeper等成員組成。oop
HDFS是一個高度容錯的分佈式文件系統。他可以提升吞吐量的數據訪問,適合存儲海量的大文件。spa
HDFS由四部分構成:HDFS client、NameNode、DataNode、Secondary NameNode。blog
二、NameNode內存
用於維護集羣內元數據,也就是保存文件存儲位置,集羣存儲方式爲一個大文件存儲在多個服務器中,並且爲了維護健壯性,一個文件有多個備份,這些備份位置都須要存儲在NameNode中。it
。。。待編輯io
a集羣
sdf
二、操做(此版本爲Hadoop2.7,網上說的另外一種editlog和fsimage的存儲方式爲更早版本)cli
a) 啓動HDFS
從fsimage文件中讀取元數據信息到內存中。
b) 讀文件
1. 掃描HDFS中的元素據信息。客戶端訪問NameNode,NameNode把DataNode存放數據的位置等信息(存儲的元數據信息),從內存中取來。
2. 客戶端下載文件。客戶端根據NameNode提供的元數據信息,與DataNode簡歷RPC通訊,進行IO操做。
c) 寫文件
1. 客戶端與NameNode創建通訊。判斷存儲空間的剩餘量,判斷所存放的文件的存放分佈方式。
2. NameNode元數據信息落盤。生成一個editlog文件,保存元數據信息和元數據的操做。
3. 客戶端與DadaNode創建通訊。進行IO操做
d) NameNode數據固化
NameNode在空閒的時候,會把editlog中的元數據信息和操做信息,合併到fsimage(二進制信息,讀寫快速)文件中。
每次HDFS啓動時,NameNode都會把未合併到fsimage中的數據信息,合併過去。
SecondartNameNode經過RPC通訊,把editlog中的元數據信息和操做信息,合併到fsimage文件中,並推送給NameNode。