1. hadoop檔案系統許可權簡介
2.命令簡介
3. 參考資料
<1>. hadoop檔案系統許可權簡介
hadoop檔案系統實現的檔案許可權模型和posix模型極其類似。每個檔案和目錄和一個owner和group相關聯。可以使用下面的命令來查看/tmp/目錄下的所有檔案及其許可權:
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -ls /tmp/11/05/10 06:42:56 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=30000011/05/10 06:42:56 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.idFound 2 itemsdrwxr-xr-x - root supergroup 0 2011-05-10 05:36 /tmp/hadoop-root-rw-r--r-- 3 xuqiang supergroup 541 2011-05-10 06:14 /tmp/hello.c
其中對於檔案而言,r表明的是讀取該檔案的許可權,w是寫該檔案的許可權;對於目錄而言的話,r許可權表明的是能夠讀取該目錄下的檔案清單,w許可權表明的是能夠在目錄下建立或者是刪除檔案和目錄,x許可權表示能夠從該目錄進入其子目錄中。和posix模型不同的是,在hdfs中是不存在所謂的sticky,setuid和setgid。
<2>. 命令簡介
hdfs設計之處的主要目的是對海量資料進行處理,也就是說在其上能夠儲存很大量檔案(可以儲存TB級的檔案),hdfs將這些檔案分割之後,儲存在不同的DataNode上,但是對外卻提供了一個簡單的事實:
這還是個簡單完整的檔案,只不過這個檔案比較大。
hdfs處理檔案的命令和linux上命令基本上是相同的,鍵入./bin/hadoop fs將輸出能夠支援的命令的列表:
Usage: java FsShell [-ls <path>] [-lsr <path>] [-df [<path>]] [-du [-s] [-h] <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]]
如果熟悉linux的話,這些命令基本上就不怎麼需要解釋了。 但是下面還是列出了幾個常用情境下的命令:
1. 增加檔案和目錄
hdfs上的檔案的目錄結構同樣也是類似於linux的,根目錄使用/表示。下面的命令將在根目錄下建立目錄newdir:
./bin/hadoop fs -mkdir /newdir
ls查看一下:
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -ls /
11/06/01 18:04:11 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=30000011/06/01 18:04:11 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.idFound 3 itemsdrwxr-xr-x - xuqiang supergroup 0 2011-06-01 17:31 /jobtrackerdrwxr-xr-x - xuqiang supergroup 0 2011-06-01 18:04 /newdirdrwxr-xr-x - xuqiang supergroup 0 2011-06-01 17:31 /tmp既然已經有了這個目錄,那麼我們接著將一個本地檔案local file上傳到hdfs上。
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -put ./README.txt .
這裡需要注意的是.代表的含義,在hdfs中對於每個登入的使用者都會存在一個預設的工作目錄/user/$LOGINNAME(類似於linux下的home目錄),.代表的就是這個預設工作目錄。
2. 下載檔案
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -get /user/xuqiang/README.txt3. 刪除檔案xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -rm /user/xuqiang/README.txt4. 協助命令xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -help ls
<3>. 參考資料
http://hadoop.apache.org/common/docs/r0.18.3/hdfs_permissions_guide.html
<<Hadoop In Action>>