大數據|HDFS的shell操作及基本工作機制(四)

一、HDFS分布式文件系統的shell操作

HDFS的shell操作基本和Linux的shell命令差不多,我這邊重點介紹幾個常用的文件操作的命令,其它更多的操作命令很少用到,當然你也可以通過“fs -help”查看所有命令。

重點在第二部分,介紹HDFS的基本工作機制。

1)–ls顯示當前目錄結構

-ls:該命令選項表示查看指定路徑的當前目錄結構,參數:-R遞歸顯示目錄結構,后面跟hdfs路徑。

hadoop fs -ls /

hadoop fs -ls hdfs://Hadoop1:9000/hadoop/

hadoop fs -ls -R hdfs://Hadoop1:9000/

2)–copyFromLocal上傳文件

-copyFromLocal:該命令除了限定源路徑是一個本地文件外,操作與-put一致。

hadoop fs -copyFromLocal logs/log.out /hadoop/

3)–put上傳文件

-put:該命令選項表示把linux上的文件復制到hdfs中:

hadoop fs -put LICENSE.txt /hadoop/

4)–copyToLocal下載文件到本地

5)–get下載文件到本地

6)moveFromLocal從本地把文件移動到hdfs

-moveFromLocal:將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。

hadoop fs -moveFromLocal /home/localfile1.txt? /hadoop

7)moveToLocal把hdfs上的文件移動到本地

8)cp復制文件

-cp:將文件從源路徑復制到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。

hadoop fs -cp /hadoop/hadoop-root.out /hadoop/dir1

9)mv移動文件

-mv:將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。

hadoop fs -mv /hadoop/hadoop-root.log /hadoop/dir2

10)mkdir創建文件夾

-mkdir:創建空白文件夾,該命令選項表示創建文件夾,后面跟的路徑是在hdfs將要創建的文件夾。

hadoop fs -mkdir /hadoop

11)cat查看文件內容

-cat:將路徑指定文件的內容輸出到stdout。

hadoop fs -cat /hadoop/yarn-root.log

12)getmerge合并文件

-getmerge:該命令選項的含義是把hdfs指定目錄下的所有文件內容合并到本地linux的文件中將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。

hadoop fs -getmerge /hadoop/logs/log.* /log.sum

13)rm刪除文件,同Linux

14)rm -r刪除,同Linux

15)rmdir 同Linux

16)-tail查看文件尾部內容

-tail:該命令選項顯示文件最后1K字節的內容。一般用于查看日志。如果帶有選項-f,那么當文件內容變化時,也會自動顯示。

hadoop fs -tail -f /hadoop/dir1/hadoop-root.log

17)–help幫助

-help:該命令選項會顯示幫助信息,后面跟上需要查詢的命令選項即可。

hadoop fs -help ls

二、HDFS分布式文件系統的基本工作機制

1、當我們在命令行輸入“hadoop fs -put /jdk.tar.gz /”時,hdfs會做些什么?見下圖:

put操作

1)先把jdk.tar.gz文件分塊,具體分成幾塊,怎么分,后面再總結

2)把分好的文件塊分布到各種datanode的服務器上

3)同時namenode服務器會記錄每個塊與datanode服務器之間的對應關系

2、當我們在命令行輸入“hadoop fs -get /jdk.tar.gz”時,hdfs會做些什么?見下圖:

get操作

1)先訪問namenode,獲取文件被分塊存儲的信息

2)根據namenode返回的分塊信息去各種的datanode服務器獲取塊的信息

當然,在這里需要考慮每個塊不止保存到一個datanode服務節點上,應該需要保存多個副本。這塊先不去討論。

三、總結

1、首先,HDFS是一個文件系統,有一個統一的命名空間一一目錄樹,客戶端訪間hdfs文件時就是通過指定這個目錄樹中的路徑來進行。

2、其次,它是分布式的,由很多服務器聯合起來實現功能。

1)hdfs文件系統會給客戶端提供一個統一的抽象目錄樹,Hdfs中的文件都是分塊(block)存儲的,塊的大小可以通過配置參數(dfc.blocksize)來規定,默認大小在hadoop2x版本中是128M,老版本中是64M;

2)文件的各個block由誰來進行真實的存儲呢?——分布在各個datanode服務節點上,而且每一個block都可以存儲多個副本(副本數量也可以通過參數設置dfs.replication) ;

3)Hdfs中有一個重要的角色:namenode,負責維護整個hdfs文件系統的目錄樹,以及每一個路徑(文件)所對應的block塊信息(block的id,及所在的 datanode服務器);

4)hdfs是設計成適應一次寫入,多次讀出的場景,幷不支持文件的修改。

5)特性:容量可以線性擴展;數據存儲高可靠;分布式運算處理很方便;數據訪問延遲較大,不支持數據的修改操作;適合一次寫入多次讀取的應用場景。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容