Hadoop中HDFS的基礎(chǔ)概念是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
在榮昌等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,榮昌網(wǎng)站建設(shè)費(fèi)用合理。
一:簡(jiǎn)單了解Hadoop:
Hadoop的框架最核心的設(shè)計(jì)就是:HDFS(Hadoop Distributed File System) 和 MapReduce。
HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),則MapReduce為海量的數(shù)據(jù)提供了計(jì)算。
二:HDFS體系結(jié)構(gòu):
HDFS 是一個(gè)主/從(Master/Slave)體系結(jié)構(gòu),可以通過(guò)目錄路徑對(duì)文件執(zhí)行CRUD操。但由于分布式存儲(chǔ)的性質(zhì),HDFS集群擁有一個(gè)NameNode 和 一些DataNodes。NameNode管理文件系統(tǒng)的元數(shù)據(jù),DataNode存儲(chǔ)實(shí)際的數(shù)據(jù)。客戶端通過(guò)同NameNode和DataNodes的交互訪問(wèn)文件系統(tǒng)??蛻舳寺?lián)系NameNode以獲取文件的源數(shù)據(jù),而真正的文件I/O操作是直接和DataNode進(jìn)行交互的。
NameNode也就是主控制服務(wù)器負(fù)責(zé)管理文件系統(tǒng)的命名空間,記錄文件數(shù)據(jù)塊咋每個(gè)DataNode上的位置和副本信息,協(xié)調(diào)客戶端對(duì)文件的訪問(wèn),以及記錄命名空間內(nèi)的改動(dòng)或命名空間本身屬性的改動(dòng)。
DataNode負(fù)責(zé)他們所在物理節(jié)點(diǎn)上的存儲(chǔ)管理。HDFS開(kāi)放的文件系統(tǒng)的命名空間以便讓用戶以文件的形式存儲(chǔ)數(shù)據(jù)。HDFS的數(shù)據(jù)都是“一次寫(xiě)入,多次讀取”,而其文件通常是按照128MB被企鵝人稱不同的數(shù)據(jù)塊(Block),每個(gè)數(shù)據(jù)塊盡可能地分散存儲(chǔ)于不同的DataNode中。
NameNode執(zhí)行文件系統(tǒng)的命名空間操作,比如打開(kāi)、關(guān)閉、重命名文件或目錄等,還決定數(shù)據(jù)塊到DataNode的映射。DataNode負(fù)責(zé)處理客戶的讀寫(xiě)請(qǐng)求,依照NameNode的命令,執(zhí)行數(shù)據(jù)的創(chuàng)建,復(fù)制等工作。
eg:客戶端要訪問(wèn)一個(gè)文件,首先,客戶端從NameNode中獲得組成該文件的數(shù)據(jù)塊位置列表,即知道數(shù)據(jù)塊被存儲(chǔ)在哪些DataNode上,然后,客戶端直接從DataNode上讀取文件數(shù)據(jù)。此過(guò)程中,NameNode不參與文件的傳輸。
一個(gè)集群只有一個(gè)NameNode,集群中的其他機(jī)器各運(yùn)行一個(gè)DataNode,也可以在運(yùn)行NameNode的機(jī)器上同時(shí)運(yùn)行DataNode,或者一臺(tái)機(jī)器上運(yùn)行多個(gè)DataNode。
NameNode使用事務(wù)日志(EditLog)記錄HDFS元數(shù)據(jù)的變化,是用映像文件FsImage存儲(chǔ)文件系統(tǒng)的命名空間,包含文件的映射及屬性等。事務(wù)日志和映像文件都存儲(chǔ)在NameNode的本地文件系統(tǒng)中。NameNode啟動(dòng)時(shí)候,從磁盤(pán)中讀取映像文件和事務(wù)日志,把事務(wù)日志的事務(wù)都應(yīng)用到內(nèi)存中的映像文件上,然后將新的元數(shù)據(jù)刷新到本地磁盤(pán)的新的映像文件上中,這樣可以截去舊的事務(wù)日志。該過(guò)程又稱為檢查點(diǎn)(Checkpoint)。
SecondaryNameNode輔助NameNode處理映像文件和事務(wù)日志。NameNode啟動(dòng)的時(shí)候合并映像文件和事務(wù)日志,而SecondaryNameNode會(huì)周期地從NameNode上復(fù)制映像文件和事務(wù)日志到臨時(shí)目錄,合并生成新的映像文件后在重新上傳到NameNode,NameNode更新映像文件并清理事務(wù)日志,使得事務(wù)日志大小可控。
***********************************************************************************************************
1. NameNode
NameNode 是 HDFS的守護(hù)程序,負(fù)責(zé)記錄文件是如何分割成數(shù)據(jù)塊的,以及這些數(shù)據(jù)塊分別被存儲(chǔ)到哪些數(shù)據(jù)節(jié)點(diǎn)上。它的主要功能是對(duì)內(nèi)存及I/O進(jìn)行集中處理。
由于NameNode是Hadoop集群中的一個(gè)單點(diǎn),一旦NameNode服務(wù)器宕機(jī),整個(gè)系統(tǒng)無(wú)法運(yùn)行。
NameNode存儲(chǔ)的是元數(shù)據(jù)。
2. DataNode
集群中的每個(gè)從服務(wù)器都運(yùn)行一個(gè)DataNode后臺(tái)程序,這個(gè)后臺(tái)程序負(fù)責(zé)把HDFS數(shù)據(jù)塊讀寫(xiě)到本地的文件系統(tǒng)。當(dāng)需要通過(guò)客戶端讀/寫(xiě)某個(gè)數(shù)據(jù)時(shí),先由NameNode告訴客戶端去哪個(gè)DataNode進(jìn)行具體的讀/寫(xiě)操作,然后,客戶端直接與這個(gè)DataaNode服務(wù)器上的后臺(tái)程序進(jìn)行通信,并且通過(guò)對(duì)相關(guān)的數(shù)據(jù)塊進(jìn)行讀/寫(xiě)操作。
DataNode 存儲(chǔ)的是實(shí)際數(shù)據(jù)。
3. SecondaryNameNode
SecondaryNameNode是一個(gè)用來(lái)監(jiān)控HDFS狀態(tài)的輔助后臺(tái)程序。就像NameNode一樣,每個(gè)集群都有一個(gè)SecondaryNameNode,并且部署在一臺(tái)單獨(dú)的服務(wù)器上,而SecondaryNameNode不同于NameNode,它不接收或記錄任何實(shí)時(shí)的數(shù)據(jù)變化,但是,它會(huì)與NameNode進(jìn)行通信,以便定期的保存HDFS元數(shù)據(jù)的快照。由于NameNode是單點(diǎn)的,通過(guò)SecondaryNameNode的快照功能,可以將NameNode的宕機(jī)時(shí)間和數(shù)據(jù)損失降低到最小。同時(shí)NameNode發(fā)生損壞,SecondaryNameNode可以及時(shí)地作為備用NameNode使用。
SecondaryNameNode 最重要的任務(wù)并不是為NameNode 元數(shù)據(jù)進(jìn)行熱備份,而是定期合并f s i m a g e 和e d i t s 日志,并傳輸給NameNode 。這里需要注意的是,為了減小NameNode壓力,NameNode 自己并不會(huì)合并fsimage 和edits ,并將文件存儲(chǔ)到磁盤(pán)上,而是交由SecondaryNameNode 完成。
4. ResourceManager
ResourceManager主要由以下幾個(gè)部分組成:
用戶交互
YARN分別針對(duì)普通用戶,管理員和Web提供了三種對(duì)外服務(wù),分別對(duì)應(yīng)ClientRMService、AdminService和WebApp:
ClientRMService
ClientRMService是為普通用戶提供的服務(wù),它會(huì)處理來(lái)自客戶端各種RPC請(qǐng)求,比如提交應(yīng)用程序、終止應(yīng)用程序,獲取應(yīng)用程序運(yùn)行狀態(tài)等。
AdminService
YARN為管理員提供了一套獨(dú)立的服務(wù)接口,以防止大量的普通用戶請(qǐng)求使管理員發(fā)送的管理命令餓死,管理員可通過(guò)這些接口管理集群,比如動(dòng)態(tài)更新節(jié)點(diǎn)列表,更新ACL列表,更新隊(duì)列信息等。
WebApp
為了更加友好地展示集群資源使用情況和應(yīng)用程序運(yùn)行狀態(tài)等信息,YARN對(duì)外提供了一個(gè)Web 界面
5. NodeManager(NM管理)
NMLivelinessMonitor
監(jiān)控NM是否活著,如果一個(gè)NodeManager在一定時(shí)間(默認(rèn)為10min)內(nèi)未匯報(bào)心跳信息,則認(rèn)為它死掉了,會(huì)將其從集群中移除。
NodesListManager
維護(hù)正常節(jié)點(diǎn)和異常節(jié)點(diǎn)列表,管理exlude(類似于黑名單)和inlude(類似于白名單)節(jié)點(diǎn)列表,這兩個(gè)列表均是在配置文件中設(shè)置的,可以動(dòng)態(tài)加載。
ResourceTrackerService
處理來(lái)自NodeManager的請(qǐng)求,主要包括兩種請(qǐng)求:注冊(cè)和心跳,其中,注冊(cè)是NodeManager啟動(dòng)時(shí)發(fā)生的行為,請(qǐng)求包中包含節(jié)點(diǎn)ID,可用的資源上限等信息,而心跳是周期性 行為,包含各個(gè)Container運(yùn)行狀態(tài),運(yùn)行的Application列表、節(jié)點(diǎn)健康狀況(可通過(guò)一個(gè)腳本設(shè)置),而ResourceTrackerService則為NM返回待釋放的Container列表、Application列表等。
6. Application管理
ApplicationACLsManager
管理應(yīng)用程序訪問(wèn)權(quán)限,包含兩部分權(quán)限:查看和修改,查看主要指查看應(yīng)用程序基本信息,而修改則主要是修改應(yīng)用程序優(yōu)先級(jí)、殺死應(yīng)用程序等。
RMAppManager
管理應(yīng)用程序的啟動(dòng)和關(guān)閉。
ContainerAllocationExpirer
YARN不允許AM獲得Container后長(zhǎng)時(shí)間不對(duì)其使用,因?yàn)檫@會(huì)降低整個(gè)集群的利用率。當(dāng)AM收到RM新分配的一個(gè)Container后,必須在一定的時(shí)間(默認(rèn)為10min)內(nèi)在對(duì)應(yīng)的NM上啟動(dòng)該Container, 否則,RM會(huì)回收該Container。
安全管理
ResourceManage自帶了非常全面的權(quán)限管理機(jī)制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模塊完成。
資源分配
ResourceScheduler
ResourceScheduler是資源調(diào)度器,它按照一定的約束條件(比如隊(duì)列容量限制等)將集群中的資源分配給各個(gè)應(yīng)用程序。ResourceScheduler是一個(gè)插拔式模塊,默認(rèn)是FIFO實(shí)現(xiàn),YARN還提供了Fair Scheduler和Capacity Scheduler兩個(gè)多租戶調(diào)度器。
關(guān)于Hadoop中HDFS的基礎(chǔ)概念是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。