一篇文章讓你弄明白Hadoop、SaaS、PaaS、IaaS的區別

要想正確理解一門技術,不妨理解它產生的背景,解決的問題。

背景一:世界需要更多的計算能力

信息技術時代的基石是建立在“計算”之上的。以搜索引擎為例,早期的搜索引擎是人工分類索引的,類似黃頁,但是隨著網站數量的增多,人工索引的工作量變得巨大,而且更新時效低得難以忍受了。後來的一波搜索引擎都採用了由計算機算法自動索引,查找相關文檔,並排序展示的方式。這種方式就導致了對計算能力的巨大需求,類似的趨勢出現在多種技術領域,即世界需要更多的計算能力。

背景二:單挑不如群毆,好漢敵不過人多

Intel其實已經很努力了,從19xx年人家就按摩爾定律狂奔,CPU的計算能力每一年半翻一倍,但是相比於業界的計算需求,不夠快!但沒關係,一個CPU不夠快,那我搞10000個,甚至100萬個,反正CPU是錢能買到的東西,錢能解決的問題,就不是問題。大概從90年代之後,超級計算機就是拿CPU搭積木玩兒了。

背景三:錢不是問題,問題是沒錢

但互聯網公司並不太用超算的體系結構(基於MPI的傳統HPC架構),主要原因有三:一是系統投入大,超算架構面向的應用多是計算密集,文件IO少的情況,但互聯網公司文件IO多,這樣會導致在存儲系統和網絡上要投入高成本才能有好性能;二是超算一般都是灰常牛逼的服務器加盤陣,硬件穩定性本來就好,所以容錯機制上不太重視,基本上是用checkpoint技術來搞錯誤恢復。牛逼服務器和盤陣,都是白花花的銀子呀。三是編程模型難用。我寫過MPI的程序,基本上腦子裡要設想成千上萬個進程的運行狀態以及它們之間的通信過程,還經常有全局的同步,想寫好也不容易。所以這個坑Google是不會跳,too smart to jump in.

一篇文章讓你弄明白Hadoop、SaaS、PaaS、IaaS的區別

正題一:一個好漢三個幫,一個Hadoop三個樁

Hadoop就是poor man's 天河二號。不要把Hadoop看成一個整體,拆開裡邊看看就清楚地知道它幹了什麼了。Hadoop包括以下三個核心組件:

  1. HDFS,這東西替換了盤陣,使得你有地方存數據了。相當於你的電腦有了C盤,D盤等。
  2. YARN,這東西是一個集群管理和調度軟件。相當於你的電腦裝上了Windows,現在可以跑各種應用程序了。YARN負責讓你的程序跑起來,萬一掛了還能自動幫你重啟進程。
  3. MapReduce,定義了集群上數據處理的基本操作。相當於你的電腦上裝了Visual Studio,現在可以開發自己的軟件了。

明白了麼,你自己買一坨爛電腦,把Hadoop往上一裝,相當於去電腦城給你的新電腦裝了個正版Windows + Visual Studio,回來就可以開心地擼代碼了,代碼自動就能安全高效地跑在那一坨爛電腦之上,跑得還挺快,是不是很棒?

正題二:光能用是不夠的,好用才是我所需

客戶是不會滿足的,Hadoop很牛逼了,但是程序員的惡夢是不會離開的:“什麼?需求又改了?!!” 如果說MPI是分佈式計算的彙編語言,那麼Hadoop的MapReduce相當於C,把所有計算都拆成Map和Reduce兩個過程真是:too young, too simple, sometimes naive。Spark相當於分佈式計算裡的Java,萬物都是RDD,在RDD之上你可以方便地進行更高層的操作。所以Spark和Hadoop不是一個層次的東西,大家一看去年的新聞說Spark排序速度是Hadoop的100倍,所以Hadoop要死,Spark要火,我只能說“呵呵”。但我個人覺得Spark還是蠻有前途的,易用性是大家所愛呀……Spark和Hadoop雖有重合,但Spark是不可能也沒打算替換整個Hadoop的。

偏題一:XaaS是什麼東西?是生意

aaS = "as a Service",翻譯過來就是:你出錢,我服務你。

SaaS 賣軟件的。你什麼也不用幹,只要出錢,我直接給你能用的軟件。比如Gmail:給你郵件軟件直接用,http://github.com:給你版本控制軟件直接用,Office 365:給你辦公軟件用,Photoshop Express:給你修圖軟件用。《黑客與畫家》講了互聯網軟件的優點,有興趣可以自己瞅。

PaaS 賣平臺的。你自己寫你的軟件,但是運行你軟件的平臺由我來提供,保證你的軟件運行。流行過的SAE什麼之類的,你拿(世界上最好的編程語言)PHP來寫個網站,上傳給我,我來給你把網站跑起來。你專心寫(抄)你的軟件,其它的事兒交給我。

IaaS 賣虛擬機的。我給你一坨虛擬機用,保證它們正常跑,能連網。虛擬機你怎麼用隨便你。代表作AWS, Azure,OpenStack等。這東西優勢明顯:比PaaS安全,因為虛擬機操作系統完全由你控制,別人很難改你的代碼或數據,PaaS就難說了;比自己搞機器省心,不用擔心虛擬機掉盤壞主板(關鍵數據和服務也一樣要備份!小心我大藍翔的挖掘機!)很有前途!

偏題二:什麼是雲計算?

我知道你這個土壕會渴,我想給你挖水井,通水管,安水錶,收水費來掙錢餬口。怕你不給我開門,所以我穿上制服,說我是自來水公司(哦,不,我是搞雲計算的)。十年後,可能每個公司甚至個人都會擁有相當於十年前google的計算能力,但是這幫新人對計算的理解可能連30年前的google都比不上(對,30年前google不存在,正如這幫新人腦中的分佈式計算知識……),但是這幫新人都是壕呀!所以我們這些懂分佈式計算的diao絲們,想辦法搞得利用這些牛逼的計算能力就像請客吃飯一樣簡單,來騙點兒錢,是為雲計算。

總結:其實雲計算很牛逼

如果無法操控,汽油不過是一把火。只有包上汽車這個外殼,它才能把你送到你想去的地方。計算資源就是未來的汽油,我們搞雲計算不是忽悠你們,搞雲計算是為了讓你們指哪去哪,解決你們手頭上需要算一算的問題。上面說的一切東西,都是為了使計算觸手可得,而且管夠。要想汽車跑得快,並不是說多加燃料就行,雲計算就是要解決如何充分利用原始計算資源,減少自身無謂損耗的問題。現在並不是一個已經被完全解決的問題。


分享到:


相關文章: