?

## 一、數據HDFS的基礎概念先簡(jiǎn)單(′?_?`)過(guò)一下基礎概念,起碼知道接下來(lái)要說(shuō)的概念東西和這個(gè)東西是用來(lái)干啥的
1.1 Hadoop架構HDFS(Hadoop Distr┐(′?`)┌ibuted FileSystem),由(you)3個(gè)(ge)模塊組成:分布式存儲HDFS,數據分(fen)布式計算MapReduce,基礎資源調度框架(◎_◎;)Yarnf6?概念w=564&a(????)mp;h=426&f=png&s=32400)大量的文件可以分散存儲在不同的服務(wù)器上面單個(gè)文件比較大,單塊磁盤(pán)放不下,數據可以切分成很多小的基礎??block塊,分散存儲在不同的ヾ(′▽?zhuān)??概念服務(wù)器上面,各服務(wù)器通過(guò)網(wǎng)絡(luò )連接,數據造成一個(gè)整體?;A
1.2 核心(/ω\)概念blockHDFS3.x上的概念文件會(huì )(hui)按照128M為單位切分成一個(gè)個(gè)的block,分散存儲在集群的數(shu)據不同的數據節點(diǎn)(dian)datanode上,需要注意的基礎是,這個(gè)操作是概念HDFS自動(dòng)完成的。0/16e518b1f473fd46?w=785&h=909&f=png&s=131162)假設我們現在要存儲一個(gè)300M的文件,這個(gè)300M就會(huì )被切分成 datanode1:12??8M + datanode2:128M + datanode3:44M這時(shí)我們需要知道,就算它的底層邏輯會(huì )按照128M進(jìn)行劃分,可是data??node3一個(gè)實(shí)際占用44M的塊也是(shi)不會(huì )占據128M的空間的
1.3 block的副本為什么hadoop直至今天會(huì )??這么流行,就是因為它的初始(′_`)設計就是可以部署??在商用服務(wù)器上,而我們知道,商用服務(wù)器是非常廉價(jià)的,而這種廉價(jià)的服務(wù)器就很容易出現故障,比如CPU,( ?° ?? ?°)IO內存等等都可能會(huì )產(chǎn)生問(wèn)題按照我們剛剛1.2的說(shuō)法,一個(gè)文件被分成了3塊存儲在不同的datanode上,萬(wàn)一其中(zhong)的一個(gè)datanode掛掉,那豈不(bu)是這個(gè)文件就找不回來(lái)了嗎,所以hadoop還對我們的每一個(gè)數據塊做了一個(gè)副本,保證數據??的可靠性副本數可以自己進(jìn)行手動(dòng)(dong)設置,一般是3個(gè)副本 hdfs-site.xml(╬?益?) dfs.replication 3可以清晰看到value的值為3,我們的副本數就為3類(lèi)似于(yu)這些個(gè)屬性我們是如何得知它們的作用的呢,在上可以查看,這里用的2.7.3。點(diǎn)開(kāi)官方文檔,在左側邊欄拉至最下方可以看到configuration項當然我們需要找對文??件,是HDFS的內容就要找hdfs-default.xml,如果是MapReduce,就要mapr(′▽?zhuān)?)ed-default.xml,yarn的就是yarn(′?_?`)-default.xml點(diǎn)擊hdfs-default.xml,可以按下ctrl+f進(jìn)行搜索,輸入dfs.replication回車(chē)這里我們就可以看到了,dfs.replication的默認值就??是為3,后面的參數說(shuō)??明寫(xiě)著(zhù)default block replication,而下面的參數dfs.replication.max就是副本最(zui)大可設置為512的意??思了同樣剛剛在 1.2 核心概念blo??ck 時(shí)我們提到的block大小為128M在這ヾ(′▽?zhuān)??個(gè)文件中也可以找到p;f=png&s=40493)所以其實(shí)每一個(gè)數據塊block的大小也是可以自主設置的#### 1.3.1 機架存儲策略??.xitu.io/2019/11/10/1(╬?益?)6e5188fc1f2be0e?w=811&h=810(?????)&f=png&s=820078)實(shí)際機房中,會(huì )有(http??s://image.baidu.com/search/index?tn=baiduimage??&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&ヽ(′ー`)ノ;fm??=result&fr=&s(′_ゝ`)f=1&fmq=1573029886236_R&pv=&ic=&nc=1&z=&hd=&latest=©right=&se=1&showtab=0&fb=0&width=&a??mp;height=&face=0&istyヾ(′▽?zhuān)??pe=2&ie=utf-8&sid=&wordˉ\_(ツ)_/ˉ=%E6%9C%8D%E??5%8A%A1%E5%99%A8%E6%9C%BA%E6%9E%B6),每個(gè)機架上會(huì )有ヾ(′?`)?若干臺服務(wù)器一般來(lái)說(shuō)我們會(huì )把一個(gè)block的3個(gè)副本分別按照下述方法進(jìn)行存儲: 第一個(gè)副本就存儲在一個(gè)機架A上 第二個(gè)副本??存儲在和這個(gè)block塊不同機架(比如機架B)的一個(gè)服務(wù)器上我們存儲第2個(gè)副本時(shí)會(huì )優(yōu)先把副本存儲在不同的機架上,這是為了防止出現一個(gè)機架斷電的ヽ(′▽?zhuān)?ノ情況,如果副本也存儲在同機架上的不同服務(wù)器上,這時(shí)候數據就可能丟失了。 第三個(gè)副本存儲在機架B的另外一個(gè)服務(wù)器上(注意副本2,3都存儲在了機架B)為什么會(huì )這么選擇,因為如果我們把副本3也放在另外一個(gè)機架C上,副本2和副本3之間的通信就需要副本2通??過(guò)它的交換機去聯(lián)系總交換機,然后總交換機去聯(lián)??系機架C的交換機,需要走的路線(xiàn)非常長(cháng),而且機房中的帶寬資源非常寶貴,如果處于高并發(fā)的情況,很容易就把機房的帶寬打滿(mǎn),此時(shí)整一個(gè)(╬?益?)集群的響應速度會(huì )急劇下降,這時(shí)候服務(wù)就會(huì )出現問(wèn)題了。當然我們的副本數也是可以手動(dòng)通過(guò)命令增加的,在客戶(hù)端訪(fǎng)問(wèn)量多的時(shí)候,可以適當分配一下壓力 $ hadoop fs -setrep -R 4 path+FileNamesetreヽ(′ー`)ノp的意思其實(shí)就是set replication,設置副本數的縮寫(xiě),上面命令就是將副本數設置成4份了,后面跟著(zhù)文件路徑和文件名即可### 二、HDFS的三大組件?ノ019/11/10/16e51885831a1393?w=1028&h=393&f=png&s=??54577)再次強調一下,大數據的框架大部分其實(shí)都是主從架構,就是一主多從,等下要講到的HDFS就是一個(gè)NameNode,多個(gè)DataNode,MapReduce就是一個(gè)JobTracker,多個(gè)TaskTracker,Yarn則是一個(gè)Res┐(′д`)┌ourceManager,多個(gè)NodeManager,而Spark就是一個(gè)Master和多個(gè)Slav?????eDataNode的介紹其實(shí)可以省略,姑且??只需要知道它的作用是存放block塊的即可。
2.1 NameNode的介紹大數據框架都是分布式的,可能每個(gè)角色都運行在各個(gè)不同的服務(wù)器上面,需要進(jìn)行通信的時(shí)候就要需要網(wǎng)絡(luò )的支持,而在我們客戶(hù)端需要讀一個(gè)文件的信息時(shí),必須知道我們這個(gè)文件被分成了多少個(gè)block,各個(gè)block又分別存儲在哪個(gè)服務(wù)器上,這種用于描述文件的信息被稱(chēng)為文件的元數據信息(metaData),而metaData就是存儲在NameNode的ヽ(′▽?zhuān)?/內存中的
三、HDFS機制
3.1 心跳機??制心跳機制解決了HDFS集群間的通??信問(wèn)題,還是NameNod(′▽?zhuān)?)e命令DataNode執行操作的(de)途徑 1.master namenode啟動(dòng)之后,會(huì )開(kāi)一個(gè)ipc server 2.slave DataNode啟動(dòng),連接NameNode,每隔3s向NameNode發(fā)(╯°□°)╯︵ ┻━┻送一個(gè)心跳,并攜帶狀態(tài)信息 3.NameNode通過(guò)對這個(gè)心跳的返回值來(lái)給DataNode傳達任務(wù)指令心跳機制(zhi)的作用
1.NameNode全權管理數據塊的復制,它周期性從集群中的每個(gè)DataNode接收心跳信號和塊狀態(tài)報告(bl??oc┐(′?`)┌kReport),接收到心跳信號意味著(zhù)該DataNode節點(diǎn)工作正常,塊狀態(tài)報告包含了該DataNode上所有數據塊的列表
2.DataNode啟動(dòng)時(shí)向NameNode注冊,通過(guò)后周期性地向NameNode上報blockReport??,每3秒向NameNode發(fā)送一次心跳,NameNode返回對該DataNode的指令,如將數據塊復制到另一臺機器,或刪除某個(gè)數據塊等···而當某一個(gè)DataNode超過(guò)10min還沒(méi)向(xiang)NameN???ode發(fā)送心跳,此時(shí)NameNode就會(huì )判定該DataNode不可用??,此時(shí)客戶(hù)端的讀寫(xiě)操作就不會(huì )再傳達到該DataNode上
3.hadoop集群剛開(kāi)始啟動(dòng)時(shí)會(huì )進(jìn)入安全模式(99.99%),就用到了(′▽?zhuān)?心跳機制,其實(shí)就是在集群剛啟動(dòng)的時(shí)候,每一個(gè)DataNode都會(huì )向NameNode發(fā)送blockReport,NameNode會(huì )統計它們上報的總block數,除以一開(kāi)始知道的總個(gè)數tota(′?`*)l,當 block/total < 99.99% 時(shí),會(huì )觸發(fā)安全模式,安全模式下客戶(hù)端就沒(méi)法向HDFS寫(xiě)數據,只能進(jìn)行讀數據。??
3.2 負載均衡 其實(shí)就是節點(diǎn)的增加或減??少,或者節點(diǎn)的磁盤(pán)使用率高低的問(wèn)題,主要就是通過(guò)網(wǎng)絡(luò )進(jìn)行數據的遷移工作以達ヽ(′▽?zhuān)?ノ到高可用率觸發(fā)命令 $ HADOOP_HOME/sbin/st┐(′ー`)┌art-balancer.sh -t 5%5%其實(shí)就是剛剛提到的磁盤(pán)的利用率差值,大于5%時(shí)會(huì )觸發(fā)負載均衡策略。
友情鏈接:
荊門(mén)海碼網(wǎng)絡(luò )科技有限公司鐵法識大網(wǎng)絡(luò )科技有限公司通化銘赫網(wǎng)絡(luò )科技有限公司桂林元訊網(wǎng)絡(luò )科技有限公司宿遷爾貿網(wǎng)絡(luò )科技有限公司東港悅旋網(wǎng)絡(luò )科技有限公司雅安源士網(wǎng)絡(luò )科技有限公司萊蕪欣倍網(wǎng)絡(luò )科技有限公司荊門(mén)遠長(cháng)網(wǎng)絡(luò )科技有限公司蕪湖日環(huán)網(wǎng)絡(luò )科技有限公司榮成亞禾網(wǎng)絡(luò )科技有限公司雙鴨山惠月網(wǎng)絡(luò )科技有限公司阜陽(yáng)霸界網(wǎng)絡(luò )科技有限公司寧夏靈武利文網(wǎng)絡(luò )科技有限公司衡陽(yáng)迪皇網(wǎng)絡(luò )科技有限公司宜昌光韋網(wǎng)絡(luò )科技有限公司都江堰倍明網(wǎng)絡(luò )科技有限公司嘉峪關(guān)含聰網(wǎng)絡(luò )科技有限公司北京貝中網(wǎng)絡(luò )科技有限公司麗水派鐵網(wǎng)絡(luò )科技有限公司興義格貴網(wǎng)絡(luò )科技有限公司鶴壁凌邁網(wǎng)絡(luò )科技有限公司津輝富網(wǎng)絡(luò )科技有限公司鹿泉復馳網(wǎng)絡(luò )科技有限公司
© 2013-2025.Company name All rights reserved.網(wǎng)站地圖 天津九安特機電工程有限公司-More Templates