iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 11
0
Data Technology

Data Science 到底是什麼 - 從一個完全外行角度來看系列 第 11

[Data Science 到底是什麼從一個完全外行角度來看][11]Hadoop總結 - 一切才剛剛開始

  • 分享至 

  • xImage
  •  

image
圖片來源: https://pixabay.com/en/books-spine-colors-pastel-1099067/https://pixabay.com/en/math-blackboard-education-classroom-1547018/
在上一篇([10]用.Net Core跑Hadoop MapReduce - Streaming介紹)透過Hadoop Streaming的幫助,改成用.Net Core 2.0的程式作為MapReduce的邏輯,基本上這個系列裡面的Hadoop介紹也要告一個段落。

這一篇,將會快速回顧到目前為止所了解到關於Hadoop的部分,再來介紹dHadoop Ecosystem,和3個比較常見的package介紹。

同步發表於我的部落格:http://blog.alantsai.net/2017/12/data-science-series-11-hadoop-conclustion-ecosystem-intro.html (部落格的格式會漂亮一些,ithome不支援html好不方便)

溫故知新

先來快速回顧一下到目前為止看了什麼:

從Big Data開始介紹,了解到Big Data裡面的3個V - 由於別的技術的可行性提高,Big Data成長也越來越快:鏈接
再來介紹了Hadoop的誕生 - 為了因應Big Data而誕生的程式:鏈接
在來手動用VM建立了一個pseudo-distributed mode的hadoop:上篇鏈接、下篇鏈接
有了一個可運作的hadoop之後,了解了Hadoop的核心:YARN和MapReduce:鏈接
接下來把Hadoop的VM複製出來用來建立一個worker - 打造了fully-distributed mode:鏈接
最後介紹了MapReduce的程式,先介紹原理,後來介紹如何用.Net Core寫一個:MapReduce原理、Hadoop Streaming執行.Net Core
從目前了解的來看,對於整個Hadoop的核心已經有了基本的概念,馬上浮現的問題是,這樣建立和管理Hadoop不會太麻煩嗎?透過MapReduce寫不同的邏輯太難寫了吧。

相信看完之後會有種感覺,Hadoop感覺很"底層",從應用程度來說太不Friendly(友善),並且要怎麼管理這些Hadoop Cluster?

題外話,Hadoop給我的感覺就像程式開發裡面的Assembly,速度快,但是不好寫,因此會使用High Level Language像C#。
因此,接下來看看一些在Hadoop上面的Ecosystem和所謂的Hadoop Distribution。

Hadoop Ecosystem

還記得之前提到Hadoop版本的時候介紹了2.0之後其中一個大改變就是加入了YARN。

YARN的加入讓在Hadoop上面開發變得更加的簡單,因此很多Application蓋在了Hadoop的上面,達到利用Hadoop的Cluster運算和HDFS。

下圖是一個Hadoop Ecosystem的幾個重要package,這邊會針對裡面的:

HIVE - 用類似sql語法執行MapReduce的方式
HBase - 在HDFS上面的NoSql儲存
Spark - 另外一種執行工作的模式
多做一些簡單介紹
image
Hadoop Ecosystem,來源:http://www.dotnettricks.com/learn/hadoop/apache-hadoop-ecosystem-and-components

HIVE

image
Hive Logo
HIVE一開始是由Facebook開發,後來捐出來變成一個Open Source專案。主要目的是讓懂SQL的人能夠快速上手能從HDFS取資料。

還記得之前提到要寫MapReduce感覺有點麻煩,HIVE其實就是一個使用類似SQL語法的語言,HiveQL來和MapReduce溝通的中間層。

換句話說,用HiveQL語法,HIVE會自動轉成MapReduce從HDFS裡面把資料取出來。

因此,懂SQL就能夠快速上手從HDFS裡面撈出資料。

下面是從Wikipedia截取的WordCount範例,可以看到,基本上會sql基本上看的懂在做什麼,把這個和Java和.Net Core版本做比較,對於會sql的人來說這個簡單多了

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);
LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;

更多資訊,請參考:官網

HBase

image
HBase logo
聽到Big Data最長聽到的就是No Sql database,也就是不像sql先定義好每個table有什麼欄位的另外一種Database。

HBase就是一個使用HDFS的No Sql Database。

HBase還提供吧資料儲存在Memory達到快速讀取HDFS資料的一個界面,更好的能夠和其他package結合,例如可以用HIVE去撈HBase的資料。

因為HBase速度的關係,有些會把cold data(封存用的資料少存取)放到HDFS裡面,而hot data(長存取的資料)放到HBase裡面。

題外話,HBase可以不架在YARN上面,只需要HDFS即可。
更多資料請參考:HBase

Spark

image
spark logo
基本上Spark是整個ecosystem最夯的部分,因為他解決了Hadoop的一個很致命的問題,過慢問題,官網說在最快的情況可以比Hadoop快100倍。

Spark的基本概念很簡單,以Hadoop來說,每一個階段的執行,都會把結果儲存在HDFS,換句話說很多IO操作。

Spark用了另外一個方式,前面一段output會是後面一段的input - 這個的儲存都是在Memory,換句話說減少了IO量,提升了速度。

或許會說,不是都cluster了嗎,怎麼還會慢?這邊的慢指的是相對來說。要記得,這邊處理都是ZB等級的資料,真的跑下去還是很花時間。
更多資料請參考:官網

從Ecosystem的圖可以看到其實還有很多重要的package,而看到這個也會發現Hadoop真的變成了一個很底層的核心。

看到了這麼多package了之後,有個問題會浮現出來,這麼多不同package要自己安裝不是很麻煩嗎?更別說package之間可能還有相容性問題,難道沒有一個一整包包好的服務嗎?還有cluster management怎麼辦?雖然有package做整件事情,但是怎麼整合呢?

這也是所謂的Hadoop Distribution

結語

這篇介紹了整個Hadoop的Ecosystem,並且挑出了3個最夯的:Hive、HBase和Spark。

本來這篇要把整個總結寫完,但是發現篇幅有點長,因此在下一篇在介紹Hadoop Distribution和相關的工作頭銜,Data Engineer介紹。

工商服務

小小介紹我們團隊成員

今年的團隊機制不知不覺就集合了10位隊(坑)友 - 大家幫忙多多關注別不小心我們就gg了 XD

** 一群技術愛好者與一名物理治療師的故事 提醒著我們 千萬不要放棄治療 **

小小的自我介紹

沉浸於.Net世界的後端工程師,樂於分享,現任台中Study4成員之一。除了程式以外,就愛看小說。

歡迎有任何問題或者建議都可以告訴我,可以再以下找到我:

部落格:Alan Tsai的學習筆記
我的Linkedin
我的粉絲頁
我的github
我的Slideshare
我的Twitter


上一篇
[Data Science 到底是什麼從一個完全外行角度來看][10]用.Net Core跑Hadoop MapReduce - Streaming介紹
下一篇
[Data Science 到底是什麼從一個完全外行角度來看][12]Hadoop總結(下篇) - 一切才剛剛開始
系列文
Data Science 到底是什麼 - 從一個完全外行角度來看30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言