標籤:style http ar color 使用 sp for java on
本文發表於本人部落格。
我們知道HDFS是Hadoop的Distributed File System,那既然是檔案系統那最起碼會有管理檔案、檔案夾之類的功能吧,這個類似我們的Windows作業系統一樣的吧,建立、修改、刪除、移動、複製、修改許可權等這些操作。 那我們現在來看看hadoop下是怎麼操作的。
先輸入hadoop fs命令,會看到如下輸出:
Usage: java FsShell [-ls <path>] [-lsr <path>] [-du <path>] [-dus <path>] [-count[-q] <path>] [-mv <src> <dst>] [-cp <src> <dst>] [-rm [-skipTrash] <path>] [-rmr [-skipTrash] <path>] [-expunge] [-put <localsrc> ... <dst>] [-copyFromLocal <localsrc> ... <dst>] [-moveFromLocal <localsrc> ... <dst>] [-get [-ignoreCrc] [-crc] <src> <localdst>] [-getmerge <src> <localdst> [addnl]] [-cat <src>] [-text <src>] [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>] [-moveToLocal [-crc] <src> <localdst>] [-mkdir <path>] [-setrep [-R] [-w] <rep> <path/file>] [-touchz <path>] [-test -[ezd] <path>] [-stat [format] <path>] [-tail [-f] <file>] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-chgrp [-R] GROUP PATH...] [-help [cmd]]
這個顯示了hadoop fs支援的命令,比如(啟動hadoop服務)在終端輸入:
hadoop fs -ls /
也可以輸入:
hadoop fs -ls hdfs://hadoop-master:9000/
如果不知道具體使用那麼我們可以使用最後的一個命令[-help [cmd]],比如查看ls命令協助輸入:
hadoop fs -help ls
那麼就會輸出便於我們查看協助:
-ls <path>: List the contents that match the specified file pattern. If path is not specified, the contents of /user/<currentUser> will be listed. Directory entries are of the form dirName (full path) <dir> and file entries are of the form fileName(full path) <r n> size where n is the number of replicas specified for the file and size is the size of the file, in bytes.
至於我們在shell下操作,我想醉常見的莫過於建立檔案夾、上傳檔案、刪除檔案檔案夾、修改許可權、查看檔案內容這幾個了,下面我來一個個說。
建立檔案夾輸入:
hadoop fs -mkdir /data
就會在根目錄建立一個data檔案夾;
可以使用下面命令查看:
hadoop fs -ls /
輸出:
Found 2 itemsdrwxr-xr-x - hadoop supergroup 0 2014-12-15 19:00 /datadrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:26 /usr
這個格式很像linux下的shell哦,drwxr-xr-x開頭的d代表的是目錄,這個跟linux誰一樣的了,第二個字元‘-’表示副本數,此時檔案夾是沒有的因為檔案夾是邏輯結構組成的,只有檔案才有值。具體說明可以參考hadoo fs -help ls。
現在上傳一個檔案至/data下,我們使用:
hadoop fs -put ./test.txt /data/
再使用下面命令查看:
hadoop fs -ls /data
輸出:
Found 1 items-rw-r--r-- 1 hadoop supergroup 33 2014-12-15 19:05 /data/test.txt
此時-rw-r--r--可以看出表示是檔案,副本數1。
那下面我們來查看一下上傳的內容是不是跟本地的一樣,我們可以使用命令:
hadoop fs -text /data/test.txt
這裡輸出不在對比了。這時我們使用了新的命令-text。查看檔案內容的命令,具體參考
hadoop fs -help text
現在我們對剛建立的/data檔案夾進行許可權修改,先看當前的許可權:
Found 2 itemsdrwxr-xr-x - hadoop supergroup 0 2014-12-15 19:05 /datadrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:26 /usr
現在我們執行下面命令,把/data檔案夾已經起下面的所有檔案夾檔案度改為777:
hadoop fs -chmod -R 777 /data
再使用下面命令查看:
hadoop fs -lsr /
結果:
drwxrwxrwx - hadoop supergroup 0 2014-12-15 19:05 /data-rw-rw-rw- 1 hadoop supergroup 33 2014-12-15 19:05 /data/test.txtdrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:26 /usrdrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:56 /usr/localdrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:56 /usr/local/hadoopdrwxr-xr-x - hadoop supergroup 0 2014-12-10 22:56 /usr/local/hadoop/tmpdrwxr-xr-x - hadoop supergroup 0 2014-12-15 18:47 /usr/local/hadoop/tmp/mapreddrwx------ - hadoop supergroup 0 2014-12-15 18:47 /usr/local/hadoop/tmp/mapred/system-rw------- 1 hadoop supergroup 4 2014-12-15 18:47 /usr/local/hadoop/tmp/mapred/system/jobtracker.info
這時候的/data的許可權已經更改了,連其檔案夾下面的檔案也更改了!不過這裡我注意到這個文字檔的話即時更改為777但是執行許可權也沒有,不知道為什麼。但是在linux是rwx的!下面我們再使用命令看看:
hadoop fs -chmod -R a+x /data
再使用:
hadoop fs -lsr /
結果就這裡不顯示了,但是還是未更改文字檔的執行許可權,還是一樣!可能真的是無法更改吧!
-rw-rw-rw- 1 hadoop supergroup 33 2014-12-15 19:05 /data/test.txt
上面幾個嘗試了,感覺就跟linux一樣了,簡單有時在調試的時候可以執行命令查看下,即將結束那就把上面建立的檔案夾刪除吧,執行:
hadoop fs -rmr /data
當然還有這個命令:
hadoop fs -rm /data/test.txt
這裡我就不說它們的區別的了,我想熟悉linxu命令的都應該知道了!
這次先到這裡。堅持記錄點點滴滴!
Hadoop HDFS的Shell操作執行個體