Transcript Chapter7

認識Hadoop
Outline
 什麼是Hadoop
 Hadoop的架構
 HDFS (Hadoop Distributed File System)
 HBase
2
什麼是Hadoop
Hadoop的架構
HDFS (Hadoop Distributed File System)
HBase
3
什麼是Hadoop?
 Hadoop is
 一個Apache專案
 分散式計算的平台
 提供使用者簡易撰寫並執
行處理海量資料應用程式
的軟體平台。
Cloud Applications
MapReduce
Hbase
Hadoop Distributed File System
(HDFS)
A Cluster of Machines
4
Hadoop起源(2002~2004)
 創辦人-Doug-Cutting
 Lucene
 用Java 設計的高效能文件索引引擎API
 索引文件中的每一字,讓搜尋的效率比傳統逐字比較還
要高的多
 Nutch
 Nutch 是基於開放原始碼所開發的網站搜尋引擎
 利用Lucene 函式庫開發
5
Hadoop轉折點
 Nutch後來遇到儲存大量網站資料的瓶頸
 Google在一些會議分享他們的三大關鍵技術
 SOSP 2003 : “The Google File System”
 OSDI 2004 : “MapReduce : Simplifed Data Processing on
Large Cluster”
 OSDI 2006 : “Bigtable: A Distributed Storage System for
Structured Data”
6
Hadoop起源(2004~Now)
 Doug-Cutting 參考 Google 提出的三項技術
 先後把 Distributed File System (NDFS) 以及 MapReduce 實
作在 Nutch
 在2006年時,Nutch 把分散式計算 (Distributed Computing)
的部分獨立出來,稱之為Hadoop專案
 Yahoo 雇用 Doug-Cutting 建立網頁搜尋引擎
 NDFS也改名為 Hadoop Distributed File System (HDFS)
7
Hadoop的特色
 海量 Vast Amounts of Data
 擁有儲存與處理大量資料的能力
 經濟 Cost Efficiency
 可以用在由一般PC所架設的叢集環境內
 效率 Parallel Performance
 透過分散式檔案系統的幫助,以得到快速的回應
 可靠 Robustness
 當某節點發生錯誤,能即時自動取得備份資料及佈署運
算資源
8
Google vs. Hadoop
開發團隊
Google
Apache
贊助者
Google
Yahoo, Amazon
資源
open document
open source
程式撰寫模式
MapReduce
Hadoop
MapReduce
檔案系統
GFS
HDFS
資料庫系統
Bigtable
Hbase
搜尋引擎
Google
Nutch
作業系統
Linux
Linux / GPL
9
什麼是Hadoop
Hadoop的架構
HDFS (Hadoop Distributed File System)
HBase
10
Hadoop的架構(1/3)
 Hadoop專案包含一些相關子專案
ZooKeeper
Avro
Pig
Chukwa
Hive
MapReduce
HBase
HDFS
Hadoop Core
11
Hadoop的架構(2/3)
 Core:
 核心部分包含一些分散式檔案系統及一般輸出入的重要元件
跟介面。
 Avro:
 一個有效率,跨越各種語言的RPC的資料序列化系統。
 MapReduce:
 一個分散式資料處理模式及執行環境。
 HDFS:
 一個分散式檔案系統。
 Pig:
 處理大量資料集的資料流語言與執行環境。
12
Hadoop的架構(3/3)
 HBase:

一個分散式以列 (row) 為導向的資料庫系統。
 ZooKeeper:

一個分散式協同服務,可以提供分散式應用程式的原始指令。
 Hive:

一個分散式資料倉儲系統,管理HDFS上所儲存的資料並提供
SQL為基礎的詢問語言。
 Chukwa:

一個分散式資料收集及分析系統。
13
什麼是Hadoop
Hadoop的架構
HDFS (Hadoop Distributed File System)
HBase
14
什麼是HDFS?
 Hadoop Distributed File
System
Cloud Applications
 實現類似Google File System
分散式檔案系統
 一個易於擴充的分散式檔案
系統,目的為對大量資料進
行分析
 運作於廉價的普通硬體上,
又可以提供容錯功能
 給大量的用戶提供總體性能
較高的服務
MapReduce
Hbase
Hadoop Distributed File System
(HDFS)
A Cluster of Machines
15
HDFS的特色(1/2)
 硬體容錯能力 Fault Tolerance
 硬體錯誤是正常而非異常
 自動恢復或故障排除
 串流式的資料存取 Streaming data access
 批次處理多於用戶交互處理
 高Throughput而非低Latency
 大規模資料集 Large data sets and files
 支援Petabytes等級的磁碟空間
 一致性模型 Coherency Model
 一次寫入,多次存取
 簡化一致性處理問題
16
HDFS的特色(2/2)
 在地運算 Data Locality
 到資料的節點上計算 > 將資料從遠端複製過來計算
 異質平台移植性 Heterogeneous
 即使硬體不同也可移植、擴充
17
HDFS架構的兩種關鍵角色
 名稱節點 NameNode
 整個HDFS只有一個名稱節點
 負責管理檔案系統的命名空間 (namespace)
 記錄所有檔案及目錄的metadata
 各項檔案屬性權限等資訊的管理及儲存
 記錄檔案的各個Blocks置放於哪些資料節點
 資料節點 DataNode
 可以多個資料節點
 處理使用者存取Block的請求,並定時地回報Block狀態
給名稱節點
18
HDFS的架構
名稱節點
第二組
名稱節點
資料節點
19
HDFS存取流程
(1)檔案名稱
名稱節點
Client
(2)檔案metadata
第二組
名稱節點
(3)存取資料
資料節點
20
HDFS檔案讀取
2: get block location
NameNode
1: open()
Distributed
FileSystem
HDFS
Client
6: close()
3: read()
FSData InputStream
client JVM
client Node
4: read()
DateNode
DateNode
5: read()
DateNode
21
HDFS檔案寫入
2: create file
NameNode
1: create()
Distributed
FileSystem
7: complete
HDFS
Client
6: close()
3: write()
FSData InputStream
client JVM
client Node
4: write packet
5: ack packet
4
4
DateNode
DateNode
DateNode
5
5
22
什麼是Hadoop
Hadoop的架構
HDFS (Hadoop Distributed File System)
HBase
23
什麼是HBase?
 HBase是一種分散式欄導向
(column-oriented) 資料庫
 可擴展的資料儲存
 在2008年Hadoop成為Apache
的專案時,HBase也成為其
子專案之一。
Cloud Applications
MapReduce
Hbase
Hadoop Distributed File System
(HDFS)
A Cluster of Machines
24
Hbase的好處
 分散式儲存
 表格式的數據結構
 高可擴展性
 高可用性
 高效效
25
許多公司都在使用HBase
 Adobe
 內部使用 (Structure data)
 Kalooga
 圖片搜尋引擎 http://www.kalooga.com/
 Meetup
 社群聚會網站 http://www.meetup.com/
 Streamy
 Migrate from MySQL to Hbase http://www.streamy.com/
 Trend Micro
 雲端掃毒架構 http://trendmicro.com/
 Yahoo!
 儲存文件 fingerprint 避免重複 http://www.yahoo.com/
 More - http://wiki.apache.org/hadoop/Hbase/PoweredBy
26
HBase的關鍵角色(1/2)
 HMaster
 負責監控HRegionserver slaves
 維持HRegionserver slaves 之間的負載平衡
 當HRegionServer 失敗時,轉移該Hregionserver 上的資料
到其它HRegionServer。
 HRegionserver slaves
 接受Client 端發送的請求 (寫/讀/瀏覽)
 負責回報HRegions 狀態給HMaster
 每個HRegionServer會被分配到多個 (也可能沒有)
HRegions
27
HBase的關鍵角色(2/2)
 ZooKeeper
 是一個集中式的服務機制
 存放HBase的綱要 (包含有哪些表格及column families)、
所有HRegion的位置及監控HRegionServer的狀態等
 提供維護資源配置資訊、命名、分散式同步機制及群組
服務等功能
 可為HBase提供穩定服務及故障轉移 (failover) 的機制
28
HBase的架構
29
Hbase 的Data Model
30
Example
Conceptual View
Physical Storage View
31
表格0
Hbase運作流程
Region
找出.META.
Region位置
找出-ROOT-位置
Region
表格1
Region
Region
Region
Region
Region
…
…
Region
…
ZooKeeper
-ROOT-
.META.
…
找出表格
Region位置
Region
表格n
Region
Region
…
32