Transcript 下載/瀏覽
Hadoop:Addressing Challenges of Big Data Kamalpreet Singh, Ravinder Kaur 2014 IEEE International Advance Computing Conference (IACC), Gurgaon, 21-22 Feb, pp. 686 - 689 報告者:曾彥志 報告日期:2015/01/15 Outline • Introduction and Related work • Architecture • Increased throughput by migrating computations rather than data • Replica placement • Rack awareness policy • Conclusion Introduction and Related work (1/3) • Big Data指的是大量的資料,其膨脹的速度是非常的快,是很難使用 規則資料庫或是統計工具去管理的。 • Hadoop基本上是用於Big Data的分析與處理,根據Big Data,Hadoop 建立支援應用程式對Big Data的運行和解決的三大挑戰: 容量(Volume) 速度(Velocity) 種類(Variety) Introduction and Related work (2/3) • Hadoop就像是整個生態系統的協同工作,提供一套共同服務的專案, 將商品硬體轉換成連貫的服務,可靠地儲存海量的資料,還透過龐大 的分配,有效地處理這些資料。 • Haoop的關鍵屬性在於它是冗餘和可靠的,假設你失去了一個由於某 種故障的機器,不需要做任何事情,它就會立即自動複製您的資料。 Introduction and Related work (3/3) • 在傳統的方法中,企業使用功能強大 的電腦來處理現有的資料,但有一個 處理的上限。 • 而Hadoop遵循不同的方式和傳統企業 的方針,在Big Data中,先分解成較小 的碎片,使大量的資料可以高效和有 效地進行處理,完成所有子計算後再 結合在一起,並送回給應用程式。 Architecture(1/10) • Hadoop 有 兩 個 主 要 的 元 件 , MapReduce和檔案系統HDFS。 • MapReduce是Hadoop的處理部分 和管理工作。 • HDFS是指Hadoop分散式檔案統 中儲存了冗餘的計算資料。 • 專案是一組由Apache保護傘下提 供與Hadoop相關的任務援助工 具。 Architecture(2/10) A. MapReduce • Hadoop的MapReduce是一個程式設計模型及相關的實現,用於以高效 可靠、故障容錯的方式去處理大型資料集。 • MapReduce的任務劃分跨各個獨立區塊的配置,由使用者以完全並行 的方式處理輸入的資料,指定產生一組中間Map函數的<Key,Value> 對值。 • Map函數的輸出,被框架排序後,會作為輸入用戶的Reduce函數,用 來reduces/merges所有<Key,Value>對值與相同的中間關聯鍵。 Architecture(3/10) MapReduce的工作步驟 MapReduce框架將輸入的資料拆成片段。 片段傳遞給不同的機器/群集做計算。 Map的腳本,由使用者編寫處理部分,將資料運行在每台機器上,並 產生一組中間的<Key,Value>對值。 由 MapReduce程式庫 使用一組相同 的金鑰組合在 一起 ,並傳遞 給 Reduce函數進行聚合。 Reduce的腳本,也是由使用者編寫,需要收集中間的金鑰值,將它們 合併成較小的集值。 Architecture(4/10) Architecture(5/10) 執行 • MapReduce是Hadoop的處理部分和管理工作,它有兩個部分 : Job Tracker Task Tracker • Job Tracker負責接受使用者的工作,將其劃分成更小的組件和調度個 別的Task Track進行計算,如果Task Tracker 失敗,它還負責監測Task Tracker和重新執行該任務。 • Task Tracker負責運行,一但完成了分配給它的任務,Job Tracker將結 果組合,並將最後結果回傳給應用程式。 Architecture(6/10) 容錯計算 • Hadoop有內建牢記硬體和軟體故障的功能,如果任何群集的失敗或是 Task Tracker服務失敗,Job Tracker會透過定期監察工作追蹤檢測故障, 並委派相同的工作給其他的Task Tracker。 • 容錯能力不僅限於從屬的Task Tracker,為了避免單點故障,如果Job Tracker失敗,企業版的Hadoop會保持兩個主機,一個作為主要主機, 一個作為備份主機,當主機死亡的情況下還能繼續使用。 Architecture(7/10) B、HDFS •HDFS是Hadoop分散式檔案系統設計為了儲存和對商品化的硬體支援可靠 地、高效地大量的資料集。 •Hadoop分散式檔案系統具有主/從架構: Name Node作為主節點 Data Node作為從屬節點 Architecture(8/10) Name Node • Name Node作為HDFS的協調員,保持資料的位置索引、管理檔案系統 的命名空間和調整用戶端對檔案的存取。 • Name Node本身不儲存任何資料,任何資料也不會流經Name Node,它 只 確 定 並 追 蹤 檔 案 區 塊 到 Data Node 的 配 置 , 充 當 HDFS 超 資 料 (MetaData)的儲存庫。 • 任何需要的資料,在應用程式第一次接觸到Name Node時,就提供了 包含該檔案資料區塊的位置,同時儲存/寫入資料到HDFS,Name Node 會選擇一組Data Node用來儲存區塊的副本。 Architecture(9/10) Data Node • Data Node是由Name Node 確定負責儲存檔案的區塊。 • Data Node的服務來自於檔 案系統用戶端資料的讀寫 請求。 • 也是由Name Node負責接 到指示後進行建立、刪除、 複製的區塊。 Architecture(10/10) 資料的容錯能力 • 在Hadoop中,失敗被視為規範,而不是例外情況,Name Node可以透 過心跳和從Data Node接收到的區塊報告,確保每個資料區塊總是具有 副本所需的數量。 • Name Node還能透過均勻分佈的資料區塊和其副本的複製,來防止Data Node過度的複製,因此,如果一個Data Node由於某種原因失敗,仍然 可以從其他Data Node檢索其副本的資料。 Increased throughput by migrating computations rather than data • 當資料的大小非常大時,始終是更有效地請求應用程式執行需要操作 的資料儲存計算。 • 在Hadoop中,MapReduce框架和分散式檔案系統HDFS運行在相同的節 點集合,也就是說,儲存和計算節點都是相同的。 • Hadoop框架的配置減少了網路壅塞,增加頻寬跨群集的計算,更接近 於資料(或其副本),而不是將大型資料集遷移到運行應用程式,這樣的 做法增加了系統的整體輸送量。 Replica placement • 副本的配置是HDFS可靠性 和性能的關鍵,HDFS充當 一個自我修復系統,如圖所 示。 • 假設第二個Data Node發生 故障,我們仍然有兩個其他 的Data Node具有所需的資 料副本。 Rack awareness policy • 一個HDFS檔是由區塊組成,每 當一個新的區塊儲存資料,所需 的Name Node會分配一個區塊具 有 獨 特 的 區 塊 ID, 並 確 定 Data Node到主機副本的區塊清單, 然後資料從用戶端序列的最小距 離流動到Data Node。 • 如圖所示,節點由一個或多個核 心交換器傳播,共享多個框架的 交換器連結,Name Node充當中 心 位 置 , 有 助 於 解 決 每 個 Data Node框架位置中的超資料。 Conclusion • Hadoop最初的設計是用於批次導向的處理工作,例如:建立網頁索引、分析日誌數據, 而不被使用在線上交易處理、線上分析處理和決策支援系統的工作負載,是因為資料是 隨機或按順序地在一個關係數據的結構化數據上產生報告。 • 然而,Hadoop是可靠的(不論是在計算或是資料方面)、容錯、可擴展和強大的,也是目 前廣泛被使用在Yahoo!、Amazon、Facebook、IBM、Netflix和Twitter上,制定和執行大 規模分析或應用程式的龐大資料集。 • Hadoop的MapReduce框架還簡化了程式工作者的工作,不必再擔心資料檔案的位置和錯 誤管理,程式工作者只需要專注於撰寫程式就好。 謝謝聆聽