千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)之Hadoop入門
2019-07-15 14:46:56
4509瀏覽
今天千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)老師給大家分享一篇關(guān)于大數(shù)據(jù)技術(shù)之Hadoop入門的詳細介紹,比如簡單的說一下HDFS中的SecondaryNameNode副節(jié)點和持久化,下面我們一起來看一下吧。
一、SNN
SNN的主要工作
(1)SecondaryNameNode詢問NameNode是否需要checkpoint。
直接帶回NameNode是否檢查結(jié)果。
(2)SecondaryNameNode請求執(zhí)行checkpoint。
(3)NameNode滾動正在寫的edits日志。
(4)將滾動前的編輯日志和鏡像文件拷貝到SecondaryNameNode。
(5)SecondaryNameNode加載編輯日志和鏡像文件到內(nèi)存,并合并。
(6)生成新的鏡像文件fsimage.chkpoint。
(7)拷貝fsimage.chkpoint到NameNode。
(8)NameNode將fsimage.chkpoint重新命名成fsimage。
二、持久化
了解到SNN的主要工作之后呢,我們就說一下SNN它和NN也就是Namenode的工作機制。
SNN和NN的工作機制圖
在NN掌握一批元數(shù)據(jù),(元數(shù)據(jù)就是描述數(shù)據(jù)的數(shù)據(jù))—存放在內(nèi)存里
硬盤內(nèi)存大便宜但是慢
內(nèi)存內(nèi)存小貴,但是快
2.1持久化是什么呢?
持久化:為了保證元數(shù)據(jù)的安全----將內(nèi)存中的數(shù)據(jù)存放到磁盤中
在當我們的集群因斷電等特殊原因產(chǎn)生問題的時候,問題解決,重新開機,會去磁盤上讀取元數(shù)據(jù),恢復(fù)到斷電前的狀態(tài)。
那么為什么說NN不能進行持久化呢?
其實我們即可以說NN可以做持久化,也可以說不可以做持久化。那么到底什么時候可以做持久化什么時候不可以做持久化呢?
NN可以做持久化:需求小,占用內(nèi)存小,不影響計算效率
NN不可以做持久化:是因為NN本身工作已經(jīng)很多,有可能在持久化的過程中宕機
備注:SNN永遠無法取代NN的位置,他只是NN的一個熱備。
(熱備:工作依舊可以進行,但還是能備份)
2.2Edits和Fsimage
Fsimage:namenode內(nèi)存中元數(shù)據(jù)序列化后形成的文件。
Edits:記錄客戶端更新元數(shù)據(jù)信息的每一步操作(可通過Edits運算出元數(shù)據(jù))。
為了方便了解畫了一個圖
namenode啟動時,先滾動edits并生成一個空的edits,然后加載edits和fsimage到內(nèi)存中,此時namenode內(nèi)存就持有最新的元數(shù)據(jù)信息。client開始對namenode發(fā)送元數(shù)據(jù)的增刪改查的請求,這些請求的操作首先會被記錄的edits中(查詢元數(shù)據(jù)的操作不會被記錄在edits中,因為查詢操作不會更改元數(shù)據(jù)信息),如果此時namenode掛掉,重啟后會從edits中讀取元數(shù)據(jù)的信息。然后,namenode會在內(nèi)存中執(zhí)行元數(shù)據(jù)的增刪改查的操作。
由于edits中記錄的操作會越來越多,edits文件會越來越大,導(dǎo)致namenode在啟動加載edits時會很慢,所以需要對edits和fsimage進行合并(所謂合并,就是將edits和fsimage加載到內(nèi)存中,照著edits中的操作一步步執(zhí)行,最終形成新的fsimage)。secondarynamenode的作用就是幫助namenode進行edits和fsimage的合并工作。
secondarynamenode首先會詢問namenode是否需要checkpoint(觸發(fā)checkpoint需要滿足兩個條件中的任意一個,定時時間到和edits中數(shù)據(jù)寫滿了)。
持久化的觸發(fā)條件:超過3600或者edits(edits.log)的大小超過64M
直接帶回namenode是否檢查結(jié)果。secondarynamenode執(zhí)行checkpoint操作,首先會讓namenode滾動edits并生成一個空的edits,滾動edits的目的是給edits打個標記,以后所有新的操作都寫入edits,其他未合并的edits和fsimage會拷貝到secondarynamenode的本地,然后將拷貝的edits和fsimage加載到內(nèi)存中進行合并,生成fsimage.chkpoint,然后將fsimage.chkpoint拷貝給namenode,重命名為fsimage后替換掉原來的fsimage。namenode在啟動時就只需要加載之前未合并的edits和fsimage即可,因為合并過的edits中的元數(shù)據(jù)信息已經(jīng)被記錄在fsimage中。
總結(jié):持久化就是將NN的元數(shù)據(jù)寫入到磁盤中進行存儲,當NN掛了之后重啟得時候會去磁盤讀取相應(yīng)的元數(shù)據(jù),恢復(fù)集群的狀態(tài)-------(內(nèi)存斷電丟失)
發(fā)生斷電
持久化之前------再次啟動,讀取系統(tǒng)日志
持久化之后-------讀取磁盤中的數(shù)據(jù),恢復(fù)狀態(tài)
發(fā)生重復(fù)的斷電
NN和DN之間有一種通信機制叫做心跳機制------每個3秒,DN會向NN發(fā)送一次心跳,1min沒有心跳,則認為DN掛掉。
那么重復(fù)的斷電會進入安全模式:
恢復(fù)系統(tǒng)狀態(tài)
檢查DN的信息
對有問題的DN進行修復(fù)
1)在傳輸?shù)倪^程中斷電—數(shù)據(jù)丟失,如果數(shù)據(jù)特別重要,那只能提前進行預(yù)判,進行相應(yīng)的調(diào)整。
2)傳輸完成之后斷電
當我的集群重新恢復(fù)之后,NN會去讀取元數(shù)據(jù),對狀態(tài)進行相應(yīng)的恢復(fù)
3)若DN出現(xiàn)問題。在DN恢復(fù)之后,如果新的任務(wù),根據(jù)情況,確定是否將新的文件上傳
以上就是關(guān)于千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)之Hadoop入門的全部內(nèi)容,
想要了解更多關(guān)于大數(shù)據(jù)開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的大數(shù)據(jù)講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的大數(shù)據(jù)視頻教程定能讓你快速掌握大數(shù)據(jù)從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進入Python全棧開發(fā)免費公開課】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>
標簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈
數(shù)據(jù)結(jié)構(gòu)
算法