spark基礎知識

Spark 機器學習 Scala Hadoop 大數據之門 2017-05-28

1.Spark是什麼?

UCBerkeley AMPlab所開源的類HadoopMapReduce的通用的並行計算框架

dfsSpark基於mapreduce算法實現的分佈式計算,擁有HadoopMapReduce所具有的優點;但不同於MapReduce的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map reduce的算法。

2.Spark與Hadoop的對比(Spark的優勢)

1、Spark的中間數據放到內存中,對於迭代運算效率更高

2、Spark比Hadoop更通用

3、Spark提供了統一的編程接口

4、容錯性– 在分佈式數據集計算時通過checkpoint來實現容錯

5、可用性– Spark通過提供豐富的Scala, Java,Python API及交互式Shell來提高可用性

3.Spark有那些組件

1、Spark Streaming:支持高吞吐量、支持容錯的實時流數據處理

2、Spark SQL, Data frames: 結構化數據查詢

3、MLLib:Spark 生態系統裡用來解決大數據機器學習問題的模塊

4、GraphX是構建於Spark上的圖計算模型

5、SparkR是一個R語言包,它提供了輕量級的方式使得可以在R語言中使用 Spark

4.DataFrame是什麼?

DataFrame是一種以RDD為基礎的分佈式數據集,類似於傳統數據庫中的二維表格。

5.DataFrame與RDD的主要區別在於?

DataFrame帶有schema元信息,即DataFrame所表示的二維表數據集的每一列都帶有名稱和類型。這使得SparkSQL得以洞察更多的結構信息,從而對藏於DataFrame背後的數據源以及作用於DataFrame之上的變換進行了針對性的優化,最終達到大幅提升運行時效率的目標。反觀RDD,由於無從得知所存數據元素的具體內部結構,Spark Core只能在stage層面進行簡單、通用的流水線優化。

6.DataFrame 特性

1、支持從KB到PB級的數據量

2、支持多種數據格式和多種存儲系統

3、通過Catalyst優化器進行先進的優化生成代碼

4、通過Spark無縫集成主流大數據工具與基礎設施

5、API支持Python、Java、Scala和R語言

7.RDD

Resilient Distributed Datasets,意為容錯的、並行的數據結構,可以讓用戶顯式地將數據存儲到磁盤和內存中,並能控制數據的分區。同時,RDD還提供了一組豐富的操作來操作這些數據。

8.RDD的特點

  • 它是在集群節點上的不可變的、已分區的集合對象。

  • 通過並行轉換的方式來創建如(map, filter, join, etc)。

  • 失敗自動重建。

  • 可以控制存儲級別(內存、磁盤等)來進行重用。

  • 必須是可序列化的。

  • 是靜態類型的。

9.RDD核心概念

Client:客戶端進程,負責提交作業到Master。

Master:Standalone模式中主控節點,負責接收Client提交的作業,管理Worker,並命令Worker啟動分配Driver的資源和啟動Executor的資源。

Worker:Standalone模式中slave節點上的守護進程,負責管理本節點的資源,定期向Master彙報心跳,接收Master的命令,啟動Driver和Executor。

Driver: 一個Spark作業運行時包括一個Driver進程,也是作業的主進程,負責作業的解析、生成Stage並調度Task到Executor上。包括DAGScheduler,TaskScheduler。

Executor:即真正執行作業的地方,一個集群一般包含多個Executor,每個Executor接收Driver的命令Launch Task,一個Executor可以執行一到多個Task。

10.RDD常見術語

DAGScheduler: 實現將Spark作業分解成一到多個Stage,每個Stage根據RDD的Partition個數決定Task的個數,然後生成相應的Task set放到TaskScheduler中。

TaskScheduler:實現Task分配到Executor上執行。

Task:運行在Executor上的工作單元

Job:SparkContext提交的具體Action操作,常和Action對應

Stage:每個Job會被拆分很多組任務(task),每組任務被稱為Stage,也稱TaskSet

RDD:Resilient Distributed Datasets的簡稱,彈性分佈式數據集,是Spark最核心的模塊和類

Transformation/Action:SparkAPI的兩種類型;Transformation返回值還是一個RDD,Action返回值不少一個RDD,而是一個Scala的集合;所有的Transformation都是採用的懶策略,如果只是將Transformation提交是不會執行計算的,計算只有在Action被提交時才會被觸發。

DataFrame: 帶有Schema信息的RDD,主要是對結構化數據的高度抽象。

DataSet:結合了DataFrame和RDD兩者的優勢,既允許用戶很方便的操作領域對象,又具有SQL執行引擎的高效表現。

相關推薦

推薦中...