Apache Spark筆記02_Parallel跟Distributed Computing比較與何謂Functional Programming


傳統的MapReduce工作創建迭代,需要對磁盤或HDFS進行讀寫。這些讀寫通常耗時且昂貴。Apache Spark通過保持大部分所需數據在內存中,避免昂貴的磁盤I/O,從而解決了MapReduce遇到的讀/寫問題,大大減少了總時間。



  • Spark是一個開源的在記憶體應用框架,用於分布式數據處理和對大數據量進行迭代分析。Spark在Apache Foundation的支持下提供,因此命名為Apache Spark。
  • Spark用於分散式數據處理。
  • Spark所有操作都發生在記憶體或RAM中。保持了大部分所需數據在記憶體中,避免了昂貴且耗時的磁盤I/O。
  • Spark在數據方面的擴展性非常好,非常適合大型數據集。
  • Spark主要使用Scala編寫,Scala是一種支持面向對象和函數編程的通用編程語言。
  • Spark在Java虛擬機(JVM)上運行。
  • Spark通過易於使用的Python、Scala和Java API使編程更加靈活。
  • Spark為數據工程問題和數據科學挑戰提供了大數據解決方案。
  • 數據工程師使用Spark工具,包括核心Spark引擎、集群和執行器及其管理、SparkSQL和DataFrames。
  • Spark還通過如SparkML和Streaming等庫支持數據科學和機器學習。

分散式計算,顧名思義,是一群計算機或處理器在幕後共同工作。
A group , or cluster of computers working together to appear as one system to the end user.


Parallel跟Distributed Computing比較

多數人會時常將分散式計算(Distributed Computing)和平/並行計算(Parallel Computing)這兩個術語交替使用,因為這兩種計算類型有許多相似之處。
然而,分布式計算和並行計算訪問內存的方式不同。
通常,並行計算共享所有內存,而在分散式計算中,每個處理器訪問其自己的內存。


分散式計算提供了可擴展性和模組化增長。
天生就是可擴展的,因為它們跨多台機器工作並可水平擴展。
用戶可以添加額外的機器來處理不斷增加的工作負載,而不是反復升級單一系統,實際上沒有可擴展性的上限。


其次,分散式系統因為使用獨立的節點可能會失敗,所以需要容錯和冗余。
分散式計算提供的不僅是容錯。
分散式計算提供了使業務持續運作的冗余。例如,運行八台機器集群的業務可以繼續運作,無論是一台機器還是多台機器離線。


何謂Functional Programming?
  • 是一種遵循數學函數格式的編程風格。
  • 代碼或程序的著重在解決方案“是什麼”,而不是“如何做”。
  • 歷史上,List Processing Language,即LISP,是第一種函數式編程語言,始於1950年代。
  • 如今多數程式語言,包括Scala、Python、R和Java都支援FP。 Scala是這一編程語言家族中最新的代表。Apache Spark主要用Scala編寫。
  • 在Scala中,函數可以作為參數傳遞給其他函數,由其他函數返回,並用作變數。 
  • 可以直接將函數應用於整個列表或數組,別於傳統可能要迴圈尋訪逐次執行。
  • Apache Spark能通過lambda函數將工作分配到工作節點並實現並行計算,從而快速處理大數據。所有函數式Spark程序本質上都是並行的。
  • 函數式編程應用了一種稱為lambda演算的數學概念。為了保持解釋簡單,lambda演算基本上說每個計算都可以表示為一個匿名函數,並應用於一個數據集。
  •  Lambda函數或操作符是用於編寫函數式編程代碼的匿名函數

Apache Spark 架構由三個主要元件組成:
第一個組成部分是數據存儲。數據集從數據存儲載入到記憶體中。任何與Hadoop相容的數據源都是可接受的。

第二個組成元素是高級程式設計 API 。Spark 具有 Scala、Python 和 Java 格式的 API。

最後一個元件是集群管理框架,它負責處理Spark的分散式計算方面。Spark 的集群管理框架可以作為獨立的伺服器存在,Mesos 或其他資源網路K8S或YARN。
集群管理框架對於擴展大數據至關重要。

Spark 驅動程式與集群通信,然後在 worker 節點之間分發 RDD。





留言

這個網誌中的熱門文章

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

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

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題