溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大數據云計算面試之HDFS架構的示例分析

發(fā)布時間:2021-12-09 14:35:18 來源:億速云 閱讀:162 作者:小新 欄目:大數據

這篇文章主要介紹了大數據云計算面試之HDFS架構的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

  1. HDFS架構
    可以查看官網的描述

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

介紹NameNode and DataNodes

大數據云計算面試之HDFS架構的示例分析

結合上圖官網 描述可以總結

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)名稱空間,并允許用戶數據存儲在文件中。

大數據云計算面試之HDFS架構的示例分析

根據上圖

可以看到有這么幾個概念

  1. Client

  2. NameNode( 簡寫為NN)

  3. DataNodes (簡寫為 DN)

  4. Block


Client 用于發(fā)起HDFS請求,可以是用戶,可以是代碼

NN 存在唯一一個,所以存在SinglePoint of Failure (單點故障的問題) 引出 ==》HA(heigh available)

DN 存在多個

作用:存儲數據 和NN 之間有心跳

Namenode 創(chuàng)建的時候,配置有文件名字、 副本數 等

大數據云計算面試之HDFS架構的示例分析

2.讀寫流程

了解架構后,我們來看讀寫流程

假設我們有一個client  一個NameNode 三個DataNode,等幾個角色

大數據云計算面試之HDFS架構的示例分析

(1)寫入流程

1.一個用戶、代碼需要寫入文件

第一步:client 從配置文件(hdfs 的配置文件中)獲取到 1. 副本大小 2.副本數量

大數據云計算面試之HDFS架構的示例分析

第二步:在第一步獲取的的參數中,進行文件拆分

第三步:client 向 NameNode 發(fā)起請求,詢問NameNode 文件應該放在哪里

第四步: NameNode 返回文件,可以存放到的位置

大數據云計算面試之HDFS架構的示例分析

第五步:client 對指定的DataNode 位置寫入文件

大數據云計算面試之HDFS架構的示例分析

DataNode 寫入完成進行副本拷貝和通知NameNode

大數據云計算面試之HDFS架構的示例分析

(2)讀取流程(就相對比較簡單了)

第一步:客戶段請求NameNode 文件

第二步:NameNode 返回存放該數據的DataNode 地址

第三步:client 到DataNode 讀取數據

3.HA (高可用)架構

在官網上可以看到有QJM 和NFS 架構

大數據云計算面試之HDFS架構的示例分析

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框架如下圖所示

大數據云計算面試之HDFS架構的示例分析

建立多個NameNode 一個Active 活動狀態(tài), 一個Standby 備用,通過Monitor Health 監(jiān)控狀態(tài), 通過Zookeeper 協調主備切換

4.小文件是什么

小文件是指文件size小于HDFS上block大小的文件。這樣的文件會給hadoop的擴展性和性能帶來嚴重問題

為什么有小文件?

1、實時處理:比如我們使用 Spark Streaming 從外部數據源接收數據,然后經過 ETL 處理之后存儲到 HDFS 中。這種情況下在每個 Job 中會產生大量的小文件。
2、hive中對表執(zhí)行insert操作,每次插入都在表目錄下形成一個小文件。創(chuàng)建表結構相同的表,create table t_new as select * from t_old;老表根據實際情況可以刪除就刪除。
3、hive中執(zhí)行簡單過濾操作,符合過濾條件的數據存在很多block塊中,走map,map輸出有很多小文件。開啟map端的聚合。
4、mapreduce正常執(zhí)行產生小文件。將mapreduce輸出不直接寫hdfs,而是寫入到hbase中。設置map端文件合并及reduce端文件合并。
5、輸入數據文件為小文件。小文件合并后再計算。CombineFileInputFormat:它是一種新的inputformat,用于將多個文件合并成一個單獨的split,另外,它會考慮數據的存儲位置。

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è)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI