hadoop1 0和hadoop2 0的區別

2021-09-02 10:05:37 字數 2708 閱讀 2403

1. hadoop 1.0中的資源管理方案hadoop 1.0指的是版本為apache hadoop 0.20.x、1.x或者cdh3系列的hadoop,核心主要由hdfs和mapreduce兩個系統組成,其中,mapreduce是乙個離線處理框架,由程式設計模型(新舊api)、執行時環境(jobtracker和tasktracker)和資料處理引擎(maptask和reducetask)三部分組成。

hadoop 1.0資源管理由兩部分組成:資源表示模型和資源分配模型,其中,資源表示模型用於描述資源的組織方式,hadoop 1.0採用「槽位」(slot)組織各節點上的資源,而資源分配模型則決定如何將資源分配給各個作業/任務,在hadoop中,這一部分由乙個插拔式的排程器完成。

hadoop引入了「slot」概念表示各個節點上的計算資源。為了簡化資源管理,hadoop將各個節點上的資源(cpu、記憶體和磁碟等)等量切分成若干份,每乙份用乙個slot表示,同時規定乙個task可根據實際需要占用多個slot 。通過引入「slot「這一概念,hadoop將多維度資源抽象簡化成一種資源(即slot),從而大大簡化了資源管理問題。

更進一步說,slot相當於任務執行「許可證」,乙個任務只有得到該「許可證」後,才能夠獲得執行的機會,這也意味著,每個節點上的slot數目決定了該節點上的最大允許的任務併發度。為了區分map task和reduce task所用資源量的差異,slot又被分為map slot和reduce slot兩種,它們分別只能被map task和reduce task使用。hadoop集群管理員可根據各個節點硬體配置和應用特點為它們分配不同的map slot數(由引數mapred.tasktracker.map.tasks.maximum指定)和reduce slot數(由引數mapred.tasktrackerreduce.tasks.maximum指定)。

hadoop 1.0中的資源管理存在以下幾個缺點:

(1)靜態資源配置。採用了靜態資源設定策略,即每個節點實現配置好可用的slot總數,這些slot數目一旦啟動後無法再動態修改。

(2)資源無法共享。hadoop 1.0將slot分為map slot和reduce slot兩種,且不允許共享。對於乙個作業,剛開始執行時,map slot資源緊缺而reduce slot空閒,當map task全部執行完成後,reduce slot緊缺而map slot空閒。很明顯,這種區分slot類別的資源管理方案在一定程度上降低了slot的利用率。

(3) 資源劃分粒度過大。這種基於無類別slot的資源劃分方法的劃分粒度仍過於粗糙,往往會造成節點資源利用率過高或者過低 ,比如,管理員事先規劃好乙個slot代表2gb記憶體和1個cpu,如果乙個應用程式的任務只需要1gb記憶體,則會產生「資源碎片」,從而降低集群資源的利用率,同樣,如果乙個應用程式的任務需要3gb記憶體,則會隱式地搶占其他任務的資源,從而產生資源搶占現象,可能導致集群利用率過高。

(4) 沒引入有效的資源隔離機制。hadoop 1.0僅採用了基於jvm的資源隔離機制,這種方式仍過於粗糙,很多資源,比如cpu,無法進行隔離,這會造成同乙個節點上的任務之間干擾嚴重。2. hadoop 2.0中的資源管理方案hadoop 2.0指的是版本為apache hadoop 0.23.x、2.x或者cdh4系列的hadoop,核心主要由hdfs、mapreduce和yarn三個系統組成,其中,yarn是乙個資源管理系統,負責集群資源管理和排程,mapreduce則是執行在yarn上離線處理框架,它與hadoop 1.0中的mapreduce在程式設計模型(新舊api)和資料處理引擎(maptask和reducetask)兩個方面是相同的。

讓我們回歸到資源分配的本質,即根據任務資源需求為其分配系統中的各類資源。在實際系統中,資源本身是多維度的,包括cpu、記憶體、網路i/o和磁碟i/o等,因此,如果想精確控制資源分配,不能再有slot的概念,最直接的方法是讓任務直接向排程器申請自己需要的資源(比如某個任務可申請1.5gb 記憶體和1個cpu),而排程器則按照任務實際需求為其精細地分配對應的資源量,不再簡單的將乙個slot分配給它,hadoop 2.0正式採用了這種基於真實資源量的資源分配方案。

hadoop 2.0(yarn)允許每個節點(nodemanager)配置可用的cpu和記憶體資源總量,而**排程器則會根據這些資源總量分配給應用程式。節點(nodemanager)配置引數如下:

(1)yarn.nodemanager.resource.memory-mb

可分配的物理記憶體總量,預設是8*1024,即8gb。

(2)yarn.nodemanager.vmem-pmem-ratio

任務使用單位物理記憶體量對應最多可使用的虛擬記憶體量,預設值是2.1,表示每使用1mb的物理記憶體,最多可以使用2.1mb的虛擬記憶體總量。

(3)yarn.nodemanager.resource.cpu-vcore

可分配的虛擬cpu個數,預設是8。為了更細粒度的劃分cpu資源和考慮到cpu效能異構性,yarn允許管理員根據實際需要和cpu效能將每個物理cpu劃分成若干個虛擬cpu,而每管理員可為每個節點單獨配置可用的虛擬cpu個數,且使用者提交應用程式時,也可指定每個任務需要的虛擬cpu個數。比如node1節點上有8個cpu,node2上有16個cpu,且node1 cpu效能是node2的2倍,那麼可為這兩個節點配置相同數目的虛擬cpu個數,比如均為32,由於使用者設定虛擬cpu個數必須是整數,每個任務至少使用node2 的半個cpu(不能更少了)。

此外,hadoop 2.0還引入了基於cgroups的輕量級資源隔離方案,這大大降低了同節點上任務間的相互干擾,而hadoop 1.0僅採用了基於jvm的資源隔離,粒度非常粗糙。

Hadoop1 0與Hadoop2 0的區別

hadoop1.0即第一代hadoop,指的是版本為apache hadoop 0.20.x 1.x或者cdh3系列的hadoop,核心主要由hdfs和mapreduce兩個系統組成,其中mapreduce是乙個離線處理框架,由程式設計模型 新舊api 執行時環境 jobtracker和tasktr...

hadoop 10 資源管理器yarn

yarn管理集群中的資源,主要包含記憶體和處理器資源,分配資源。yarn目前支援三種排程器 fifo scheduler 先進先出,hadoop1中預設的一種排程器,如果乙個離線任務占用資源太多,對實時任務不友好。只有乙個佇列 capacityscheduler 可以看做是fifoscheduler...

Hadoop學習筆記 Hadoop初識

序言 資訊化發展到當今,網際網路的資料量是不斷地增加,那麼如何很好的處理以及利用這些資料可能是未來的乙個發展方向,這也之所以產生了各種平台的雲計算。對於網際網路而言,大資料量可分為兩種 第 一 大訪問量請求 第 二 大資料量處理。大訪問量請求這個事應用端應該思考的問題,如何很好的處理大的訪問量,如何...