hdfs mv命令 如何HDFS mv命令工作

2021-10-12 14:41:56 字數 1077 閱讀 2367

當使用者呼叫hdfs dfs -mv時,hdfs保證重新命名操作的原子性。當此命令執行時,客戶端對namenode進行rpc呼叫。該rpc的namenode實現在修改inode樹時儲存鎖定,並且只有在重新命名完成後才釋放該鎖定,無論是成功還是失敗。 (它可能失敗之類的東西許可或者違反配額。)

由於實施的namenode內完全執行,僅操縱檔案系統元資料,不涉及實際的資料移動。實際上在hdfs dfs -mv命令期間沒有與datanode進行互動。所有檔案的塊保持不變,與inode相關聯的塊列表保持不變。 namenode只是從乙個地方獲取該檔案的inode,並將其移至檔案系統樹中的另乙個地方。不存在破壞塊資料的可能性。

由於namenode會提供有保證的原子實現重新命名的,也沒有元資料損壞的機率。不可能以「半完成」狀態結束,檔案在這兩個地方都存在,甚至更糟的是完全被刪除。

現在我需要新增上述回答了微妙的變化。大多數情況下,當執行hdfs shell命令時,通常與hdfs互動作為後備檔案系統。但是,這不是唯一可能的檔案系統實現。 apache hadoop發行版附帶s3,azure storage和openstack swift的替代檔案系統外掛程式。還有很多供應商已經建立了自己的檔案系統外掛程式。這些替代檔案系統是否提供原子重新命名語義是這些其他檔案系統的實現細節。 s3和swift外掛程式實現重新命名為複製 - 然後刪除,所以它們絕對不提供原子性保證。 azure儲存外掛程式通過使用azure儲存blob租約提供了對原子重新命名的一些可選支援,但它不是預設行為。

而且,這樣做的結果,這是不可能的執行hdfs dfs -mv跨越不同的檔案系統。您必須為此使用複製命令,然後它將涉及完整的資料副本。以下是當您嘗試跨檔案系統進行重新命名時發生的情況。該示例嘗試為我的hdfs安裝中的原始檔和本地檔案系統上的目標執行hdfs dfs -mv。該命令被拒絕。

> hdfs dfs -mv hdfs:///testdata file:///tmp/testdata

mv: `hdfs:///testdata': does not match target filesystem

問題的最後部分詢問複製時是否可能損壞資料。 hadoop將在讀取檔案時執行校驗和驗證,所以客戶端不會看到損壞的資料。 distcp也可以執行源和目標之間的校驗和比較作為後處理步驟。

hdfs mv命令 HDFS fs常用操作命令彙總

cat命令 檢視檔案所有行的資料 hadoop fs cat filename 檢視總行數 hadoop fs cat filename wc l 檢視.gz檔案 hadoop fs cat filename zcat 按空格 翻頁檢視 hadoop fs cat filename more 檢視從...

如何理解xargs命令

比如這個命令。hello 可以作為 mkdir 的輸入,但是卻不是它的引數,所以執行命令,會提示mkdir 沒有引數。echo hello mkdir而如果換成這個命令,則可以成功建立hello 資料夾,因為 hello 從輸入變成了mkdir的引數。echo hello xargs mkdir當然...

如何編寫who命令

總結自書 unix linux程式設計實踐教程 1.輸入命令 顯示使用者名稱 終端名 登入時間等資訊 2.閱讀手冊 man who name 命令名以及命令的簡短說明 synopsys 概要 命令格式 description 命令功能的詳細闡述以及引數選項 1.閱讀手冊 了解到與utmp檔案有關 w...