基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口
對于hadoop HDFS 中的全部命令進行解析(當中操作流程是自己的想法有不允許見歡迎大家指正)
| 接口名稱 | 功能 | 操作流程 |
| get | 將文件拷貝到本地文件系統 。 假設指定了多個源文件,本地目的端必須是一個文件夾。 | (1)依照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名稱(或大文件元數據信息); (2)依據文件名稱(或大文件元數據信息)到對應的Data server中獲取對應的文件(大文件須要拼接); (3)將獲取的文件寫入本地文件系統。 |
| put | 從本地文件系統中拷貝文件或文件夾到目標文件系統。 | (1)依照上述章節所述,逐層解析<dst>絕對路徑,獲取目標目錄的key/value數據。 (2)依據章節所述規則。結合目標目錄的標號和源文件的文件名稱生成相應的key/value; (3)依據步驟(2)生成的key/value上傳源文件的相關信息。 (4)上傳源文件內容到系統中。 |
| rm | 刪除指定的文件。僅僅刪除非空文件夾和文件。 | (1)依據上述章節所述,逐層解析到目標文件所在的位置獲取指定文件的key/value。 (2)依據key找到指定的文件或文件夾所在的DataNode上存儲的信息; (3)刪除信息。 (4)將刪除記錄寫入edit log。 |
| mkdir | 創建文件夾,會創建路徑中全部缺失的父文件夾。 | (1)依照上述機制,逐層解析找到父文件夾,獲取標記。假設父文件夾不存在則遞歸的創建路徑上的文件夾。 (2)將父文件夾的標記作為key的父節點字段部分,創建新文件夾。 |
| appendToFile | 加入源文件從本地文件系統到目標文件系統。 | (1)依照上述章節所述,逐層解析<dst>絕對路徑,獲取目標目錄的key/value數據; (2)依據章節所述規則,結合目標目錄的標號和源文件的文件名稱生成相應的key/value; (3)依據步驟(2)生成的key/value上傳源文件的相關信息; (4)上傳源文件內容到系統中。 |
| cat | 將路徑指定文件的內容輸出到stdout。 | (1)依照上述機制,逐層解析path到目標文件,獲取文件的key/value。 (2)依據key值在找到文件內容輸出到stdout中。 (3)將結果在終端顯示出來。 |
| chgrp | 改變文件和文件夾的群組。 | (1)依照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名稱/文件夾(或大文件元數據信息); (2)改動這個K-V中的value的表示群組的字段并又一次插入新的K-V。 |
| chmod | 改變文件和文件夾的訪問權限。 | (1)依照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名稱/文件夾(或大文件元數據信息); (2)改動這個K-V中的value的表示訪問權限的字段并又一次插入新的K-V。 |
| chown | 變更文件和文件夾的擁有者。 | (1)依照上述機制。在Config server上的存儲引擎中逐層讀取K-V,直到獲得所操作的文件名稱/文件夾(或大文件元數據信息)。 (2)改動這個K-V中的value的表示全部者的字段并又一次插入新的K-V。 |
| copyFromLocal | 從本地文件系統中拷貝文件,和put命令相似。 | 操作流程參見put接口。 |
| copToLocal | 將文件拷貝到本地文件系統。和get命令類似。 | 操作流程參見get接口。 |
| count | 顯示由路徑確定的子文件夾的個數,文件個數,使用字節個數。以及全部的文件文件夾名。 | (1)解析到目標路徑,獲取相關的key/value; (2)獲取value中的子文件夾個數,文件個數,使用字符串等相關信息的字段。 |
| cp | 將文件從源路徑拷貝到目標路徑。這個命令同意有多個原路徑,此時目標路徑必須是一個文件夾。 | (1)依據上述章節所述,逐層解析<dest>,獲取目標文件的位置信息; (2)獲取源文件的內容; (3)逐塊復制源文件信息到目標文件其中。 |
| du | 顯示文件大小。假設path是一個文件夾,則顯示該文件夾中全部文件的大小。 | (1)依照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名稱或文件夾; (2)假設是文件讀取對應的key/value中,讀取value中表示文件大小的字段。假設是文件夾則讀取標記,遞歸的查詢屬于該文件夾下的全部文件。 |
| dus | 顯示文件的大小,可是當作用于文件夾時,會顯示文件大小之和。 | (1)依照上述機制,在Config server上的存儲引擎中逐層讀取K-V,直到獲得文件名稱或文件夾。 (2)假設是文件讀取對應的key/value中。讀取value中表示文件大小的字段,假設是文件夾則讀取標記,遞歸的查詢屬于該文件夾下的全部文件value信息,將value中關于文件大小的字段信息相加取和。 |
| expunge | 清空回收站。 | (1)依照上述機制,解析到HDFS系統回收站文件夾下(/user/username/.Trash/current); (2)刪除(參考接口rm)。 |
| getfacl | 顯示文件和文件夾的訪問控制列表。 | (1)依照上述章節所述。逐層解析,獲取目標文件或路徑的key/value數據。 (2)獲取value中有關的ACL的字段信息。 |
| getmerge | 獲取由源文件夾指定的全部文件。將它們合并為單個文件并寫入本地文件系統中的LOCALDST。 | (1)依照上述機制。逐層解析,獲取源文件夾文件的標記; (2)依據標記。在config server中尋找文件夾文件下的子文件; (3)創建目標文件,將子文件的內容依次合并到目標文件其中; (4)將目標文件寫入本地文件系統。 |
| ls | 列出文件夾及文件信息。 | (1)依照上述機制,逐層解析獲取到目標文件或者目錄的標記。 (2)依據標記查詢子文件夾或者文件相關信息; (3)列出信息。 |
| lsr | 循環列出文件夾。子文件夾及文件信息。 | 操作流程參見參照ls接口。 |
| moveFromLocal | 類似于put,僅僅是本地的源在復制之后會被刪除。 | (1)依照上述章節所述,逐層解析<dst>絕對路徑,獲取目標目錄的key/value數據; (2)依據章節所述規則,結合目標目錄的標號和源文件的文件名稱生成相應的key/value; (3)依據步驟(2)生成的key/value上傳源文件的相關信息; (4)上傳源文件內容到系統中; (5)刪除本地源文件。 |
| moveToLocal | 于get命令類似。 | 操作流程參見get接口。 |
| mv | 移動文件從源地址到目標地址。 | (1)依照上述機制,逐層解析<dest>絕對路徑獲取目標目錄的標號。 (2)逐層解析到源文件獲取源文件的key/value數據; (3)更改源文件里的key值將當中的父節點標號字段改為目標目錄的標號。 |
| rmr | 遞歸刪除指定文件和文件夾。 | (1)依照上述機制。逐層解析到目標文件所在的位置獲取指定文件的標記; (2)採用遞歸算法依據標記刪除指定的文件或文件夾。 |
| setfacl | 設置訪問控制列表(acl)的文件和文件夾。 | (1)依照上述機制,逐層解析。獲取目標文件或路徑的key/value數據; (2)設置value中的ACL。 |
| setrep | 改變文件的目標副本系數。 | (1)依照上述章節所述,逐層解析。獲取目標文件的key/value數據。 (2)改動value中有關副本系數的字段。 |
| stat | 顯示文件里的統計信息。 | (1)依照上述章節所述,逐層解析。獲取目標文件的key/value數據; (2)獲取value中關于文件的統計信息的相關字段。
|
| tail | 顯示目標文件里的最后1KB數據。 | (1)依照上述章節所述,逐層解析,獲取目標文件的key/value數據。 (2)依據所得到的key/value查詢最后一塊中的1KB信息,假設最后一塊不足1KB,則查詢倒數第二塊中信息,拼接成1KB。返回信息。 |
| test | 對路徑進行檢查。 | (1)依照上述章節所述。對目標路徑逐層解析,獲取目標文件的key/value數據。 (2)檢查目標文件里的key/value中的相關字段。以檢測文件是否存在。大小是否為0,文件夾路徑是否存在。 |
| text | 顯示文件的文本內容,當文件為文本文件時,等同于cat。文件為壓縮格式時,會先解壓縮。 | 操作流程參見cat接口。 |
| touchz | 創建長度為0的文件。 | 操作流程參見mkdir接口。 |
總結
以上是生活随笔為你收集整理的基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: exchange2013 owa-out
- 下一篇: 【Python】猜数小游戏(文件操作)