Spar入門(mén)到放棄(1)-Spark簡(jiǎn)介

Spark簡(jiǎn)介

[一、簡(jiǎn)介]
[二、特點(diǎn)]
[三、集群架構(gòu)]
[四、核心組件]
[4.1 Spark SQL]
[4.2 Spark Streaming]
[4.3 MLlib]
[4.4 Graphx]

?

一、簡(jiǎn)介

Spark 于 2009 年誕生于加州大學(xué)伯克利分校 AMPLab,2013 年被捐贈(zèng)給 Apache 軟件基金會(huì),2014 年 2 月成為 Apache 的頂級(jí)項(xiàng)目。相對(duì)于 MapReduce 的批處理計(jì)算,Spark 可以帶來(lái)上百倍的性能提升,因此它成為繼 MapReduce 之后,最為廣泛使用的分布式計(jì)算框架。

二、特點(diǎn)

Apache Spark 具有以下特點(diǎn):

  • 使用先進(jìn)的 DAG 調(diào)度程序,查詢(xún)優(yōu)化器和物理執(zhí)行引擎,以實(shí)現(xiàn)性能上的保證;

  • 多語(yǔ)言支持,目前支持的有 Java,Scala,Python 和 R;

  • 提供了 80 多個(gè)高級(jí) API,可以輕松地構(gòu)建應(yīng)用程序;

  • 支持批處理,流處理和復(fù)雜的業(yè)務(wù)分析;

  • 豐富的類(lèi)庫(kù)支持:包括 SQL,MLlib,GraphX 和 Spark Streaming 等庫(kù),并且可以將它們無(wú)縫地進(jìn)行組合;

  • 豐富的部署模式:支持本地模式和自帶的集群模式,也支持在 Hadoop,Mesos,Kubernetes 上運(yùn)行;

  • 多數(shù)據(jù)源支持:支持訪問(wèn) HDFS,Alluxio,Cassandra,HBase,Hive 以及數(shù)百個(gè)其他數(shù)據(jù)源中的數(shù)據(jù)。

?


future-of-spark.png

?

三、集群架構(gòu)

Term(術(shù)語(yǔ)) Meaning(含義)
Application Spark 應(yīng)用程序,由集群上的一個(gè) Driver 節(jié)點(diǎn)和多個(gè) Executor 節(jié)點(diǎn)組成。
Driver program 主運(yùn)用程序,該進(jìn)程運(yùn)行應(yīng)用的 main() 方法并且創(chuàng)建 SparkContext
Cluster manager 集群資源管理器(例如,Standlone Manager,Mesos,YARN)
Worker node 執(zhí)行計(jì)算任務(wù)的工作節(jié)點(diǎn)
Executor 位于工作節(jié)點(diǎn)上的應(yīng)用進(jìn)程,負(fù)責(zé)執(zhí)行計(jì)算任務(wù)并且將輸出數(shù)據(jù)保存到內(nèi)存或者磁盤(pán)中
Task 被發(fā)送到 Executor 中的工作單元

?

spark-集群模式.png

?

執(zhí)行過(guò)程

  1. 用戶(hù)程序創(chuàng)建 SparkContext 后,它會(huì)連接到集群資源管理器,集群資源管理器會(huì)為用戶(hù)程序分配計(jì)算資源,并啟動(dòng) Executor;

  2. Dirver 將計(jì)算程序劃分為不同的執(zhí)行階段和多個(gè) Task,之后將 Task 發(fā)送給 Executor;

  3. Executor 負(fù)責(zé)執(zhí)行 Task,并將執(zhí)行狀態(tài)匯報(bào)給 Driver,同時(shí)也會(huì)將當(dāng)前節(jié)點(diǎn)資源的使用情況匯報(bào)給集群資源管理器。

四、核心組件

Spark 基于 Spark Core 擴(kuò)展了四個(gè)核心組件,分別用于滿(mǎn)足不同領(lǐng)域的計(jì)算需求。

?

spark-stack.png

?

4.1 Spark SQL

Spark SQL 主要用于結(jié)構(gòu)化數(shù)據(jù)的處理。其具有以下特點(diǎn):

  • 能夠?qū)?SQL 查詢(xún)與 Spark 程序無(wú)縫混合,允許您使用 SQL 或 DataFrame API 對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行查詢(xún);

  • 支持多種數(shù)據(jù)源,包括 Hive,Avro,Parquet,ORC,JSON 和 JDBC;

  • 支持 HiveQL 語(yǔ)法以及用戶(hù)自定義函數(shù) (UDF),允許你訪問(wèn)現(xiàn)有的 Hive 倉(cāng)庫(kù);

  • 支持標(biāo)準(zhǔn)的 JDBC 和 ODBC 連接;

  • 支持優(yōu)化器,列式存儲(chǔ)和代碼生成等特性,以提高查詢(xún)效率。

4.2 Spark Streaming

Spark Streaming 主要用于快速構(gòu)建可擴(kuò)展,高吞吐量,高容錯(cuò)的流處理程序。支持從 HDFS,F(xiàn)lume,Kafka,Twitter 和 ZeroMQ 讀取數(shù)據(jù),并進(jìn)行處理。

?

spark-streaming-arch.png

?

Spark Streaming 的本質(zhì)是微批處理,它將數(shù)據(jù)流進(jìn)行極小粒度的拆分,拆分為多個(gè)批處理,從而達(dá)到接近于流處理的效果。

?

spark-streaming-flow.png

?

4.3 MLlib

MLlib 是 Spark 的機(jī)器學(xué)習(xí)庫(kù)。其設(shè)計(jì)目標(biāo)是使得機(jī)器學(xué)習(xí)變得簡(jiǎn)單且可擴(kuò)展。它提供了以下工具:

  • 常見(jiàn)的機(jī)器學(xué)習(xí)算法:如分類(lèi),回歸,聚類(lèi)和協(xié)同過(guò)濾;

  • 特征化:特征提取,轉(zhuǎn)換,降維和選擇;

  • 管道:用于構(gòu)建,評(píng)估和調(diào)整 ML 管道的工具;

  • 持久性:保存和加載算法,模型,管道數(shù)據(jù);

  • 實(shí)用工具:線(xiàn)性代數(shù),統(tǒng)計(jì),數(shù)據(jù)處理等。

4.4 Graphx

GraphX 是 Spark 中用于圖形計(jì)算和圖形并行計(jì)算的新組件。在高層次上,GraphX 通過(guò)引入一個(gè)新的圖形抽象來(lái)擴(kuò)展 RDD(一種具有附加到每個(gè)頂點(diǎn)和邊緣的屬性的定向多重圖形)。為了支持圖計(jì)算,GraphX 提供了一組基本運(yùn)算符(如: subgraph,joinVertices 和 aggregateMessages)以及優(yōu)化后的 Pregel API。此外,GraphX 還包括越來(lái)越多的圖形算法和構(gòu)建器,以簡(jiǎn)化圖形分析任務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容