這篇文章主要介紹了大數(shù)據(jù)云計(jì)算面試之HDFS架構(gòu)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、四川電信科技城機(jī)房解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球成百上千企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
HDFS架構(gòu)
可以查看官網(wǎng)的描述
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
介紹NameNode and DataNodes
結(jié)合上圖官網(wǎng) 描述可以總結(jié)
HDFS has a master/slave architecture 是一個(gè)主從的架構(gòu)
An HDFS cluster consists of a single NameNode 一個(gè)集群只有一個(gè)NameNode
there are a number of DataNodes, usually one per node in the cluster, which manage storage attached to the nodes that they run on. 有多個(gè) DataNodes 主要作用是管理manages 文件系統(tǒng)的命名空間,和管理需要訪問文件的客戶端
HDFS exposes a file system namespace and allows user data to be stored in files. HDFS公開了文件系統(tǒng)名稱空間,并允許用戶數(shù)據(jù)存儲(chǔ)在文件中。
根據(jù)上圖
可以看到有這么幾個(gè)概念
Client
NameNode( 簡(jiǎn)寫為NN)
DataNodes (簡(jiǎn)寫為 DN)
Block
Client 用于發(fā)起HDFS請(qǐng)求,可以是用戶,可以是代碼
NN 存在唯一一個(gè),所以存在SinglePoint of Failure (單點(diǎn)故障的問題) 引出 ==》HA(heigh available)
DN 存在多個(gè)
作用:存儲(chǔ)數(shù)據(jù) 和NN 之間有心跳
Namenode 創(chuàng)建的時(shí)候,配置有文件名字、 副本數(shù) 等
2.讀寫流程
了解架構(gòu)后,我們來看讀寫流程
假設(shè)我們有一個(gè)client 一個(gè)NameNode 三個(gè)DataNode,等幾個(gè)角色
(1)寫入流程
1.一個(gè)用戶、代碼需要寫入文件
第一步:client 從配置文件(hdfs 的配置文件中)獲取到 1. 副本大小 2.副本數(shù)量
第二步:在第一步獲取的的參數(shù)中,進(jìn)行文件拆分
第三步:client 向 NameNode 發(fā)起請(qǐng)求,詢問NameNode 文件應(yīng)該放在哪里
第四步: NameNode 返回文件,可以存放到的位置
第五步:client 對(duì)指定的DataNode 位置寫入文件
DataNode 寫入完成進(jìn)行副本拷貝和通知NameNode
(2)讀取流程(就相對(duì)比較簡(jiǎn)單了)
第一步:客戶段請(qǐng)求NameNode 文件
第二步:NameNode 返回存放該數(shù)據(jù)的DataNode 地址
第三步:client 到DataNode 讀取數(shù)據(jù)
3.HA (高可用)架構(gòu)
在官網(wǎng)上可以看到有QJM 和NFS 架構(gòu)
QJM(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html)
NFS(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html)
其中見常見的HA框架如下圖所示
建立多個(gè)NameNode 一個(gè)Active 活動(dòng)狀態(tài), 一個(gè)Standby 備用,通過Monitor Health 監(jiān)控狀態(tài), 通過Zookeeper 協(xié)調(diào)主備切換
4.小文件是什么
小文件是指文件size小于HDFS上block大小的文件。這樣的文件會(huì)給hadoop的擴(kuò)展性和性能帶來嚴(yán)重問題
為什么有小文件?
5.小文件帶來的瓶頸
1.磁盤IO
2.task啟動(dòng)銷毀的開銷
3.資源有限(磁盤空間)
具體為:處理大量小文件速度遠(yuǎn)遠(yuǎn)小于處理同等大小的大文件的速度。每一個(gè)小文件要占用一個(gè)slot,而task啟動(dòng)將耗費(fèi)大量時(shí)間甚至大部分時(shí)間都耗費(fèi)在啟動(dòng)task和釋放task上。
最后小文件的解決方法:
通用處理方案:
1、Hadoop Archive
Hadoop Archive或者HAR,是一個(gè)高效地將小文件放入HDFS塊中的文件存檔工具,它能夠?qū)⒍鄠€(gè)小文件打包成一個(gè)HAR文件,這樣在減少namenode內(nèi)存使用的同時(shí),仍然允許對(duì)文件進(jìn)行透明的訪問。
2、Sequence file
sequence file由一系列的二進(jìn)制key/value組成,如果為key小文件名,value為文件內(nèi)容,則可以將大批小文件合并成一個(gè)大文件。
底層處理方案:
HDFS-8998:
DataNode劃分小文件區(qū),專門存儲(chǔ)小文件。一個(gè)block塊滿了開始使用下一個(gè)block。
HDFS-8286:
將元數(shù)據(jù)從namenode從內(nèi)存移到第三方k-v存儲(chǔ)系統(tǒng)中。
HDFS-7240:
Apache Hadoop Ozone,hadoop子項(xiàng)目,為擴(kuò)展hdfs而生。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“大數(shù)據(jù)云計(jì)算面試之HDFS架構(gòu)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!