1. 程式人生 > >分分鐘理解大數據基礎之Spark

分分鐘理解大數據基礎之Spark

概念 rap http oss 結果 文件 yar 客戶 mapreduce

一背景

技術分享圖片
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)模式為例介紹任務執行流程。

技術分享圖片
客戶端運行用戶程序,啟動 Driver。

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

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

Master為Task調度分配滿足需求的Worker節點,在Worker節點啟動Exeuctor。

Exeuctor啟動後向Driver註冊。

Driver將Task調度到Exeuctor執行。

Executor執行結果寫入文件或返回Driver。

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

分分鐘理解大數據基礎之Spark