寶付:30分鐘理解Spark的基本原理
1
Spark優勢特點
作為大資料計算框架 MapReduce 的繼任者,Spark 具備以下優勢特性。
01
高效性
不同於 MapReduce 將中間計算結果放入磁碟中,Spark 採用記憶體儲存中間計算結果,減少了迭代運算的磁碟 IO,並透過平行計算 DAG 圖的最佳化,減少了不同任務之間的依賴,降低了延遲等待時間。記憶體計算下,Spark 比 MapReduce 快 100 倍。
02
易用性
不同於 MapReduce 僅支援 Map 和 Reduce 兩種程式設計運算元,Spark 提供了超過 80 種不同的 Transformation 和 Action 運算元,如map, reduce, filter, groupByKey, sortByKey, foreach 等,並且採用函數語言程式設計風格,實現相同的功能需要的程式碼量極大縮小。
03
通用性
Spark 提供了統一的解決方案。Spark 可以用於批處理、互動式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。
這些不同型別的處理都可以在同一個應用中無縫使用。這對於企業應用來說,就可使用一個平臺來進行不同的工程實現,減少了人力開發和平臺部署成本。
04
相容性
Spark 能夠跟很多開源工程相容使用。如 Spark 可以使用 Hadoop 的 YARN 和 Apache Mesos 作為它的資源管理和排程器,並且 Spark 可以讀取多種資料來源,如 HDFS、HBase、MySQL 等。 02
Spark基本概念
RDD:是彈性分散式資料集(Resilient Distributed Dataset)的簡稱,是分散式記憶體的一個抽象概念,提供了一種高度受限的共享記憶體模型。
DAG:是 Directed Acyclic Graph(有向無環圖)的簡稱,反映 RDD 之間的依賴關係。
Driver Program:控制程式,負責為 Application 構建 DAG 圖。
Cluster Manager:叢集資源管理中心,負責分配計算資源。
Worker Node:工作節點,負責完成具體計算。
Executor:是執行在工作節點(Worker Node)上的一個程式,負責執行 Task,併為應用程式儲存資料。
Application:使用者編寫的 Spark 應用程式,一個 Application 包含多個 Job。
Job:作業,一個 Job 包含多個 RDD 及作用於相應 RDD 上的各種操作。
Stage:階段,是作業的基本排程單位,一個作業會分為多組任務,每組任務被稱為“階段”。
Task:任務,執行在 Executor 上的工作單元,是 Executor 中的一個執行緒。
總結:Application 由多個 Job 組成,Job 由多個 Stage 組成,Stage 由多個 Task 組成。Stage 是作業排程的基本單位。
03
Spark架構設計
Spark 叢集由 Driver, Cluster Manager(Standalone, Yarn 或 Mesos),以及 Worker Node 組成。對於每個 Spark 應用程式,Worker Node 上存在一個 Executor 程式,Executor 程式中包括多個 Task 執行緒。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69905323/viewspace-2658547/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 30分鐘理解GraphQL核心概念
- 30 分鐘理解 CORB 是什麼ORB
- 30分鐘SQL指南SQL
- 10 分鐘理解 ReduxRedux
- 30分鐘入門MyBatisMyBatis
- 30分鐘精通React HooksReactHook
- 30分鐘泛型教程泛型
- 10分鐘教你理解反射反射
- 30分鐘快速瞭解webpackWeb
- 【譯】30 分鐘入門 TypescriptTypeScript
- 30 分鐘 Qunit 入門教程
- 寶付oracle配置Oracle
- 30分鐘讓你掌握Git的黑魔法Git
- 30分鐘搭建你的靜態網站網站
- 30 分鐘快速入門 Docker 教程Docker
- 30 分鐘學會 Flex 佈局Flex
- 30 分鐘 Java Lambda 入門教程Java
- 十分鐘理解Java中的弱引用Java
- 10分鐘理解React生命週期React
- 理解JSON:3分鐘課程JSON
- 30分鐘徹底弄懂flex佈局Flex
- [譯] 30 分鐘 Python 爬蟲教程Python爬蟲
- 30分鐘讓網站支援HTTPS網站HTTP
- 30 分鐘內瞭解 IEC 61850
- 十分鐘理解 Java 中的動態代理Java
- 10分鐘理解JS引擎的執行機制JS
- 分庫分表的基本原理
- 三分鐘帶你理解JS原型JS原型
- 帶你一分鐘理解閉包
- 5分鐘帶你通過Javascript瞭解人工智慧的基本原理JavaScript人工智慧
- 10分鐘理解 Android View 事件分發機制AndroidView事件
- 30分鐘講清楚深度神經網路神經網路
- 前置機器學習(三):30分鐘掌握常用NumPy用法機器學習
- 1 分鐘學會 30 種程式語言
- 30分鐘,讓你徹底明白Promise原理Promise
- 30分鐘Git命令入門到放棄Git
- 30分鐘編寫一個Flask應用Flask
- 正規表示式30分鐘入門教程