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 中,使用者需要建立兩個程式或函數: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 倍。











留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header