Hadoop并不完全代表云計算,所以,要用Hadoop搭建完整的云計算平臺,答案是不夠。我們常說云計算,實際上還是通過計算機的大規模或者說海量處理來為生活中各式各樣的人和各行各業服務——所以,核心在“服務”。關于服務,展開來就是常用的那3種(也是事實上的標準):SaaS,PaaS,IaaS。對云計算來說,公有和私有,虛擬和存儲,這其實是相對討論的核心。
回頭說Hadoop。在Google三大論文的直接刺激下,Hadoop社區興起,而在眾多的開源實現中,Hadoop(主項目)可以說是所有已知云計算方面開源項目的一個Top項目。
云計算中有哪些構件?發展到目前的技術與規模,并沒有一個確切的定論,今天的說的話明天可能就不一樣了。但對Hadoop來說,實現了的部分,就是大部分企業在不斷發展中所遇到的大部分問題。直接上圖:
從整體生態系統的角度,從底層存儲,到中間的計算模型和框架,再到上層的邏輯處理和流、顯示,都有相應開源的實現。這就是你說的構件了。
包括我們看到的Hadoop2.0中,引入的新的處理框架,Spark,Storm,YARN(取代MR),都是Hadoop生態系統的完善與實現。
Hadoop實現的是在簡易硬件的基礎上進行盡量高可用性海量計算與處理的中上層模型。Hadoop處理了存儲(也只是一部分),虛擬化是沒有涉及的,而底層硬件Hadoop也是不涉及的,不管是Hadoop還是其他的項目,只是在軟件的層面想通過縱向或者橫向的拓展解決所有的問題是不現實的。Hadoop在硬件這方面,只是在實現中預留或者接入硬件特性,也就是在虛擬化這方面Hadoop只是個“APP”,不是“始作俑者”(用詞不當了)。
那么,完整的云計算平臺呢?
按照企業級來說,是要看具體的企業方向和企業類型的,包括IBM和VMware都有提供不同的解決方案。大致上一定是由單點–>集群–>多層(準分布式)–>硬件–>分布式(地域分布)來解決的。具體到Hadoop體系的技術,直接去對應上圖就好了。
從云計算這個概念出現到今天,資料可以說“浩如煙海”了,但很多資料只是互相復制黏貼,并沒有說到云計算的核心。我想提出的一個觀點是,完整的云計算平臺,依賴的是業務,提供的是存儲與支持。
沒有業務需求而是照搬網上的資料或者自認為“活用”了某些技術,都可能只是“娛人娛己”。我們看一下互聯網負載均衡技術是如何發展的就就更容易理解云計算:
客戶端緩存–>CDN緩存–>Apache&Nginx靜態頁面緩存–>PHP和Java動態內存–>Memcache&Other Nosql–>Mysql&Oracle–>HDFS&Other Big Table
從技術的角度看,所有問題解決起來都是層次化的(大家肯定都有寫Demo吧),都是根據不同的需求引入不同的技術,在單層單點乃至集群都無法解決問題的時候,新的計算框架,云計算與網格計算乃至動畫需要的大規模渲染都在需要的時候順理成章的引入。總之,完整的云計算平臺,對于不同的公司業務都是不同的,拿騰訊來說,平臺的組件多如牛毛,“平臺”只是提供最基礎的服務:存儲與支持,其他的都需要業務根據自身的特點在其上進行構建(相信大公司都是有自己的完整方案的,這里我就不能再說了……),至于提高什么樣級別的這種“服務”,就要看公司的業務規模,需要支撐的體系,乃至公司的決策戰略了等等。