基于key/value+Hadoop HDFS 設計的存儲系統的shell命令接口

jopen 10年前發布 | 14K 次閱讀 Hadoop 分布式/云計算/大數據

對于hadoop HDFS 中的所有命令進行解析

接口名稱

</td>

功能

</td>

操作流程

</td> </tr>

get

</td>

將文件復制到本地文件系統 。如果指定了多個源文件,本地目的端必須是一個目錄。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名(或大文件元數據信息);

(2)根據文件名(或大文件元數據信息)到相應的Data server中獲取相應的文件(大文件需要拼接);

(3)將獲取的文件寫入本地文件系統。

</td> </tr>

put

</td>

從本地文件系統中復制文件或目錄到目標文件系統。

</td>

(1)按照上述章節所述,逐層解析<dst>絕對路徑,獲取目標文件夾的key/value數據;

(2)根據章節所述規則,結合目標文件夾的標號和源文件的文件名生成對應的key/value;

(3)根據步驟(2)生成的key/value上傳源文件的相關信息;

(4)上傳源文件內容到系統中。

</td> </tr>

rm

</td>

刪除指定的文件,只刪除非空目錄和文件。

</td>

(1)根據上述章節所述,逐層解析到目標文件所在的位置獲取指定文件的key/value;

(2)根據key找到指定的文件或目錄所在的DataNode上存儲的信息;

(3)刪除信息;

(4)將刪除記錄寫入edit log。

</td> </tr>

mkdir

</td>

創建目錄,會創建路徑中所有缺失的父目錄。

</td>

(1)按照上述機制,逐層解析找到父目錄,獲取標記,如果父目錄不存在則遞歸的創建路徑上的目錄;

(2)將父目錄的標記作為key的父節點字段部分,創建新目錄。

</td> </tr>

appendToFile

</td>

添加源文件從本地文件系統到目標文件系統。

</td>

(1)按照上述章節所述,逐層解析<dst>絕對路徑,獲取目標文件夾的key/value數據;

(2)根據章節所述規則,結合目標文件夾的標號和源文件的文件名生成對應的key/value;

(3)根據步驟(2)生成的key/value上傳源文件的相關信息;

(4)上傳源文件內容到系統中。

</td> </tr>

cat

</td>

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

</td>

(1)按照上述機制,逐層解析path到目標文件,獲取文件的key/value;

(2)根據key值在找到文件內容輸出到stdout中;

(3)將結果在終端顯示出來。

</td> </tr>

chgrp

</td>

改變文件和目錄的群組。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名/目錄(或大文件元數據信息);

(2)修改這個K-V中的value的表示群組的字段并重新插入新的K-V。

</td> </tr>

chmod

</td>

改變文件和目錄的訪問權限。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名/目錄(或大文件元數據信息);

(2)修改這個K-V中的value的表示訪問權限的字段并重新插入新的K-V。

</td> </tr>

chown

</td>

變更文件和目錄的擁有者。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名/目錄(或大文件元數據信息);

(2)修改這個K-V中的value的表示所有者的字段并重新插入新的K-V。

</td> </tr>

copyFromLocal

</td>

從本地文件系統中復制文件,和put命令相似。

</td>

操作流程參見put接口。

</td> </tr>

copToLocal

</td>

將文件復制到本地文件系統,和get命令類似。

</td>

操作流程參見get接口。

</td> </tr>

count

</td>

顯示由路徑確定的子目錄的個數,文件個數,使用字節個數,以及所有的文件目錄名。

</td>

(1)解析到目標路徑,獲取相關的key/value;

(2)獲取value中的子目錄個數,文件個數,使用字符串等相關信息的字段。

</td> </tr>

cp

</td>

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

</td>

(1)根據上述章節所述,逐層解析<dest>,獲取目標文件的位置信息;

(2)獲取源文件的內容;

(3)逐塊復制源文件信息到目標文件當中。

</td> </tr>

du

</td>

顯示文件大小,如果path是一個目錄,則顯示該目錄中所有文件的大小。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名或目錄;

(2)如果是文件讀取相應的key/value中,讀取value中表示文件大小的字段,如果是目錄則讀取標記,遞歸的查詢屬于該目錄下的所有文件。

</td> </tr>

dus

</td>

顯示文件的大小,但是當作用于目錄時,會顯示文件大小之和。

</td>

(1)按照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名或目錄;

(2)如果是文件讀取相應的key/value中,讀取value中表示文件大小的字段,如果是目錄則讀取標記,遞歸的查詢屬于該目錄下的所有文件value信息,將value中關于文件大小的字段信息相加取和。

</td> </tr>

expunge

</td>

清空回收站。

</td>

(1)按照上述機制,解析到HDFS系統回收站目錄下(/user/用戶名/.Trash/current);

(2)刪除(參考接口rm)。

</td> </tr>

getfacl

</td>

顯示文件和目錄的訪問控制列表

</td>

(1)按照上述章節所述,逐層解析,獲取目標文件或路徑的key/value數據;

(2)獲取value中有關的ACL的字段信息。

</td> </tr>

getmerge

</td>

獲取由源目錄指定的所有文件,將它們合并為單個文件并寫入本地文件系統中的LOCALDST

</td>

(1)按照上述機制,逐層解析,獲取源目錄文件的標記;

(2)根據標記,在config server中尋找目錄文件下的子文件;

(3)創建目標文件,將子文件的內容依次合并到目標文件當中;

(4)將目標文件寫入本地文件系統。

</td> </tr>

ls

</td>

列出目錄及文件信息。

</td>

(1)按照上述機制,逐層解析獲取到目標文件或者文件夾的標記;

(2)根據標記查詢子目錄或者文件相關信息;

(3)列出信息。

</td> </tr>

lsr

</td>

循環列出目錄,子目錄及文件信息。

</td>

操作流程參見參照ls接口。

</td> </tr>

moveFromLocal

</td>

類似于put,只是本地的源在復制之后會被刪除。

</td>

1)按照上述章節所述,逐層解析<dst>絕對路徑,獲取目標文件夾的key/value數據;

(2)根據章節所述規則,結合目標文件夾的標號和源文件的文件名生成對應的key/value;

(3)根據步驟(2)生成的key/value上傳源文件的相關信息;

(4)上傳源文件內容到系統中;

(5)刪除本地源文件。

</td> </tr>

moveToLocal

</td>

于get命令類似。

</td>

操作流程參見get接口。

</td> </tr>

mv

</td>

移動文件從源地址到目標地址。

</td>

(1)按照上述機制,逐層解析<dest>絕對路徑獲取目標文件夾的標號;

(2)逐層解析到源文件獲取源文件的key/value數據;

(3)更改源文件中的key值將其中的父節點標號字段改為目標文件夾的標號。

</td> </tr>

rmr

</td>

遞歸刪除指定文件和目錄。

</td>

(1)按照上述機制,逐層解析到目標文件所在的位置獲取指定文件的標記;

(2)采用遞歸算法根據標記刪除指定的文件或目錄。

</td> </tr>

setfacl

</td>

設置訪問控制列表(acl)的文件和目錄。

</td>

(1)按照上述機制,逐層解析,獲取目標文件或路徑的key/value數據;

(2)設置value中的ACL。

</td> </tr>

setrep

</td>

改變文件的目標副本系數。

</td>

(1)按照上述章節所述,逐層解析,獲取目標文件的key/value數據;

(2)修改value中有關副本系數的字段。

</td> </tr>

stat

</td>

顯示文件中的統計信息。

</td>

(1)按照上述章節所述,逐層解析,獲取目標文件的key/value數據;

(2)獲取value中關于文件的統計信息的相關字段。

</td> </tr>

tail

</td>

顯示目標文件中的最后1KB數據。

</td>

(1)按照上述章節所述,逐層解析,獲取目標文件的key/value數據;

(2)根據所得到的key/value查詢最后一塊中的1KB信息,如果最后一塊不足1KB,則查詢倒數第二塊中信息,拼接成1KB。返回信息。

</td> </tr>

test

</td>

對路徑進行檢查。

</td>

(1)按照上述章節所述,對目標路徑逐層解析,獲取目標文件的key/value數據;

(2)檢查目標文件中的key/value中的相關字段,以檢測文件是否存在,大小是否為0,目錄路徑是否存在。

</td> </tr>

text

</td>

顯示文件的文本內容,當文件為文本文件時,等同于cat。文件為壓縮格式時,會先解壓縮。

</td>

操作流程參見cat接口。

</td> </tr>

touchz

</td>

創建長度為0的文件。

</td>

操作流程參見mkdir接口。

</td> </tr> </tbody> </table>
來自:http://blog.csdn.net/captain_wl9083/article/details/37663327

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  • sesese色