最近hadoop社群最火熱的事情莫過於hortonworks公布了hadoop最新版本(0.23.0),它標誌著hadoop新時代的到來。本文作為系列文章的第一篇,將結合hadoop-0.20.*的特點,以及hadoop核心理念,分析hadoop新版本的特徵。
1、hadoop 0.20.*的侷限性
1)擴充套件性問題。可以隨著資料量進行水平擴充套件,而元資料伺服器不能擴充套件。
2)隨著檔案數目的增長,元資料伺服器的壓力變大。據統計,2.5億個檔案在namenode中namespace佔據
的大概64gb的記憶體空間。
3)檔案操作的吞吐率受到單個元資料伺服器的限制。目前,hadoop 0.20.*版本可以達到120k readops/sec,6000 writeops/sec.
4)隔離性的問題。0.20.*版本中,乙個namenode對應著唯一的namespace,所有檔案、應用、使用者公用同一的名字空間。存在訪問許可權控制的問題,不利於在hdfs在公有雲環境下的應用。
(ps:圖1為0.20.*版本下hdfs架構圖)
圖1 hadoop0.20.* hdfs architecture
1)集群資源利用率較低。整個集群資源按照固定slot為單位進行資源分配,沒有考慮maptask、reducetask任務的特點和邏輯關係進行不同的配置。
2)僅支援mapreduce程式設計模型。在hadoop框架內實現pagerank、logical regression等迭代演算法,需要將演算法對映成mapreduce的組合、或者使用pig、casscading、hive等應用層的邏輯描述,不能從模型本身去表達,演算法效能受到了影響(10x slower)。
(ps:圖2為0.20.*版本下mapreduce執行架構圖)
圖2 hadoop mapreduce執行流程圖
1)jobtracker的負載較重。jobtracker負責作業和任務的初始化、以及提供tasktracker的rpc server、任務的排程等任務。因此,jobtracker一旦故障,所有執行的任務的狀況丟失。
2)擴充套件性問題。jobtracker目前最多支援4000nodes、40000個concurrent tasks。
2、hadoop核心理念
3、hadoop-0.23的new features
1) namespace與block management解耦。
hadoop0.20.*僅有乙個namenode,整個系統使用統一的namespace,系統所有對於檔案的操作都要經過唯 一的namenode來進行,造成了namenode負載過重。圖3為namespace和block storage的關係圖。
圖3 namespace和block storage
hadoop0.23支援多個namespace,每個namenode都對應乙個namespace。配置人員可以根據應用的特點,選擇合適的namespace劃分的方式。所有的datanode被全部的namenode共享,也就是每乙個namenode中namespace下的檔案可以分散在任意的datanode上。系統提供了乙個公共的block pools隔離了namespace與block互動。圖4為hdfs federation architecture
圖4 hdfs federation architecture
1)程式設計模型與執行時框架解耦。
hadoop0.20.*執行時框架分為jobtracker和tasktracker,jobtracker負責maptask和reducetask的初始化、排程和資源分配。tasktracker負責maptask和reducetask的執行。執行環境已經烙上了mapreduce程式設計模型的map->sort[->combine]->partition->shuffle->merge->reduce過程...這個執行時環境都在圍繞這個過程準備,然而這種方式是hadoop在分布式計算領域擴大發展的最大瓶頸,因為如果要在hadoop執行的任務,就需要根據不同的型別計算對映成乙個或者多個mapreduce過程,而這些過程在處理迭代、更新頻繁的應用時就顯得過於繁瑣。
hadoop0.23最大的亮點,個人認為將jobtracker的mapreduce程式設計模型從執行時環境中剝離,mapreduce變成了hadoop的程式設計庫。從而,在執行時環境之上靈活開發mapreduce、dag、iterative mr等程式設計模型,實現對於多種應用場景的支援。
圖5 hadoop yarn architecture
2)執行時環境的擴充套件性與單點故障問題。
執行時環境的擴充套件性是支援更多的工作節點,同時執行更多的任務。hadoop之前版本由於是jobtracker不僅管理集群內資源分配,還要管理任務的排程,造成整個系統擴充套件性不強,並且jobtracker成為作為脆弱的一環。由於在jobtracker需要繁忙的資訊互動,並且所有資訊僅保留乙份,宕機之後執行作業的資訊丟失,這已經成為制約hadoop繼續擴大規模的重要影響因素。
hadoop0.23為了解決單點故障問題。一是如上所說把之前作業內部任務的管理分離出去,減輕中心節點的負載。二是使用zookeeper集群快取resource manager的狀態資訊,保證關鍵資料的可靠性,當重啟之後,保證重要資料不丟失。
4、參考資料
[1]hadoop0.23.0
[2] hdfs federal
[3} hadoop next mapreduce generation
轉至
轉至
Hadoop學習筆記 Hadoop初識
序言 資訊化發展到當今,網際網路的資料量是不斷地增加,那麼如何很好的處理以及利用這些資料可能是未來的乙個發展方向,這也之所以產生了各種平台的雲計算。對於網際網路而言,大資料量可分為兩種 第 一 大訪問量請求 第 二 大資料量處理。大訪問量請求這個事應用端應該思考的問題,如何很好的處理大的訪問量,如何...
Hadoop學習一 Hadoop版本
一.hadoop社群版和發行版 社群版 我們把apache社群一直開發的hadoop稱為社群版。簡單的說就是apache hadoop 發行版 基於apache hadoop的基礎上進行商業改造的解決方案,包含一系列定製的管理工具和軟體。二.hadoop社群版版本號 一直以來,hadoop的版本號一...
Hadoop(二)Hadoop集群搭建
準備好三颱centos系統,配置如下 主機名centos1 centos2 centos3 ipcentos1的ip centos2的ip centos3的ip centos7修改主機名命令 hostnamectl set hostname 配置三個centos的ip對映,修改 etc hosts,...