Spark基礎

1、什麼是Spark?
Spark是一個針對大規模數據處理的快速通用引擎。
類似MapReduce,都進行數據的處理

2、Spark的特點:
(1)基於Scala語言、Spark基於內存的計算
(2)快:基於內存
(3)易用:支持Scala、Java、Python
(4)通用:Spark Core、Spark SQL DataFrames(結構化數據查詢)、Spark Streaming(支持高吞吐量、支持容錯的實時流數據處理)、 MLlib(Spark 生態系統裏用來解決大數據機器學習問題的模塊)、Graphx(構建於Spark上的圖計算模型),SparkR(一個R語言包,它提供了輕量級的方式使得可以在R語言中使用 Spark
)
(5)兼容性:完全兼容Hadoop

3、Spark體系結構:主從結構
客戶端通過SparkContext對象提交任務申請,master接收客戶端請求,根據客戶端請求分配相應的資源給worker, worker啓動Executor,正真提交任務的時候,直接由客戶端提交給worker,不通過master。
(1)主節點:Master
(2)從節點:Worker

4、 Spark中的基本概念
在Spark中,有下面的基本概念。
Application:基於Spark的用戶程序,包含了一個driver program和集羣中多個executor
Driver Program:運行Application的main()函數並創建SparkContext。通常SparkContext代表driver program
Executor:爲某Application運行在worker node上的一個進程。該進程負責運行Task,並負責將數據存在內存或者磁盤上。每個Application都有自己獨立的executors
Cluster Manager: 在集羣上獲得資源的外部服務(例如 Spark Standalon,Mesos、Yarn)
Worker Node: 集羣中任何可運行Application代碼的節點
Task:被送到executor上執行的工作單元。
Job:可以被拆分成Task並行計算的工作單元,一般由Spark Action觸發的一次執行作業。
Stage:每個Job會被拆分成很多組Task,每組任務被稱爲stage,也可稱TaskSet。該術語可以經常在日誌中看到。
RDD:Spark的基本計算單元,通過Scala集合轉化、讀取數據集生成或者由其他RDD經過算子操作得到。

5、Spark應用框架

這裏寫圖片描述

客戶Spark程序(Driver Program)來操作Spark集羣是通過SparkContext對象來進行,SparkContext作爲一個操作和調度的總入口,在初始化過程中集羣管理器會創建DAGScheduler作業調度和TaskScheduler任務調度。

6、Spark與Hadoop的對比(Spark的優勢)
1)Spark的中間數據放到內存中,對於迭代運算效率更高
2)Spark比Hadoop更通用
3)Spark提供了統一的編程接口
4)容錯性– 在分佈式數據集計算時通過checkpoint來實現容錯
5)可用性– Spark通過提供豐富的Scala, Java,Python API及交互式Shell來提高可用性

發佈了101 篇原創文章 · 獲贊 57 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章