大資料分析技術的濫觴
Hadoop MapReduce
莊家雋
1
接著,讓我們關注存、取、算
2
傳統計算機科學思維
• 有一個問題,找出一個答案
• 傳統的資料處理模式:集中式
• 讓電腦快一千倍,這個問題就解的出來
3
CPU
Mem
disk
CPU
Memory
disk
CPU
Memory
disk
磁碟陣列
新式計算機科學思維
• 有一堆資料,找出有用的情報
• 給我的資料多一千倍,這個問題才解得出來
• 以電腦翻譯為例:
– 傳統方法:字典 + 文法 + 例外
• 干货 vs. 乾貨 or 幹貨…
– 統計翻譯:比對同一文章之不同語語版本,建立統計
模式
• 以拼字校正為例:
– 傳統方法:建立字典
– Google法:看大家都怎麼打
4
大資料面臨的三個挑戰
5
大資料
的3V
Volume:
資料量非常龐大,
單獨的表格、電腦主機
、資料庫無法存放
Velocity:
資料產生的速度太快
,以致於系統無法即時
提供反應。
Variety:
不同的來源、格式、
類型,資料內容又
包含了不需要的成份。
解決Variety
6
大資料
的3V
Volume:
資料量非常龐大,
單獨的表格、電腦主機
、資料庫無法存放
Velocity:
資料產生的速度太快
,以致於系統無法即時
提供反應。
Variety:
不同的來源、格式、
類型,資料內容又
包含了不需要的成份。
資料來源不夠〝乾淨〞
• 讀取資料、清洗資料
– 非常無趣,且通常要花掉專案80%的時間,但又會影
響到分析的成果
7
無法預期的資料格式與內容
• 使用需事先定義好資料格式的方式不再適合
– 資料庫表格
• 自我描述的資料格式
– Key/value 型式的資料格式
– XML檔案, JSON檔案
– NoSQL HBase資料庫
8
如何透過分散式系統解決Volume
9
大資料
的3V
Volume:
資料量非常龐大,
單獨的表格、電腦主機
、資料庫無法存放
Velocity:
資料產生的速度太快
,以致於系統無法即時
提供反應。
Variety:
不同的來源、格式、
類型,資料內容又
包含了不需要的成份。
樣本 = 母體 時代來臨
• 整體的資料搜集困難,導致統計學的發展
• 抽樣的隨機性決定統計的正確性
• 當樣本 = 母體,要用來處理的資料通常都很大
10
當資料多出1000倍
• 如何儲存這麼多的資料
– 1000億個網頁
– 每個網頁大小20KB
– 1000億個網頁 * 20KB = 2000TB
• 讀個檔案都要讀到天荒地老
– 硬碟讀取速度:50MB/sec
– 讀完全部的網頁:40000000 秒 = 460天
• 更不用想要去處理它
11
一個便當吃不飽,可以吃二個
• 一台機器無法處理,就用多台機器同時處理
– 分散式系統
– 易於橫向擴充,scale-out
CPU
Memory
disk
CPU
Memory
disk
CPU
Memory
disk
CPU
Memory
disk
CPU
Memory
disk
CPU
Memory
disk
分散式系統的挑戰
• CAP定理
– 資料一致性:[C]onsistency
– 系統可用系:[A]vailability
– 分區容忍性:[P]artition Tolerance
• 全世界最大的廣告公司Google
– 提出GFS、MapReduce、BigTable等針對大資料應用
的分散式技術
13
自己打造一個分散式系統?
• 開發一個分散式系統很難
– 主機間如何溝通
– 系統的可靠性設計
– …
– 用人家寫好的很簡單
• Hadoop 生態系
– HDFS
– MapReduce
– HBase
– Hive…
14
分散式檔案系統:HDFS
• 在分散式的儲存環境裏,提供單一的目錄系統
• 每個檔案被分割成許多區塊並進行異地備份
15
HDFS檔案1 檔案2
分散式檔案系統:HDFS
• 移動運算到資料端比移動資料到運算端來的成本低
– 減少資料搬運
16
CPU
Memory
disk
磁碟陣
列
分散式運算系統:MapReduce
• 一個問題被分割之後而成的小問題。解決一個問題,
其實就是要解決其所有子問題。
• 分而治之,各個擊破
– 傳統方法
• 分而治之,”同時”各個擊破
– MapReduce
• Map:解決每個子問題
• Reduce:將子問題的解答做匯總
• 針對key/value的資料類型做分析
17
台灣最熱衷的全民運動
18
•台北市10個選區,共100萬票,要算出每個候選人的得票數
Id:A151
選2號 Id:B257
選5號
號次 票數
1 1
1 1
3 1
… …
號次 票數
2 1
1 1
… …
號次 票數
3 1
2 1
1 1
號次 票數
1 1
3 1
3 …
號次 票數
3 1
2 1
3 1
監票人1
[負責1區]
監票人2
[負責2區]
監票人3
[負責3區]
監票人4
[負責4區]
監票人5
[負責5區]
號次 票數
1 1
1 1
1 1
1 1
1 …
中選會
[負責 全部的候選人]
號次 票數
5 1
1 1
7 1
… …
號次 票數
2 1
1 1
… …
號次 票數
5 1
2 1
1 1
號次 票數
1 1
5 1
3 …
號次 票數
4 1
2 1
6 1
由各投開票所送到中選會
號次 票數
2 1
2 1
2 1
2 1
2 …
號次 票數
3 1
3 1
3 1
3 1
3 …
19
號次 總票數
1 187532
號次 總票數
2 574821
號次 總票數
3 237647
日誌分析 - Mapper
20
•(k1, v1)  list(k2, v2)
日誌分析 - Reducer
21
•(k2, list(v2))  (k3,v3)
凡事都有一個BUT
• 對已經存在的一大堆資料,提供一個有效的平行運算
機制
– 得到結果所需的時間不夠快
– 通常用在歷史資料分析
– 批次性處理
• 對於快速產生的資料無法立即回應
– 即時性處理
22
如何透過分散式系統解決Velocity
23
大資料
的3V
Volume:
資料量非常龐大,
單獨的表格、電腦主機
、資料庫無法存放
Velocity:
資料產生的速度太快
,以致於系統無法即時
提供反應。
Variety:
不同的來源、格式、
類型,資料內容又
包含了不需要的成份。
即時性資料處理
• 對於即時資訊、訊號需要立馬提供反應
24
步驟1 步驟2 步驟3 步驟4
主機1 主機2 主機3
主機4 主機5
即時處理遇上批次處理
• 由批次處理分析歷史資料
• 由即時處理做出快速回應
25
Yahoo!的PinBall系統
• 結合批次處理與即時處理的優點
– 批次推荐:找出消費者有興趣的產品
– 即時推荐:找出潛在的購買者
26
國網中心提供的服務
• 實體機器Hadoop平台
– HDFS、MapReduce、Hive、HBase
• 虛擬機器Hadoop平台:EasyCloud
• 建置與開發教育訓練
27
結語
• 大資料應用的重點在資料分析
• 不論是MapRedcue還是Excel,能找出潛在資訊的工
具就是好工具
• 當單一機器無法處理時,可以使用分散式系統的技術
幫助我們
• 國網中心提供Hadoop平台與教育訓練,提供國內學
研界與政府機構使用
28

大資料分析技術的濫觴