目錄
?
HDFS的基礎(chǔ)架構(gòu)
VMware虛擬機部署HDFS集群
HDFS集群啟停命令
HDFS Shell操作
hadoop 命令體系:
創(chuàng)建文件夾 -mkdir
?查看目錄內(nèi)容 -ls
?上傳文件到hdfs -put
查看HDFS文件內(nèi)容 -cat
下載HDFS文件 -get
復(fù)制HDFS文件 -cp
追加數(shù)據(jù)到HDFS文件中 -appendToFile
HDFS文件移動 -mv
?刪除HDFS文件 -rm
?HDFS存儲原理
存儲原理
?修改副本數(shù)量
fsck檢查文件副本狀態(tài)
NameNode元數(shù)據(jù)
edits和fsimage文件
元數(shù)據(jù)合并參數(shù)
?SecondaryNameNode的作用
HDFS數(shù)據(jù)的讀寫請求
HDFS的基礎(chǔ)架構(gòu)
Hadoop由三個部分組成,分別是HDFS、MapReduce和yarn:
HDFS由三個角色,主角色、從角色、主角色輔助角色:
NameNode:
- HDFS系統(tǒng)的主角色,是一個獨立的進程
- 負責管理HDFS整個文件系統(tǒng)
- 負責管理DataNode
SecondaryNameNode:
- NameNode的輔助,是一個獨立進程
- 主要幫助NameNode完成元數(shù)據(jù)整理工作
DataNode:
- HDFS系統(tǒng)的從角色,是一個獨立進程
- 主要負責數(shù)據(jù)的存儲,即存入數(shù)據(jù)和取出數(shù)據(jù)
VMware虛擬機部署HDFS集群
第二章-04-[實操]VMware虛擬機部署HDFS集群_嗶哩嗶哩_bilibili
HDFS集群啟停命令
執(zhí)行原理:
執(zhí)行原理:
? ? ? $HADOOP_HOME/sbin/hadoop-daemon.sh,此腳本可以單獨控制所在機器的進程的啟停
用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
或者?hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
HDFS Shell操作
hadoop 命令體系:
hadoop fs [generic options]? 或者 hdfs dfs? [generic options]
沒有任何區(qū)別
創(chuàng)建文件夾 -mkdir
hdfs dfs -mkdir [-p] <path>
?查看目錄內(nèi)容 -ls
清測-ll等是不可行的?
hdfs dfs -ls [-h] [-R] [<path> ...]
? -h 人性化顯示文件???-R 遞歸查看指定目錄及其子目錄
?上傳文件到hdfs -put
hdfs dfs -put [-f] [-p] <localsrc> ... <dst>
- -f 覆蓋目標文件(已存在下)
- -p 保留訪問和修改時間,所有權(quán)和權(quán)限
- ? localsrc 本地文件系統(tǒng)(客戶端所在機器)
- ? dst 目標文件系統(tǒng)(HDFS)
-
查看HDFS文件內(nèi)容 -cat
-
hdfs dfs -cat <src> ...
當文件很大時,可以配合more翻頁
-
hdfs dfs -cat <src> | more
下載HDFS文件 -get
-
hdfs dfs -get [-f] [-p] <src> ... <localdst>
下載文件到本地文件系統(tǒng)指定目錄,localdst必須是目錄
??????? -f 覆蓋目標文件(已存在下)
??????? -p 保留訪問和修改時間,所有權(quán)和權(quán)限。
-
復(fù)制HDFS文件 -cp
-
hdfs dfs -cp [-f] <src> ... <dst>
src和dst都只能是hdfs的文件路徑
-
追加數(shù)據(jù)到HDFS文件中 -appendToFile
-
HDFS的文件修改只支持追加和刪除
-
hdfs dfs -appendToFile <localsrc> ... <dst>
將localsrc的內(nèi)容追加到dst
-
HDFS文件移動 -mv
-
hdfs dfs -mv <src> ... <dst>
??????? 移動文件到指定文件夾下,可以使用該命令移動數(shù)據(jù),重命名文件的名稱
-
?刪除HDFS文件 -rm
-
hdfs dfs -rm -r [-skipTrash] URI [URI ...]
刪除指定路徑的文件或文件夾? ? ? -skipTrash 跳過回收站,直接刪除
-
回收站功能默認關(guān)閉,如果要開啟需要在core-site.xml內(nèi)配置:
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value>
</property>
無需重啟集群,在哪個機器配置的,在哪個機器執(zhí)行命令就生效。
回收站默認位置在:/user/用戶名(hadoop)/.Trash
-
其他的一些用法跟linux里面是基本一致的
-
?HDFS存儲原理
-
存儲原理
- 將每個文件分成n(n個服務(wù)器)份,每一份又分成m個block(Block塊,HDFS最小存儲單位,每個256MB(可以修改))
- 分成block的目的是統(tǒng)一hdfs的存儲單元,便于管理
-
但是這樣如果丟了一個block,那么整個文件都會失效,那么 使用備份解決
將每個block備份n份,放入不同的服務(wù)器
?修改副本數(shù)量
可以在hdfs-site.xml中配置屬性以設(shè)置默認文件上傳到HDFS中擁有的副本數(shù)量:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
一般不需要設(shè)置,默認是3
除了配置文件外,我們還可以在上傳文件的時候,臨時決定被上傳文件以多少個副本存儲。
hadoop fs -D dfs.replication=2 -put test.txt /tmp/
如上命令,就可以在上傳test.txt的時候,臨時設(shè)置其副本數(shù)為2
對于已經(jīng)存在HDFS的文件,修改dfs.replication屬性不會生效,如果要修改已存在文件可以通過命令
hadoop fs -setrep [-R] 2 path
如上命令,指定path的內(nèi)容將會被修改為2個副本存儲。-R選項可選,使用-R表示對子目錄也生效。
fsck檢查文件副本狀態(tài)
hdfs fsck path [-files [-blocks [-locations]]]
fsck可以檢查指定路徑是否正常
- -files可以列出路徑內(nèi)的文件狀態(tài)
- -files -blocks? 輸出文件塊報告(有幾個塊,多少副本)
- -files -blocks -locations 輸出每一個block的詳情
?
紅色線表示副本數(shù)量(這里是總的數(shù)量,也就是總共3個block)?
藍色的是三個block存放的位置,可以看到是存放在了三個不同的服務(wù)器
0:hdfs系統(tǒng)的狀態(tài)? 1:有多少個副本? 2:丟失了多少blocks
NameNode元數(shù)據(jù)
edits和fsimage文件
Hadoop是通過NameNode來記錄和整理文件和block的關(guān)系
NameNode基于一批edits和一個fsimage文件的配合完成整個文件系統(tǒng)的管理和維護
edits文件,是一個流水賬文件,記錄了hdfs中的每一次操作,以及本次操作影響的文件其對應(yīng)的block,會有多個edits文件
將全部的edits文件,合并為最終結(jié)果,即可得到一個Fsimage文件
對于存放的位置,在hdfs-site.xml文件中,配置了
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
那么此處的edits和fsimage就存放在了data/nn文件夾下的current文件夾
元數(shù)據(jù)合并參數(shù)
對于元數(shù)據(jù)合并成fsimage,是一個定時過程,基于兩個參數(shù)
dfs.namenode.checkpoint.period,默認3600(秒)即1小時
dfs.namenode.checkpoint.txns,默認1000000,即100W次事務(wù)
只需要達到一個條件就需要合并
默認60秒檢查一次是否符合條件,基于
dfs.namenode.checkpoint.check.period,默認60(秒),來決定
?SecondaryNameNode的作用
SecondaryNameNode會通過http從NameNode拉取數(shù)據(jù)(edits和fsimage)然后合并完成后提供給NameNode使用文章來源:http://www.zghlxwxcb.cn/news/detail-699356.html
HDFS數(shù)據(jù)的讀寫請求
數(shù)據(jù)寫入流程文章來源地址http://www.zghlxwxcb.cn/news/detail-699356.html
- 1. 客戶端向NameNode發(fā)起請求
- 2. NameNode審核權(quán)限、剩余空間后,滿足條件允許寫入,并告知客戶端寫入的DataNode地址(一般來說會分配網(wǎng)絡(luò)距離最近的datanode)
- 3. 客戶端向指定的DataNode發(fā)送數(shù)據(jù)包
- 4. 被寫入數(shù)據(jù)的DataNode同時完成數(shù)據(jù)副本的復(fù)制工作,將其接收的數(shù)據(jù)分發(fā)給其它DataNode
- 5. 寫入完成客戶端通知NameNode,NameNode做元數(shù)據(jù)記錄工作
- 數(shù)據(jù)讀取流程
- 1、客戶端向NameNode申請讀取某文件
- 2、 NameNode判斷客戶端權(quán)限等細節(jié)后,允許讀取,并返回此文件的block列表
- 3、客戶端拿到block列表后自行尋找DataNode讀取即可(會去找最近的datanode)
到了這里,關(guān)于Hadoop:HDFS--分布式文件存儲系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!