目錄
1.Spark 概念
2. Hadoop和Spark的對比
3. Spark特點
3.1?運行速度快
3.2 簡單易用
3.3?通用性強
3.4?可以允許運行在很多地方
4. Spark框架模塊
4.1 Spark Core
4.2?SparkSQL
4.3?SparkStreaming
4.4?MLlib
4.5?GraphX
5. Spark的運行模式
5.1 本地模式(單機) Local運行模式
5.2 Standalone模式(集群)
5.3 HadoopYARN模式(集群)
5.4 Kubernetes模式(容器集群)
5.5?云服務模式(運行在云平臺上)
6. Spark架構
6.1 在Spark中任務運行層面
6.2 在Spark中資源層面
1.Spark 概念
- 定義:Apache Spark 是用于大規模數據處理的統一分析引擎
- 其特點就是對任意類型的數據進行自定義計算。
- Spark可以計算:結構化、半結構化、非結構化等各種類型的數據結構,同時也支持使用Python、Java、Scala、R以及SQL語言去開發應用程序計算數據。
- Spark的適用面非常廣泛,所以,被稱之為統一的(適用面廣)的分析引擎(數據處理)
- Spark最早源于一篇論文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing, 該論文是由加州大學柏克萊分校的Matei Zaharia等人發表的。論文中提出了一種彈性分布式數據集(即RDD)的概念。
- RDD是一種分布式內存抽象,其使得程序員能夠在大規模集群中做內存運算,并且有一定的容錯方式。而這也是整個Spark的核心數據結構,Spark整個平臺都圍繞著RDD進行。
2. Hadoop和Spark的對比
盡管Spark相對于Hadoop而言具有較大優勢,但Spark并不能完全替代Hadoop
- 在計算層面,Spark相比較MR(MapReduce)有巨大的性能優勢,但至今仍有許多計算工具基于MR構架,比如非常成熟的Hive
- Spark僅做計算,而Hadoop:生態圈不僅有計算(MR)也有存儲(HDFS)和資源管理調度(YARN),HDFS和YARN仍是許多大數據體系的核心架構。
3. Spark特點
3.1?運行速度快
Spark處理數據與MapReduce處理數據相比,有如下兩個不同點:
- Spark處理數據時,可以將中間處理結果數據存儲到內存中;
- Spark提供了非常豐富的算子(APi),可以做到復雜任務在一個Spark程序中完成.
3.2 簡單易用
3.3?通用性強
3.4?可以允許運行在很多地方
4. Spark框架模塊
4.1 Spark Core
Spark的核心,Spark核心功能均由SparkCore模塊提供,是Spark:運行的基礎。
SparkCorel以RDD為數據抽象,提供Python、Java、Scala、R語言的API,可以編程進行海量離線數據批處理計算。
4.2?SparkSQL
基于SparkCore之上,提供結構化數據的處理模塊。
SparkSQL支持以sQL語言對數據進行處理,SparkSQL本身針對離線計算場景。
同時基于SparkSQL,Spark提供了StructuredStreaming模塊,可以以SparkSQL為基礎,進行數據的流式計算。
4.3?SparkStreaming
以SparkCore為基礎,提供數據的流式計算功能。
4.4?MLlib
以SparkCore為基礎,進行機器學習計算,內置了大量的機器學習庫和APi算法等。方便用戶以分布式計算的模式進行機器學習計算。
4.5?GraphX
以SparkCore為基礎,進行圖計算,提供了大量的圖計算APl,方便用于以分布式計算模式進行圖計算。
5. Spark的運行模式
5.1 本地模式(單機) Local運行模式
本地模式就是以一個獨立的進程,通過其內部的多個線程來模擬整個Spark運行時的環境
5.2 Standalone模式(集群)
Spark中的各個角色以獨立進程的形式存在,并組成Spark:集群環境
5.3 HadoopYARN模式(集群)
Spark中的各個角色運行在YARN的容器內部,并組成Spark集群環境??
5.4 Kubernetes模式(容器集群)
Spark中的各個角色運行在Kubernetesl的容器內部,并組成Spark:集群環境
5.5?云服務模式(運行在云平臺上)
6. Spark架構
左邊是YARN框架,右邊是Spark框架
6.1 在Spark中任務運行層面
- Driver, 負責對一個任務的運行進行管理(單個任務的管理)
- ?Executor,單個任務的計算(干活的)
- 正常情況下Executor是干活的角色,不過特殊場景下,(local模式)Driver可以即管又干活
6.2 在Spark中資源層面:
- Master角色:集群資源管理
- Worker的角色: 單機資源管理