HDFS是設(shè)計成一次寫入,多次讀取的場景飘弧,且不支持文件的修改
HDFS通常 位于 /hadoop-2.6.4/temp/dfs目錄下
修改時間統(tǒng)一
date -s "2017-03-15 20:14:00"
namenode
目錄結(jié)構(gòu)及文件分塊位置的信息(元數(shù)據(jù))的管理
datanode
文件的各個block的存儲管理
shell命令操作
統(tǒng)一: ? ? ? hadoop fs ? ?
-ls:顯示目錄信息 ? ? ? hadoop fs -ls / ? ? ? ? ? ?顯示根目錄信息
-mkdir (-p多級目錄):創(chuàng)建目錄 ? ? ? ?hadoop fs -mkdir /bbb ? ? ?根目錄上創(chuàng)建一個bbb的文件夾
-moveFromLocal:從本地剪貼到hdfs上 ? hadoop fs -moveFromlocal /root/app/a.txt(本地路徑) /a(服務(wù)器路徑)
-moveToLocal:從服務(wù)器剪貼到本地 ? ?hadoop fs -moveToLocal /aa/bb/1.txt服務(wù)器路徑) /root/aaa(本地路徑)?
-appendToFile:追加一個文件到已經(jīng)存在的文件末尾 hadoop fs -appendToFile /a.txt(本地路徑) /b.txt(服務(wù)器路徑)
-copyFromLocal:從本地拷貝
-copyToLocal:從服務(wù)器拷貝
-cat:顯示文件內(nèi)容 ?hadoop fs -cat /aaa/bbb/hellow.txt
-tail:顯示一個文件的末尾 hadoop fs -tail /aaa/bbb/hellow.txt
-text:以字符形式打印一個文件內(nèi)容 ? hadoop fs -text /aaa/bbb/hellow.txt
-chmod:更改文件權(quán)限 ? hadoop fs -chmod 666 /aaa/bbb/a.txt
-chown:更改所屬組 ? ? ?hadoop fs -chown someuse:someGroup /aaa/bb/a.txt
-cp:從hdfs的一個路徑拷貝到hdfs的另一個路徑 ?hadoop fs -cp /aaa/bbb/a.txt /aaa/ccc/c.txt
-mv:hdfs路徑上的剪貼
-get:等同于 -copyToLocal
-put:等同于 -copyFromLocal
-rm:刪除 ?hadoop fs -rm -r /aaa/bbb
-df:統(tǒng)計文件系統(tǒng)的可用空間信息 ? hadoop fs -df -h /
-du:統(tǒng)計文件夾的大小信息 ? hadoop fs -du /aaa
-count:統(tǒng)計指定目錄下文件節(jié)點的數(shù)量個數(shù) hadoop fs -count /aaa
-setrep:設(shè)置hdfs中文件的副本數(shù)量 ? hadoop fs -setrep 3 /aaa/jdk.tar.gz ?(注意這個命令不是立即執(zhí)行的)
可以查看官網(wǎng)APIhadoop.apache.org/docs/r2.6.5/
hdfs dfsadmin -report ? ?查看hdfs集群的工作狀態(tài)榄笙、
HDFS寫入數(shù)據(jù)流程
1.HDFS客戶端向namdenode請求邪狞,namenode會檢測目錄樹中是否存在一樣的結(jié)構(gòu)樹
2.namenode檢測完結(jié)構(gòu)樹中是否存在相同的結(jié)構(gòu)樹,就會通知HDFS客戶端是否可以上傳文件
3.可以上傳文件就跟namenode通知需要上傳文件,
4.HDFS客戶端上傳文件
5.namenode就會查詢datanode信息池中挑選可用的節(jié)點以供上傳(根據(jù)就近原則 a.首先就近挑選一臺機器 b.優(yōu)先選擇另一個機架上的namenode c.本機架在挑選一臺)
6.服務(wù)端返回可用的datanode給HDFS客戶端(d1,d2,d3有備份)
7.HDFS客戶端向datanode發(fā)出數(shù)據(jù)請求建立pipline的請求
8.datanode1向datanode2茅撞,datanode2又向datanode3建立pipline請求帆卓。
9.piplien請求建立好通知HDFS客戶端巨朦。
10,客戶端將文件分成每個小包,通過socketStream進行數(shù)據(jù)傳輸
11.datanode1創(chuàng)建目錄存儲數(shù)據(jù)剑令。
12.然后將備份至datanode2糊啡,datanode3
13.通知HDFS客戶端一個小包傳輸完畢,進行下一個小包的傳輸吁津。
HDFS讀取數(shù)據(jù)
1.與namenode通信查詢元數(shù)據(jù)悔橄,找到文件所在的datanode服務(wù)。namenode返回文件信息
2.挑選一臺datanode(就近原則腺毫,然后隨機)服務(wù)器癣疟,請求建立socket流
3.datanode開始發(fā)送數(shù)據(jù)(從磁盤中讀取數(shù)據(jù)放入流中,以packet為單位來校驗)
4.客戶端以packet為單位接收潮酒,先在本地緩存睛挚,然后寫入目標(biāo)文件
NAMENODE職責(zé)
負責(zé)客戶端的請求與響應(yīng)
元數(shù)據(jù)的管理(查詢,修改)