1. 程式人生 > >【若澤大資料實戰第十五天】關於HDFS、YARN及MapReduce的總結

【若澤大資料實戰第十五天】關於HDFS、YARN及MapReduce的總結

前言:

有很多小夥伴對這幾個東西的概念有些模糊,這裡我做一個總結,希望大家能一篇看懂。

一、HDFS

HDFS是分散式檔案系統,有高容錯性的特點,可以部署在價格低廉的伺服器上,主要包含namenodedatanode

Namenodehdfs中檔案目錄和檔案分配管理者,它儲存著檔名和資料塊的對映管理,資料塊和datanode列表的對映關係。其中檔名和資料塊的關係儲存在磁碟上,但是namenode上不儲存資料塊和datanode列表的關係,該列表是通過datanode上報建立起來的。

Namenode上的有三種互動,1client訪問namenode獲取的相關datanode的資訊。2datanode

心跳彙報當前block的情況。3secondarynamenodecheckpoint互動。

  DataNode它負責實際的資料儲存,並將資料息定期彙報給NameNodeDataNode以固定大小的block為基本單位組織檔案內容,預設情況下block大小為128MB。當用戶上傳一個大的檔案到HDFS上時,該檔案會被切分成若干個block,分別儲存到不同的DataNode;同時,為了保證資料可靠,會將同一個block以流水線方式寫到若干個(預設是3,該引數可配置)不同的DataNode上。這種檔案切割後儲存的過程是對使用者透明的。

 CheckPoint的時間點

fs.checkpoint.period
指定兩次checkpoint的最大時間間隔,預設3600秒。
  • 1
fs.checkpoint.size    規定edits檔案的最大值,一旦超過這個值則強制checkpoint,不管是否到達最大時間間隔。預設大小是64M。
  • 流程解析
1、每隔兩個小時,或者edits檔案超過最大值時,SecondaryNameNode通知NameNode切換edits,
此時在NameNode中生成一個名為edits.new的新edits,在fsimage被替換之前,所有的操作都會寫到edits.new中。
  • 1
  • 2
2、SecondaryNameNode通過Http協議複製edits和fsimage到SecondaryNameNode中
  • 1
3、SecondaryNameNode將fsimage匯入記憶體,用edits中的操作,生成新的fsimage.ckpt檔案
  • 1
4、SecondaryNameNode將新的fsimage複製,並通過http Post傳給NameNode
  • 1
5、NameNode將接收到的新的fsimage.ckpt替換掉之前的fsimage,同時將新的edits.new重新命名為edits,將之前的替換掉

 SecondaryNameNode,用來輔助namenode進行元資料的合併,並且傳回到namenode


二、YARN

YARN主要包括幾種角色

ResourceManager(RM):主要接收客戶端任務請求,接收和監控NodeManager(NM)的資源情況彙報,負責資源的分配與排程,啟動和監控ApplicationMaster(AM),一個叢集只有一個。

NodeManager:主要是節點上的資源管理,啟動Container執行task計算,上報資源、container情況給RM和任務處理情況給AM,整個叢集有多個。

ApplicationMaster:主要是單個Application(Job)task管理和排程,向RM進行資源的申請,向NM發出launch Container指令,接收NMtask處理狀態資訊。每個應用有一個。

Container:是YARN中資源的抽象,它封裝了某個節點上一定量的資源(CPU和記憶體兩類資源)。


三、MapReduce

MapReducehadoop的一種離線計算框架,適合離線批處理,具有很好的容錯性和擴充套件性,適合簡單的批處理任務。缺點啟動開銷大,任務多使用磁碟效率比較低。

一個MapReduce 作業通常會把輸入的資料集切分為若干獨立的資料塊,由 map任務(task)以完全並行的方式處理它們。框架會對map的輸出先進行排序,然後把結果輸入給reduce任務。通常作業的輸入和輸出都會被儲存在檔案系統中。整個框架負責任務的排程和監控,以及重新執行已經失敗的任務。通常,MapReduce框架和分散式檔案系統是執行在一組相同的節點上的,計算節點和儲存節點通常在一起。這種配置允許框架在那些已經存好資料的節點上高效地排程任務,這可以使整個叢集的網路頻寬被非常高效地利用。

一個MapReduce任務包含一般會這幾個部分:MapShuffleSortPartitioner CombinerMergeSort)、Reduce

Mapreduce工作原理如下圖: