盜來的圖:HDFS架構體系
html
一、Clientnode
在我們這就是Linux命令或者Java代碼。
web
二、NameNodeapache
整個HDFS集羣只有一個NameNode,它存儲整個集羣文件分別的元數據信息。這些信息以fsimage和editlog兩個文件存儲在本地磁 盤,Client經過這些元數據信息能夠找到相應的文件。此外,NameNode還負責監控DataNode的健康狀況,一旦發現DataNode異常, 就將其踢出,並拷貝其上數據至其它DataNode。雖然Client是與NameNode通訊,可是最終操做文件仍是鏈接Datenode安全
三、Secondary NameNode架構
Secondary NameNode負責按期合併NameNode的fsimage和editlog。這裏特別注意,它不是NameNode的熱備,因此NameNode依 然是Single Point of Failure。它存在的主要目的是爲了分擔一部分NameNode的工做(特別是消耗內存的工做,由於內存資源對NameNode來講很是珍貴)。oop
四、DataNodespa
DataNode負責數據的實際存儲。當一個文件上傳至HDFS集羣時,它以Block爲基本單位分佈在各個DataNode中,同時,爲了保證數據的可靠性,每一個Block會同時寫入多個DataNode中(默認爲3,我們搞成了2)。DataNode經過心跳向node彙報本身的狀態,同時拿到namedode指派下來的command執行。orm
五、Blockhtm
默認64M一塊,一塊存三分,童叟無欺。
HDFS 命令基本就是 Linux命令前面加上 "Hadoop fs -",官方文檔入口。
下面是具備表明性的命令:
hadoop dfsadmin -safemode leave //退出安全模式,否則沒法put
hadoop fs -mkdir /user/kitten //建文件夾,建立HDFS的用戶
hadoop fs -chown kitten /user/kitten //更改文件夾的全部權
hadoop fs -ls /user //羅列文件
hadoop fs -lsr /user //遞歸羅列文件
hadoop fs -put test.txt /user/kitten //從Linux複製到HDFS
hadoop fs -get /user/kitten /test.txt //從HDFS取到Linux
hadoop fs -cat /user/kitten/test.txt //建文件
hadoop fs -tail /user/kitten/test.txt //查看最後1000字節
hadoop fs -rm /user/kitten/test.txt //刪除
hadoop fs -help ls //國際慣例,查看ls命令的幫助文檔