基于key/value+Hadoop HDFS 設計的存儲系統的shell命令接口
對于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> | |||||||||||
</td> |
創建目錄,會創建路徑中所有缺失的父目錄。 </td> |
(1)按照上述機制,逐層解析找到父目錄,獲取標記,如果父目錄不存在則遞歸的創建路徑上的目錄; (2)將父目錄的標記作為key的父節點字段部分,創建新目錄。 </td> </tr> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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> | |||||||||||
</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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
相關經驗相關資訊 |