微吼云上線多路互動直播服務(wù) 加速多場景互動直播落地
870
2025-03-31
HDFS是MapReduce服務(wù)中的基礎(chǔ)文件系統(tǒng),全稱為Hadoop的分布式文件系統(tǒng)(Hadoop Distributed File System),可支持實現(xiàn)大規(guī)模數(shù)據(jù)可靠的分布式讀寫。
HDFS針對的使用場景是數(shù)據(jù)讀寫具有“一次寫,多次讀”的特征,而數(shù)據(jù)“寫”操作是順序?qū)懀簿褪窃谖募?chuàng)建時的寫入或者在現(xiàn)有文件之后的添加操作。HDFS保證一個文件在一個時刻只被一個調(diào)用者執(zhí)行寫操作,而可以被多個調(diào)用者執(zhí)行讀操作。
HDFS結(jié)構(gòu)
HDFS是一個Master/Slave的架構(gòu),主要包含主、備NameNode和多個DataNode角色。在Master上運行NameNode,而在每一個Slave上運行DataNode,ZKFC需要和NameNode一起運行。
NameNode和DataNode之間的通信都是建立在TCP/IP的基礎(chǔ)之上的。NameNode、DataNode、ZKFC和JournalNode能部署在運行Linux的服務(wù)器上。
名稱
描述
NameNode
用于管理文件系統(tǒng)的命名空間、目錄結(jié)構(gòu)、元數(shù)據(jù)信息以及提供備份機制等,分為:
Active NameNode:管理文件系統(tǒng)的命名空間、維護(hù)文件系統(tǒng)的目錄結(jié)構(gòu)樹以及元數(shù)據(jù)信息;記錄寫入的每個“數(shù)據(jù)塊”與其歸屬文件的對應(yīng)關(guān)系。
Standby NameNode:與Active NameNode中的數(shù)據(jù)保持同步;隨時準(zhǔn)備在Active NameNode出現(xiàn)異常時接管其服務(wù)。
Observer NameNode:與Active NameNode中的數(shù)據(jù)保持同步,處理來自客戶端的讀請求。
DataNode
用于存儲每個文件的“數(shù)據(jù)塊”數(shù)據(jù),并且會周期性地向NameNode報告該DataNode的數(shù)據(jù)存放情況。
JournalNode
HA集群下,用于同步主備NameNode之間的元數(shù)據(jù)信息。
ZKFC
ZKFC是需要和NameNode一一對應(yīng)的服務(wù),即每個NameNode都需要部署ZKFC。它負(fù)責(zé)監(jiān)控NameNode的狀態(tài),并及時把狀態(tài)寫入ZooKeeper。ZKFC也有選擇誰作為Active NameNode的權(quán)利。
ZK Cluster
ZooKeeper是一個協(xié)調(diào)服務(wù),幫助ZKFC執(zhí)行主NameNode的選舉。
HttpFS gateway
HttpFS是個單獨無狀態(tài)的gateway進(jìn)程,對外提供webHDFS接口,對HDFS使用FileSystem接口對接。可用于不同Hadoop版本間的數(shù)據(jù)傳輸,及用于訪問在防火墻后的HDFS(HttpFS用作gateway)。
在一個典型HDFS HA場景中,通常由兩個NameNode組成,一個處于Active狀態(tài),另一個處于Standby狀態(tài)。
為了能實現(xiàn)Active和Standby兩個NameNode的元數(shù)據(jù)信息同步,需提供一個共享存儲系統(tǒng)。主備NameNode之間通過一組JournalNode同步元數(shù)據(jù)信息。
通常配置奇數(shù)個(2N+1個)JournalNode,且最少要運行3個JournalNode。這樣,一條元數(shù)據(jù)更新消息只要有N+1個JournalNode寫入成功就認(rèn)為數(shù)據(jù)寫入成功,此時最多容忍N個JournalNode寫入失敗。比如,3個JournalNode時,最多允許1個JournalNode寫入失敗,5個JournalNode時,最多允許2個JournalNode寫入失敗。
由于JournalNode是一個輕量級的守護(hù)進(jìn)程,可以與Hadoop其它服務(wù)共用機器。建議將JournalNode部署在控制節(jié)點上,以避免數(shù)據(jù)節(jié)點在進(jìn)行大數(shù)據(jù)量傳輸時引起JournalNode寫入失敗。
HDFS原理
MRS使用HDFS的副本機制來保證數(shù)據(jù)的可靠性,HDFS中每保存一個文件則自動生成1個備份文件,即共2個副本。HDFS副本數(shù)可通過“dfs.replication”參數(shù)查詢。
當(dāng)MRS集群中Core節(jié)點規(guī)格選擇為非本地盤(hdd)時,若集群中只有一個Core節(jié)點,則HDFS默認(rèn)副本數(shù)為1。若集群中Core節(jié)點數(shù)大于等于2,則HDFS默認(rèn)副本數(shù)為2。
當(dāng)MRS集群中Core節(jié)點規(guī)格選擇為本地盤(hdd)時,若集群中只有一個Core節(jié)點,則HDFS默認(rèn)副本數(shù)為1。若集群中有兩個Core節(jié)點,則HDFS默認(rèn)副本數(shù)為2。若集群中Core節(jié)點數(shù)大于等于3,則HDFS默認(rèn)副本數(shù)為3。
MRS服務(wù)的HDFS組件支持以下部分特性:
HDFS組件支持糾刪碼,使得數(shù)據(jù)冗余減少到50%,且可靠性更高,并引入條帶化的塊存儲結(jié)構(gòu),最大化的利用現(xiàn)有集群單節(jié)點多磁盤的能力,使得數(shù)據(jù)寫入性能在引入編碼過程后,仍和原來多副本冗余的性能接近。
支持HDFS組件上節(jié)點均衡調(diào)度和單節(jié)點內(nèi)的磁盤均衡調(diào)度,有助于擴容節(jié)點或擴容磁盤后的HDFS存儲性能提升。
更多關(guān)于Hadoop的架構(gòu)和詳細(xì)原理介紹,請參見:http://hadoop.apache.org/。
HDFS文件基礎(chǔ)操作
在華為云MRS集群中,您可以通過管理控制臺、客戶端命令以及API接口等多種方式進(jìn)行HDFS文件的操作。
MRS集群的創(chuàng)建可參考創(chuàng)建集群。
通過MRS管理控制臺查看HDFS文件信息
在MRS管理控制臺,點擊集群名稱進(jìn)入到MRS集群詳情頁面,單擊“文件管理”。
通過集群客戶端查看HDFS文件信息
登錄MRS集群的FusionInsight Manager頁面(如果沒有彈性IP,需提前購買彈性IP),新建一個用戶hdfstest,綁定用戶組supergroup,綁定角色System_administrator(集群未開啟Kerberos認(rèn)證可跳過)。
cd /opt/client source bigdata_env kinit hdfstest
使用hdfs命令進(jìn)行HDFS文件相關(guān)操作。
hdfs dfs -mkdir /tmp/testdir ? ?//創(chuàng)建文件夾
hdfs dfs -ls /tmp ? ? ?//查看文件夾
命令回顯如下:
Found 11 items drwx------ - hdfs hadoop 0 2021-05-20 11:20 /tmp/.testHDFS drwxrwxrwx - mapred hadoop 0 2021-05-10 10:33 /tmp/hadoop-yarn drwxrwxrwx - hive hadoop 0 2021-05-10 10:43 /tmp/hive drwxrwx--- - hive hive 0 2021-05-18 16:21 /tmp/hive-scratch drwxrwxrwt - yarn hadoop 0 2021-05-17 11:30 /tmp/logs drwx------ - hive hadoop 0 2021-05-20 11:20 /tmp/monitor drwxrwxrwx - spark2x hadoop 0 2021-05-10 10:45 /tmp/spark2x drwxrwxrwx - spark2x hadoop 0 2021-05-10 10:44 /tmp/sparkhive-scratch drwxr-xr-x - hetuserver hadoop 0 2021-05-17 11:32 /tmp/state-store-launcher drwxr-xr-x - hdfstest hadoop 0 2021-05-20 11:20 /tmp/testdir drwxrwxrwx - hive hadoop 0 2021-05-10 10:43 /tmp/tmp-hive-insert-flag
上傳本地文件至HDFS:
hdfs dfs -put /tmp/test.txt /tmp/testdir ?(/tmp/test.txt提前準(zhǔn)備)
然后執(zhí)行hdfs dfs -ls /tmp/testdir命令檢查文件是否存在。
Found 1 items -rw-r--r-- 3 hdfstest hadoop 49 2021-05-20 11:21 /tmp/testdir/test.txt
執(zhí)行以下命令下載HDFS文件到本地:
hdfs dfs -get /tmp/testdir/test.txt /opt
通過API接口訪問HDFS文件
HDFS支持使用Java語言進(jìn)行程序開發(fā),使用API接口訪問HDFS文件系統(tǒng),從而實現(xiàn)大數(shù)據(jù)業(yè)務(wù)應(yīng)用。
具體的API接口內(nèi)容請參考HDFS Java API。
關(guān)于HDFS應(yīng)用開發(fā)及相關(guān)樣例代碼介紹,請參考《HDFS開發(fā)指南》。
好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
EI企業(yè)智能 Hadoop MapReduce
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。