HDFS的體系結構和操作
HDFS fs 常用命令
1.對hdfs操作的命令格式是hadoop fs
1.1 -ls
hadoop fs -ls hdfs://chaoren:9000/ ----對HDFS的根目錄進行檢視(Linux下:ls /)
path:這個可以使用more core-site.xml進行檢視,發現裡面配置有這個path的值為hdfs://chaoren:9000。
1.2 -lsr
hadoop fs -lsr hdfs://chaoren:9000/
hadoop fs -lsr /
這兩個命令的作用是一樣的,都是查詢HDFS根目錄下的
1.3 -mkdir
hadoop fs -mkdir /d1 —建立資料夾d1
hadoop fs -ls / —驗證資料夾是否建立成功
1.4 -put <src> <des> 從linux上傳檔案到hdfs
hadoop fs -put ./core-site.xml hdfs://chaoren:9000/d1
1.5 -get 從hdfs下載檔案到linux
hadoop fs -get /d1/core-site.xml .
1.6 -text
hadoop fs -text /d1/core-site.xml
1.7 -rm
hadoop fs -rm /d1/core-site.xml
1.8 -rmr
hadoop fs -rmr /d1
2.hdfs在對資料儲存進行block劃分時,如果檔案大小超過block,那麼按照block大小進行劃分;不如block size的,劃分為一個塊,是實際資料大小。
Namenode:
1、是整個檔案系統的管理節點。它維護著整個檔案系統的檔案目錄樹,檔案/目錄的元資訊和每個檔案對應的資料塊列表。接收使用者的操作請求。
2、檔案包括:(原始碼中hdfs-site.xml的dfs.name.dir屬性)
(1)fsimage:元資料映象檔案。儲存某一時段namenode記憶體元資料資訊。
(2)edits:操作日誌檔案。
(3)fstime:儲存最近一次checkpoint的時間。
以上這些檔案都是儲存在Linux的檔案系統中。
Datanode:
提供真實檔案資料的儲存服務。
檔案塊(block):最基本的儲存單位。HDFS預設block大小是64MB。
不同於普通檔案系統的是,HDFS中,如果一個檔案小於一個數據塊的大小,並不佔用整個資料塊儲存空間,只佔用實際大小!
Replication:原始碼中hdfs-site.xml的dfs.replication屬性。多副本,預設是三個。
SecondaryNameNode:
1、HA的一個解決方案。但不支援熱配。配置即可。
2、執行過程:從namenode上下載元資料資訊(fsimage,edits),然後把二者合併,生成新的fsimage,在本地儲存,並將其推送到namenode,同時重置namenode的edits。
3、預設安裝在namenode節點上,但這樣不安全。
PermissionDenyException 許可權不足*****
錯誤:dfs.permissions的預設值是true。但是自己在用時,將其改為了false。改為了false,就不會報許可權不足的錯誤了。