HDFS組成構架:
注:
NameNode(nn):就是 Master,它是一個主管、管理者。
(1) 管理 HDFS 的名稱空間;
(2) 配置副本策略。記錄某些文件應該保持幾個副本;
(3) 管理數據塊(Block)映射信息; 一個大文件可能有多個數據塊(一塊為128M),每個塊保存在哪里
(4) 處理客戶端讀寫請求。
DataNode:就是 Slave。NameNode 下達命令,DataNode 執行實際的操作。
(1) 存儲實際的數據塊;
(2) 執行數據塊的讀 / 寫操作。
Secondary NameNode:并非 NameNode 的熱備。當 NameNode 掛掉的時候,它并不能馬上替換 NameNode 并提供服務。 真實的開發中,我們會配置兩個個namenode來實現高可用。
(1) 輔助 NameNode,分擔其工作量,比如定期合并 Fsimage 和 Edits,并推送給 NameNode;
(2) 在緊急情況下,可輔助恢復 NameNode。
Client:就是客戶端。?
(1)文件上傳 HDFS 的時候,Client 將文件切分成一個一個的 Block,然后進行上傳;
(2)與 NameNode 交互,獲取文件的位置信息;
(3)與 DataNode 交互,讀取或者寫入數據;
(4) Client 提供一些命令來管理 HDFS,比如 NameNode 格式化;
(5) Client 可以通過一些命令來訪問 HDFS,比如對 HDFS 增刪查改操作;
HDFS文件默認大小是128M
shell操作文件上傳
1.從本地剪切粘貼到HDFS。把本地的文件上傳到HDFS,并刪除本地的文件。假設你在hadoop102上有一個文件/opt/conf/sanguo.txt(請自行創建)。
基本格式是:
hadoop fs -moveFormLocal ?(本地文件路徑 服務器上的文件路徑)
可以通過如下命令把這個文件上傳到服務器上。
[root@hadoop100 hadoop-3.1.3]$ hadoop fs ?-moveFromLocal ?/opt/tmp/sanguo.txt ?/sanguo.txt
注意到,它會把本地的文件刪除掉。
2.如果要保留本地的文件,可以使用 -put 命令。具體如下:
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -put /opt/tmp/sanguo.txt /sanguo
shell操作文件下載
下載就是把集群中的文件下載到本地。它要用到的命令是hadoop fs -get。
基本格式是:
hadoop fs -get ?(服務器上的文件路徑 本地文件路徑)
示例需求: 把服務器上的shuguo.txt 下載到hadoop100的 files目目錄下。
對應的命令:
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt
其他shell操作
1.顯示目錄信息。
使用-ls命令,示例如下:
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -ls /
上面的命令用來查看根目錄(/)下的文件。
2.創建文件夾。
使用-mkdir命令。格式是:hadoopfs -mkdir 文件名。 示例如下:
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -mkdir /jinguo
3.顯示文件內容。
使用-cat命令。示例如下:
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo.txt
3.拷貝文件。
使用-cp命令。表示從HDFS的一個路徑拷貝到HDFS的另一個路徑
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo.txt /jinguo
4.移動文件。
使用-mv命令,它的格式是: hadoop fs -mv 文件起點 終點
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -mv /sanguo/wuguo.txt /jinguo
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -mv /sanguo/weiguo.txt /jinguo
5.刪除文件或文件夾。
使用-rm 命令,它的格式是: -rm 要刪除的文件
[root@hadoop100 hadoop-3.1.3]$ hadoop fs -rm /sanguo/shuguo.txt
6.遞歸刪除。
使用-rm -r命令, 它用來刪除目錄及目錄里面內容,它的格式是: -rm -r 要刪除的文件夾。
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /sanguo
7.統計文件夾的大小信息。使用命令 -du。