標籤:

從分散式說管理(上)

目前正在做Hadoop相關的工作,有機會對比管理機器和管理人的異同,發現在很多方面兩者是類似的,本質上都是分散式的協同;但又因為人是有思想的,細節上還是有很多區別。本篇先對比兩者的相同點。

1. 模式類比

Hadoop管理的是一堆機器,公司里管理的是一群人。Hadoop的核心思想就是分而治之,一個大的任務被分配給整個集群,由master角色拆解成小任務分配給slave角色,通過分工完成細分任務,最終再將結果彙報給master進行結果的統一匯總。

這個過程中,有:

任務拆解:由master進行任務拆分,分配到下面具體的slave;

資源調度:master會監控每個slave的狀態,把任務交給合適的slave;

心跳機制:slave定期上傳心跳,彙報最新節點狀態;

冗餘機制:當某個slave無法完成某個task時,master會在其他slave重新調度這個task,從而保證整個job的正常運行。

換成人,簡直一模一樣:

任務拆解:由manager分解任務,分給一線執行人員;

資源調度:manager得了解每個部門成員的狀態,把任務交給合適的人;

心跳機制:員工要每周/每月提交周報/月報,告訴manager自己的當前情況;

冗餘機制:保證員工有技能重疊(大公司愛造螺絲釘的原因),防止單個員工出現情況而影響整個項目的進度。

2. 架構升級

Hadoop1.x的時代,存在Jobtracker這個角色,它既要管理Tasktracker(slave角色),又要監控作業狀態,壓力過重容易形成單點瓶頸。同時,需要HA,不能Jobtracker掛掉就影響整個集群。

到了Hadoop2.x時代,YARN的出現把角色進行了拆分,分解出ResourceManager、ApplicationMaster、NodeManager三種角色。ResourceManager只管集群資源的分配、任務的接受,具體任務的拆解、執行、監控則轉交給ApplicationMaster,NodeManager則承擔執行者的角色。

這個架構和1.x版本的區別,就是對管理角色的拆解。原來的管理者既要管資源又要管任務壓力太重,現在則只管資源,只要有足夠的資源,就把作業交給ApplicationMaster去處理;ApplicationMaster則統籌任務的執行,保證任務拆解、順利執行、出錯重試等,需要資源時向ResourceManager申請即可。至此資源管理和作業執行完成拆解。

換到管理人上:

一個部門或一個公司一開始人少,管理者既要管理人員,又要監控多個項目進度,壓力過大。後面慢慢就開始了分化,manager負責協調人力,而項目的細節則交給具體的team leader或者項目經理。manager作為管理者依然統籌部門事項,負責對外介面。執行的權力被下放到中層,中層必須對項目深思熟慮,將心思花在如何更好地完成項目上,把事情做細緻。同時,從容錯角度,manager還得配副手,緊急時刻副手能夠快速接過管理職能,防止部門宕機。

從整體上看,管理分散式系統跟管理人非常類似,全局框架差的不多。

可是,人跟機器最大的區別在於人是不同的、異構的,每個人都有自己的背景、立場、處境、想法,正是這一點不同,導致了管理人跟管理機器的截然不同。如果把人當做機器管理,一視同仁,會出非常多的問題,而這正是技術管理者最難想明白最難做好的點。

關於對管理人的思考,請看下篇。


推薦閱讀:

從頭學習大數據培訓課程 hadoop 分散式計算框架(十)mapreducer 編程,任務工作鏈、生產項目打包方式
Spark排序的原理?
做大數據相關專業,如Hadoop、Hive、Impala等研究與優化的人就業情況如何呢?
從頭學習大數據培訓課程 Hadoop 系列教程(七)yarn 原理以及日常使用
數據之路(Hadoop)我該如何打好基礎?

TAG:Hadoop | 管理 |