HDFS經常使用文件操做命令及注意事項

HDFS 文件操做命令html

    HDFS 文件系統提供了至關多的shell 操做命令,大大方便了程序員和系統管理人員查看、修改HDFS 上的文件。進一步,HDFS 的操做命令和Unix/Linux 的命令名稱和格式至關一致,於是學習HDFS 命令的成本也大爲縮小。node

    HDFS 的基本命令格式以下:程序員

    bin/hadoop dfs–cmd <args>web

    這裏cmd 就是具體的命令,記住cmd 前面的短線「–」千萬不要忽略。shell

    1.ls安全

    hadoop fs -ls / 
    列出hdfs文件系統根目錄下的目錄和文件tcp

    hadoop fs -ls -R / 
    列出hdfs文件系統全部的目錄和文件oop

    2.put學習

    hadoop fs -put < local file > < hdfs file > 
    hdfs file的父目錄必定要存在,不然命令不會執行spa

    hadoop fs -put < local file or dir >…< hdfs dir > 
    hdfs dir 必定要存在,不然命令不會執行

    hadoop fs -put - < hdsf file> 
    從鍵盤讀取輸入到hdfs file中,按Ctrl+D結束輸入,hdfs file不能存在,不然命令不會執行

    2.1.moveFromLocal

    hadoop fs -moveFromLocal < local src > … < hdfs dst > 
    與put相相似,命令執行後源文件 local src 被刪除,也能夠從從鍵盤讀取輸入到hdfs file中

    2.2.copyFromLocal

    hadoop fs -copyFromLocal < local src > … < hdfs dst > 
    與put相相似,也能夠從從鍵盤讀取輸入到hdfs file中

    3.get

    hadoop fs -get < hdfs file > < local file or dir> 
    local file不能和 hdfs file名字不能相同,不然會提示文件已存在,沒有重名的文件會複製到本地

    hadoop fs -get < hdfs file or dir > … < local dir > 
    拷貝多個文件或目錄到本地時,本地要爲文件夾路徑 
    注意:若是用戶不是root, local 路徑要爲用戶文件夾下的路徑,不然會出現權限問題,

    3.1.moveToLocal

    當前版本中還未實現此命令

    3.2.copyToLocal

    hadoop fs -copyToLocal < local src > … < hdfs dst > 
    與get相相似

    4.rm

    hadoop fs -rm < hdfs file > … 
    hadoop fs -rm -r < hdfs dir>… 
    每次能夠刪除多個文件或目錄

    5.mkdir

    hadoop fs -mkdir < hdfs path> 
    只能一級一級的建目錄,父目錄不存在的話使用這個命令會報錯

    hadoop fs -mkdir -p < hdfs path> 
    所建立的目錄若是父目錄不存在就建立該父目錄

    6.getmerge

    hadoop fs -getmerge < hdfs dir > < local file > 
    將hdfs指定目錄下全部文件排序後合併到local指定的文件中,文件不存在時會自動建立,文件存在時會覆蓋裏面的內容

    hadoop fs -getmerge -nl < hdfs dir > < local file > 
    加上nl後,合併到local file中的hdfs文件之間會空出一行

    7.cp

    hadoop fs -cp < hdfs file > < hdfs file > 
    目標文件不能存在,不然命令不能執行,至關於給文件重命名並保存,源文件還存在

    hadoop fs -cp < hdfs file or dir >… < hdfs dir > 
    目標文件夾要存在,不然命令不能執行

    8.mv

    hadoop fs -mv < hdfs file > < hdfs file > 
    目標文件不能存在,不然命令不能執行,至關於給文件重命名並保存,源文件不存在

    hadoop fs -mv < hdfs file or dir >… < hdfs dir > 
    源路徑有多個時,目標路徑必須爲目錄,且必須存在。 
    注意:跨文件系統的移動(local到hdfs或者反過來)都是不容許的

    9.count

    hadoop fs -count < hdfs path > 
    統計hdfs對應路徑下的目錄個數,文件個數,文件總計大小 
    顯示爲目錄個數,文件個數,文件總計大小,輸入路徑

     10.du

    hadoop fs -du < hdsf path> 
    顯示hdfs對應路徑下每一個文件夾和文件的大小

    hadoop fs -du -s < hdsf path> 
    顯示hdfs對應路徑下全部文件和的大小

    hadoop fs -du - h < hdsf path> 
    顯示hdfs對應路徑下每一個文件夾和文件的大小,文件的大小用方便閱讀的形式表示,例如用64M代替    67108864

    11.text

    hadoop fs -text < hdsf file> 
    將文本文件或某些格式的非文本文件經過文本格式輸出

    12.setrep

    hadoop fs -setrep -R 3 < hdfs path > 
    改變一個文件在hdfs中的副本個數,上述命令中數字3爲所設置的副本個數,-R選項能夠對一我的目錄下的全部目錄+文件遞歸執行改變副本個數的操做

    13.stat

    hdoop fs -stat [format] < hdfs path > 
    返回對應路徑的狀態信息 
    [format]可選參數有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本個數),%y(最後一次修改日期和時間) 
    能夠這樣書寫hadoop fs -stat %b%o%n < hdfs path >,不過不建議,這樣每一個字符輸出的結果不是太容易分清楚

    14.tail

    hadoop fs -tail < hdfs file > 
    在標準輸出中顯示文件末尾的1KB數據

    15.archive

    hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst > 
命令中參數name:壓縮文件名,本身任意取;< hdfs parent dir > :壓縮文件所在的父目錄;< src >*:要壓縮的文件名;< hdfs dst >:壓縮文件存放路徑 
    示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des 
示例中將hdfs中/user目錄下的文件1.txt,2.txt壓縮成一個名叫hadoop.har的文件存放在hdfs中/des目錄下,若是1.txt,2.txt不寫就是將/user目錄下全部的目錄和文件壓縮成一個名叫hadoop.har的文件存放在hdfs中/des目錄下 
    顯示har的內容能夠用以下命令: 
hadoop fs -ls /des/hadoop.jar

    顯示har壓縮的是那些文件能夠用以下命令

    hadoop fs -ls -R har:///des/hadoop.har 
    **注意:**har文件不能進行二次壓縮。若是想給.har加文件,只能找到原來的文件,從新建立一個。har文件中原來文件的數據並無變化,har文件真正的做用是減小NameNode和DataNode過多的空間浪費。

    16.balancer

    hdfs balancer 
    若是管理員發現某些DataNode保存數據過多,某些DataNode保存數據相對較少,可使用上述命令手動啓動內部的均衡過程

    17.dfsadmin

    hdfs dfsadmin -help 
    管理員能夠經過dfsadmin管理HDFS,用法能夠經過上述命令查看

    hdfs dfsadmin -report 
    顯示文件系統的基本數據

    hdfs dfsadmin -safemode < enter | leave | get | wait > 
    enter:進入安全模式;leave:離開安全模式;get:獲知是否開啓安全模式; 
    wait:等待離開安全模式

    18.distcp

    用來在兩個HDFS之間拷貝數據

注意事項

    部分命令(如mkdir 等)須要文件\ 目錄名做爲參數,參數通常都是URI 格式,args 參數的基本格式是:scheme:// authority/path

    scheme 指具體的文件系統,若是是本地文件,那麼scheme 就是file ;若是是HDFS 上的文件,那麼scheme 就是hdfs。authority 就是機器的地址和對應的端口。固然,正如Linux文件有絕對路徑和相對路徑同樣,這裏的URI 參數也能夠作必定程度省略。當對應的設置爲hdfs://namenode:namenodeport 時,若是路徑參數爲/parent/child,那麼它對應的實際文件爲:hdfs://namenode:namenodeport/parent/child

    可是有一點要注意,HDFS 沒有所謂當前工做目錄的概念。前面說過,HDFS 全部文件元數據都是存在NameNode 節點上的,具體文件的存放由NameNode 掌控,某一個文件可能被分拆放到不一樣的機器上,也可能爲了提升效率將路徑不一樣的文件也放到同一臺機器上。因此,爲HDFS 提供cd、pwd 操做,都是不現實的。

  

    本文來自 >> 尚學堂; 轉載請註明:http://www.sxt.cn/u/13421/blog/8879

相關文章
相關標籤/搜索