HDFS 常用操作分類匯總整理
1、HDFS文件的權限以及讀寫操作
HDFS文件的權限:
- 與Linux文件權限類似
- r: read; w:write; x:execute,權限x對于文件忽略,對于文件夾表示是否允許訪問其內容
- 如果Linux系統用戶zhangsan使用hadoop命令創建一個文件,那么這個文件在HDFS中owner就是zhangsan
- HDFS的權限目的:阻止好人錯錯事,而不是阻止壞人做壞事。HDFS相信,你告訴我你是誰,我就認為你是誰
HDFS文件的讀取:
HDFS文件的寫入:
HDFS文件存儲:
兩個文件,一個文件156M,一個文件128在HDFS里面怎么存儲?
–Block為64MB
–rapliction默認拷貝3份
HDFS文件存儲結構:
#p#
2、HDFS下的文件操作
(1)列出HDFS文件
通過“-ls”命令列出HDFS下的文件
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -ls
(2)列出HDFS目錄下某個文檔中的文件
此處展示的是“-ls 文件名”命令瀏覽HDFS下名為in的文檔中的文件
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -ls in
(3)上傳文件到HDFS
此處展示的是“-put 文件1 文件2”命令將hadoop-0.20.2目錄下的test1文件上傳到HDFS上并重命名為test
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -put test1 test
注意:在執行“-put”時只有兩種可能,即是執行成功和執行失敗。在上傳文件時,文件首先復制到DataNode上,只有所有的DataNode都成功接收完數據,文件上傳才是成功的。
(4)將HDFS中的文件復制到本地系統中
此處展示的是“-get 文件1 文件2”命令將HDFS中的in文件復制到本地系統并命名為getin:
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -get in getin
(5)刪除HDFS下的文檔
此處展示的是“-rmr 文件”命令刪除HDFS下名為out的文檔:
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -rmr out
執行命令后,查看只剩下一個in文件,刪除成功:
(6)查看HDFS下的某個文件
此處展示的是“-cat 文件”命令查看HDFS下in文件中的內容:
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfs -cat in/*
輸出:
- hello world
- hello hadoop
PS:bin/hadoop dfs 的命令遠不止這些,但是本文的這些命令很實用,對于其他的操作,可以通過“-help commandName”命令所列出的清單來進一步的學習
#p#
3、管理與更新
(1)報告HDFS的基本統計信息
通過“-report”命令查看HDFS的基本統計信息
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfsadmin -report
執行結果如下所示:
- 14/12/02 05:19:05 WARN conf.Configuration: DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively
- Configured Capacity: 19945680896 (18.58 GB)
- Present Capacity: 13558165504 (12.63 GB)
- DFS Remaining: 13558099968 (12.63 GB)
- DFS Used: 65536 (64 KB)
- DFS Used%: 0%
- Under replicated blocks: 1
- Blocks with corrupt replicas: 0
- Missing blocks: 0
- ————————————————-
- Datanodes available: 1 (1 total, 0 dead)
- Name: 127.0.0.1:50010
- Decommission Status : Normal
- Configured Capacity: 19945680896 (18.58 GB)
- DFS Used: 65536 (64 KB)
- Non DFS Used: 6387515392 (5.95 GB)
- DFS Remaining: 13558099968(12.63 GB)
- DFS Used%: 0%
- DFS Remaining%: 67.98%
- Last contact: Tue Dec 02 05:19:04 PST 2014
(2)退出安全模式
NameNode在啟動時會自動進入安全模式。安全模式是NameNode的一種狀態,在這個階段,文件系統不允許有任何的修改。安全模式的目的是在系統啟動時檢查各個DataNode
上數據塊的有效性,同時根據策略對數據塊進行必要的復制和刪除,當數據塊的最小百分比數滿足配置的最小副本數條件時,會自動退出安全模式。
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfsadmin -safemode leave
(3)進入安全模式
- wu@ubuntu:~/opt/hadoop-0.20.2$ bin/hadoop dfsadmin -safemode enter
(4)添加節點
可擴展性是HDFS的一個重要的特性,向HDFS集群中添加節點是很容易實現的。添加一個新的DataNode節點,首先在新加的節點上安裝好hadoop,要和NameNode使用相同的配置,修改HADOOP_HOME/conf/master文件,加入NameNode主機名。然后在NameNode節點上修改HADOOP_HOME/conf/slaves文件,加入新節點主機名。再建立到新節點無密碼SSH連接,運行啟動命令:
$ bin/start-all.sh
通過http://(主機名):50070可查看到新的DataNode節點添加成功
(5)負載均衡
用戶可以使用下面的命令來重新平衡DataNode上的數據塊的分布:
$ bin/start-balancer.sh
參考資料
《實戰Hadop:開啟通向云計算的捷徑.劉鵬》