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