dragon820208 寫:
所以假設有一間公司,要從那間公司中的某台電腦Master(NameNode,JobTracker)發送執行
而Slave端(DataNode,TaskTracker)在某地的實驗室
會無法將公司的電腦與實驗室的電腦群叢集在一起?
這算是Hadoop的瓶頸嗎?

可以辦得到,只是不建議。(先從網路層下手)
不能說這是 Hadoop 的瓶頸,而該說原本 Hadoop 或者 Google 的論文情境就不是將「異地」抽象化成一組抽象的叢集。
為什麼?因為當你有 16 PB 的資料,要運算時,必須在內部網路之間傳輸,網路的效率就是影響幾時算完的因子。
在 RAID 中,只要有一顆硬碟是慢的,就會拖慢整個讀寫的效率(等最慢的那顆)。
同理,如果公司與實驗室之間的網路是很糟糕的,那某個運算 Job 恰巧要算的資料分佈在公司跟實驗室兩地。
當無法滿足「Data Local」與「Rack Local」時,就必須把資料從實驗室搬到公司進行運算,這時候就會拖慢整個 Job 的完成時間。
Big Data 的基本精神都是「減少資料在不同地點、不同機器之間搬運」,所以您講的情境恰巧違反了最開始的假設。
技術上已經有 BOINC 這樣的 Volunteer Computing 架構可以做到您講的事情。
(BOINC Server 負責分配資料給 BOINC Client 計算(Map),算完傳回結果給 BOINC Server 彙整(Reduce))
因此,不是 Hadoop 的錯,而是不同的應用場景,該用不同的工具。
- Jazz