您好,登錄后才能下訂單哦!
這篇文章主要介紹了大數據云計算面試之HDFS架構的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
HDFS架構
可以查看官網的描述
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
介紹NameNode and DataNodes
結合上圖官網 描述可以總結
HDFS has a master/slave architecture 是一個主從的架構
An HDFS cluster consists of a single NameNode 一個集群只有一個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. 有多個 DataNodes 主要作用是管理manages 文件系統(tǒng)的命名空間,和管理需要訪問文件的客戶端
HDFS exposes a file system namespace and allows user data to be stored in files. HDFS公開了文件系統(tǒng)名稱空間,并允許用戶數據存儲在文件中。
根據上圖
可以看到有這么幾個概念
Client
NameNode( 簡寫為NN)
DataNodes (簡寫為 DN)
Block
Client 用于發(fā)起HDFS請求,可以是用戶,可以是代碼
NN 存在唯一一個,所以存在SinglePoint of Failure (單點故障的問題) 引出 ==》HA(heigh available)
DN 存在多個
作用:存儲數據 和NN 之間有心跳
Namenode 創(chuàng)建的時候,配置有文件名字、 副本數 等
2.讀寫流程
了解架構后,我們來看讀寫流程
假設我們有一個client 一個NameNode 三個DataNode,等幾個角色
(1)寫入流程
1.一個用戶、代碼需要寫入文件
第一步:client 從配置文件(hdfs 的配置文件中)獲取到 1. 副本大小 2.副本數量
第二步:在第一步獲取的的參數中,進行文件拆分
第三步:client 向 NameNode 發(fā)起請求,詢問NameNode 文件應該放在哪里
第四步: NameNode 返回文件,可以存放到的位置
第五步:client 對指定的DataNode 位置寫入文件
DataNode 寫入完成進行副本拷貝和通知NameNode
(2)讀取流程(就相對比較簡單了)
第一步:客戶段請求NameNode 文件
第二步:NameNode 返回存放該數據的DataNode 地址
第三步:client 到DataNode 讀取數據
3.HA (高可用)架構
在官網上可以看到有QJM 和NFS 架構
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框架如下圖所示
建立多個NameNode 一個Active 活動狀態(tài), 一個Standby 備用,通過Monitor Health 監(jiān)控狀態(tài), 通過Zookeeper 協調主備切換
4.小文件是什么
小文件是指文件size小于HDFS上block大小的文件。這樣的文件會給hadoop的擴展性和性能帶來嚴重問題
為什么有小文件?
5.小文件帶來的瓶頸
1.磁盤IO
2.task啟動銷毀的開銷
3.資源有限(磁盤空間)
具體為:處理大量小文件速度遠遠小于處理同等大小的大文件的速度。每一個小文件要占用一個slot,而task啟動將耗費大量時間甚至大部分時間都耗費在啟動task和釋放task上。
最后小文件的解決方法:
通用處理方案:
1、Hadoop Archive
Hadoop Archive或者HAR,是一個高效地將小文件放入HDFS塊中的文件存檔工具,它能夠將多個小文件打包成一個HAR文件,這樣在減少namenode內存使用的同時,仍然允許對文件進行透明的訪問。
2、Sequence file
sequence file由一系列的二進制key/value組成,如果為key小文件名,value為文件內容,則可以將大批小文件合并成一個大文件。
底層處理方案:
HDFS-8998:
DataNode劃分小文件區(qū),專門存儲小文件。一個block塊滿了開始使用下一個block。
HDFS-8286:
將元數據從namenode從內存移到第三方k-v存儲系統(tǒng)中。
HDFS-7240:
Apache Hadoop Ozone,hadoop子項目,為擴展hdfs而生。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“大數據云計算面試之HDFS架構的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。