Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[Data Science 到底是什麼從一個完全外行角度來看][04]Hadoop是什麼?

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://pixabay.com/en/math-blackboard-education-classroom-1547018/

在上一篇([03]Big Data到底是有多Big?)了解到了Big Data的3個V,也就是量、增長速度和多元格式的挑戰,這篇來看看讓管理一切變得有可能的軟體:Hadoop。

這篇將介紹Hadoop的由來,為什麼這麼重要,不同版本之間的差異,和基本架構。

Hadoop的歷史

image
hadoop的logo - 黃色大象

相信對於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,有兩個重要的核心:

  1. Hadoop Distributed File System(HDFS) - 分散式儲存資料
  2. MapReduce - 分散式運算

Hadoop的版本

基本上Hadoop有3個版本:

  1. 0.x 和1.x 版本 - 基本上應該沒人再用了
  2. 2.x 版本
  3. 3.x 版本

除了大版號的差異之外,小版本之間也是有在maintain,下面可以看到光2.x版本就有4個不同branch。

image
目前有在maintain的版本

0.x 和 1.x 版本

最早出來的版本基本結構如下:

image
0.x和1.x版本的架構

可以看到,當初只有兩個最重要的核心:

  1. HDFS
  2. MapReduce

其他第三方的應用,例如HIVE(hadoop上面的SQL)則需要自己處理和底層Hadoop的溝通。換句話說,假設別的套件之間要溝通,基本上做不到,或者要花很多工,因為兩者之間沒有一個共通的頻道

還有另外一個問題是,Hadoop屬於一個Master多個Slave的架構,換句話說,當Master掛掉了,整個就掛掉了,因此有Single Point Of Failure的問題。

因此2.x出現了。

2.x版本

因為互相之間溝通困難的問題,因此在2.x版本多出了所謂的Yet Another Resource Manager (YARN)

因此架構變成了:

image
2.x的架構

在2.x之後,可以看到,MapReduce不直接架在HDFS上面,而是在YARN的上面,其他的軟體例如HIVE也是在YARN上面,這個時候如果兩邊需要溝通,YARN提供這個渠道。

在2.x也增加了所謂的High Availability和Federation的模式,避免第一版的single failure的問題。

3.x版本

3.x版本最近剛剛正式版release(2017/12/13),因此屬於非常新的版本。

這個版本要求JDK版本一定要在8以上,並且YARN和HDFS的部分都有做出了改變,例如本來HDFS預設會儲存3份提供可靠的Storage,這個已經改成了另外一種模式稱為Erasure Coding不止可以維持本來的容錯機制,並且需要的空間更少。

這個部分了解的不算太多,在接下來的操作也會主要focus在2.x版本,因此有興趣可以去官網看到最新的調整。

結語

在這篇,用一個overview的方式快速介紹了Hadoop,了解了幾個重要的元素和Hadoop的幾個特色。

在下一篇([05]建立Hadoop環境 -上篇)要進入動手的階段(終於不是只有理論了),將會建立Ubuntu的VM並且把Hadoop架設起來,了解如何快速測試玩玩看Hadoop。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus