1. 程式人生 > >大資料基礎之Spark

大資料基礎之Spark

一背景
在這裡插入圖片描述

Spark 是 2010 年由 UC Berkeley AMPLab 開源的一款 基於記憶體的分散式計算框架,2013 年被Apache 基金會接管,是當前大資料領域最為活躍的開源專案之一

Spark 在 MapReduce 計算框架的基礎上,支援計算物件資料可以直接快取到記憶體中,大大提高了整體計算效率。特別適合於資料探勘與機器學習等需要反覆迭代計算的場景。

二特性

高效:Spark提供 Cache 機制,支援需要反覆迭代的計算或者多次資料共享,基於Spark 的記憶體計算比 Hadoop MapReduce 快100倍。

易用:Spark提供 20 多種資料集操作型別,並支援使用 Python 和 Scala 指令碼開發應用。

先進架構:Spark採用 Scala 語言編寫,基於 DAG 圖的執行引擎,減少多次計算之間中間結果寫到 HDFS 的開銷。

三應用場景
在這裡插入圖片描述

Spark之上有四種應用工具庫。

Spark Streaming: 用於流式計算。

MLlib:用於機器學習(聚類、協同過濾等)。

Spark SQL:用於處理結構化資料。

GraphX:用於圖和圖平行計算的API。

目前主要應用在廣告精準投放系統、日誌報表即時查詢、以及推薦系統等業務場景。這些應用場景的共同特點是計算量大且效率要求高。

四部署模式

Spark有三種部署模式。

Standalone:使用Spark自帶的叢集管理器。

Spark on Mesos:使用 Mesos 管理資源。

Spark on YARN:使用 YARN 管理資源。

五任務流程

Spark重要元件包括 Driver Program(Driver) 和Executor。以 Standalone(Driver 執行在 Client)模式為例介紹任務執行流程。
在這裡插入圖片描述

  1. 客戶端執行使用者程式,啟動 Driver。

  2. Driver將作業轉換為DAG圖(類似資料處理的流程圖),根據策略將DAG圖劃分為多個Stage,最終生成一系列最小可執行的Task。

  3. Driver根據Task的需求,向Master申請執行Task所需的資源。

  4. Master為Task排程分配滿足需求的Worker節點,在Worker節點啟動Exeuctor。

  5. Exeuctor啟動後向Driver註冊。

  6. Driver將Task排程到Exeuctor執行。

  7. Executor執行結果寫入檔案或返回Driver。

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系。