對于我們這些文科,商科生來說。我們剛剛搞懂服務器,數據庫,C++,java等基礎語言是個什么東西的時候,大數據時代來了,科技蜀黍又玩起 Hadoop,HDFS,MapReduce,Common,Spark,Mahout,HBase,NoSQL,Cassandra,GFS, MapReduce, BigTable,Hive,Pig,python……這些蛇精病和大怪獸了。我不認識它們,還有什么妖怪沒記進來的,請各位繼續在評論里補充。
可各位大神能不能把這些混亂的技術妖詞(對不起,正是因為不懂,所以很亂),做一個生態的比喻?比成,一棵樹?一個城市?一個人的循環系統?隨便你比……總之讓我們這些技術白癡也能搞明白,它們之間是什么關系,誰是干什么的?
我暫且就按照一個由遠及近的順序,按照時間的早晚從大數據出現之前的時代講到現在。暫時按一個城市來比喻吧,反正Landscape的意思也大概是”風景“的意思。
早在大數據概念出現以前就存在了各種各樣的關于數學、統計學、算法、編程語言的研究、討論和實踐。這個時代,算法以及各種數學知識作為建筑的原料(比如鋼筋、磚塊),編程語言作為粘合劑(比如水泥)構成了一座座小房子(比如一個應用程序),形成了一小片一小片的村莊(比如一臺服務器)。這個時代村與村之間還沒有高速公路(GFS, HDFS, Flume, Kafka等),只有一條泥濘不好走的土路(比如RPC),經濟模式也是小作坊式的經濟。一開始互聯網并不發達,網速也不快,這種老土的方式完全應付得來,可是隨著社交網絡和智能手機的興起,改變了這一切。網站流量成百上千倍的提高,數據變得更加多樣化,計算機硬件性能無法按照摩爾定律穩定的提升,小村莊,小作坊生產的模式注定受到限制。人們需要更強大的模式...
起開始,人們以為只要有一個強大的中央數據庫,也就是在所有的村莊之間建一座吞吐量巨大,并且兼容并蓄(非關系型,NoSQL)的倉庫,用來中轉每個村莊生產的大量異質貨物就能夠拉動經濟的增長。可是沒過多久,人們就意識到這是一個too young to simple的想法,因為這個倉庫的大小也總是有上限的。
之后MapReduce的概念最早由 google提出,用來解決大規模集群協同運算的問題,既然一臺計算機性能有限,何不將他們聯合起來?其野心勃勃,希望為每個村莊都建立一條”村村通“公路,也就是GFS了,就是Google分布式文件系統的意思,將不同服務器的硬盤連接起來,在外面看起來就好像一塊巨大的硬盤。然后構建與其上的 MapReduce就是一座工廠調度每個村莊的勞動力和物資,讓這些村莊作為一個經濟體運轉起來。居民變得富裕起來了。
不過,富裕起來的只有”谷歌鎮“,世界的其他村鎮仍然過著原始的生活。這個時候雅虎和Apache的一幫人本著獨樂樂不如眾樂樂的精神,仿造google的思想,創建了 HDFS(Hadoop 分布式文件系統,對應GFS)、Hadoop(對應google的MapReduce),并公開了全部的藍圖,供全世界免費使用。這樣整個世界到處都建立起來了工廠,人們變得富裕起來了。這個時代,Hadoop叫做大數據基礎設施。
俗話說:飽暖思淫欲,工廠的領導不滿足于村鎮工廠的粗放型生產,也不再想雇用那么多的勞動力,所以Mahout、HBase、Hive、Pig應運而生,他們都是數控機床,加工中心,只需要幾名操作手就能夠讓整個工廠運轉起來,自此人們安居樂業,豐衣足食。
當然,少數更有野心的資本家,不滿足于現在的生產力,為了追求更高的利潤(這是資本主義的本質),開發了效率更高的系統Spark,可以10倍于Hadoop的速度生產產品,新的時代才剛剛拉開序幕...