在上一篇([03]Big Data到底是有多Big?)了解到了Big Data的3個V,也就是量、增長速度和多元格式的挑戰,這篇來看看讓管理一切變得有可能的軟體:Hadoop。
這篇將介紹Hadoop的由來,為什麼這麼重要,不同版本之間的差異,和基本架構。
Hadoop的歷史
相信對於Hadoop這個詞應該不會陌生,畢竟Hadoop不算是新的東西,自2006誕生以來已經有11年的時間,因為Big Data的關係,多多少少都會提到它。
Hadoop的誕生是因為Google release了一份paper,裡面描述了Google內部的MapReduce(運算)和Google File System(儲存)的運作概念,然後由Doug Cutting用Java把它實作出來,並且用他兒子的 黃色大象玩具的名字命名,因此Hadoop就誕生了。
Hadoop的特色
基本上,Hadoop提供了一個用串聯一般電腦來達到處理Big Data所需要的儲存和運算。
這邊,一般電腦非常重要,因為意味著不需要超級電腦就可以裝。一般來說,Scale up(把單一硬體加大)永遠是比Scale Out(平行擴展多台串聯)還要來的貴很多。
因此,當提到Big Data的時候,都會提到Hadoop,因為Hadoop讓儲存大資料量和運算大資料量變得親民。
Hadoop,有兩個重要的核心:
- Hadoop Distributed File System(HDFS) - 分散式儲存資料
- MapReduce - 分散式運算
Hadoop的版本
基本上Hadoop有3個版本:
- 0.x 和1.x 版本 - 基本上應該沒人再用了
- 2.x 版本
- 3.x 版本
除了大版號的差異之外,小版本之間也是有在maintain,下面可以看到光2.x版本就有4個不同branch。
0.x 和 1.x 版本
最早出來的版本基本結構如下:
可以看到,當初只有兩個最重要的核心:
- HDFS
- MapReduce
其他第三方的應用,例如HIVE(hadoop上面的SQL)則需要自己處理和底層Hadoop的溝通。換句話說,假設別的套件之間要溝通,基本上做不到,或者要花很多工,因為兩者之間沒有一個共通的頻道。
還有另外一個問題是,Hadoop屬於一個Master多個Slave的架構,換句話說,當Master掛掉了,整個就掛掉了,因此有Single Point Of Failure的問題。
因此2.x出現了。
2.x版本
因為互相之間溝通困難的問題,因此在2.x版本多出了所謂的Yet Antoher Resource Manager (YARN)
因此架構變成了:
在2.x之後,可以看到,MapReduce不直接架在HDFS上面,而是在YARN的上面,其他的軟體例如HIVE也是在YARN上面,這個時候如果兩邊需要溝通,YARN提供這個渠道。
在2.x也增加了所謂的Hig Availability和Federation的模式,避免第一版的single failure的問題。
3.x版本
3.x版本最近剛剛正式版release(2017/12/13),因此屬於非常新的版本。
這個版本要求JDK版本一定要在8以上,並且YARN和HDFS的部分都有做出了改變,例如本來HDFS預設會儲存3份提供可靠的Storage,這個已經改成了另外一種模式稱為Erasure Coding不止可以維持本來的容錯機制,並且需要的空間更少。
結語
在這篇,用一個overview的方式快速介紹了Hadoop,了解了幾個重要的元素和Hadoop的幾個特色。
在下一篇([05]建立Hadoop環境 -上篇)要進入動手的階段(終於不是只有理論了),將會建立Ubuntu的VM並且把Hadoop架設起來,了解如何快速測試玩玩看Hadoop。
沒有留言 :
張貼留言