Apache Spark筆記01_架構與介紹
Apache Spark架構圖
什麼是 Apache Spark?
- Apache Spark 是一個用於大規模資料處理的快速通用引擎。
- 它比僅使用 RAM 的 MapReduce 快大約 100 倍,如果使用磁碟則快 10 倍。
- 它建立在與 MapReduce 類似的範例之上。
- 它與 Hadoop 整合良好,因為它可以在 YARN 之上運行並可以存取 HDFS。
上述架構圖
資源/叢集資源管理器:
是一種軟體元件,用於管理叢集中連接的機器的各種資源,例如記憶體、磁碟、CPU。
Apache Spark 可以在許多叢集資源管理器(例如 YARN、Amazon EC2 或 Mesos)之上運作。
如果還沒有任何資源管理器,則可以在獨立模式下使用 Apache Spark。
Apache Spark 附帶了一組很棒的函式庫如下:
- Data frames 提供了一種以表格結構表示資料的通用方法。
可使 R 或 SQL 操作查詢資料變得可行,而無需編寫大量程式碼。 - Streaming Library 使得使用 Spark 處理快速傳入的海量資料流成為可能。
- MLLib是一個非常豐富的機器學習函式庫。
它提供了以分散式方式運行的非常複雜的演算法。 - GraphX使得用圖表表示大量資料變得非常簡單。其證明了使用多台電腦處理圖形的演算法庫。
像是以下這些應用情境都適用於Spark
- 對HDFS中儲存的大數據執行ETL(提取-轉換-載入)
- 產生推薦,針對大量使用者的協同過濾
- 執行複雜的圖形計算,例如 PageRank(Google 搜尋)
- 使用機器學習執行即時詐欺偵測
為何Spark會比Hadoop HDFS機制來得更快呢?
回顧Map Reduce流程
MapReduce 的運行流程如下:
從 HDFS 讀取數據,並將 MapReduce 的結果回存至 HDFS。
當然多階段的 MapReduce 是非常常見的。如果任務有多個 MapReduce 階段,那麼當第一個階段將數據寫入 HDFS 後,第二個階段會從 HDFS 讀取相同的數據,這導致了大量的延遲。
Hadoop MapReduce 的缺點如下:
- 批量設計(Batchwise design):每個 MapReduce 循環都需要從 HDFS 讀取並寫入數據,導致大量的延遲。
- MapReduce 的結構非常僵化,因此將邏輯轉換為 MapReduce 模式非常困難。
- 使用 Hadoop MapReduce 無法進行記憶體內計算(In-memory computing)。
Spark:它用記憶體取代了 HDFS。Spark 不需要每次都將數據寫入 HDFS,而是直接更新記憶體,這比磁碟快約 80 倍。
留言
張貼留言