2. 第一章 Spark導論

1. Spark 簡介

Spark是一個用來實現(xiàn)快速而通用的集群計算的平臺。
Spark 不僅可以將任何Hadoop 分布式文件系統(tǒng)(HDFS)上的文件讀取為分布式數(shù)據(jù)集,也可以支持其他支持Hadoop 接口的系統(tǒng),比如本地文件、亞馬遜S3、Cassandra、Hive、HBase 等。

Spark軟件棧
1.1 Spark Core

Spark Core 實現(xiàn)了Spark 的基本功能:
1.任務調(diào)度
2.內(nèi)存管理
3.錯誤恢復
4.與存儲系統(tǒng)交互等模塊
Spark Core 中還包含了對彈性分布式數(shù)據(jù)集(resilient distributed dataset,簡稱RDD)的API 定義。RDD 表示分布在多個計算節(jié)點上可以并行操作的元素集合,是Spark 主要的編程抽象。Spark Core 提供了創(chuàng)建和操作這些集合的多個API。

1.2 Spark SQL

Spark SQL 是Spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包。

  1. 通過Spark SQL,我們可以使用SQL或者Apache Hive 版本的SQL 方言(HQL)來查詢數(shù)據(jù)。

2.Spark SQL 支持多種數(shù)據(jù)源,比如Hive 表、Parquet 以及JSON 等。

3.除了為Spark 提供了一個SQL 接口,Spark SQL 還支持開發(fā)者將SQL和傳統(tǒng)的RDD 編程的數(shù)據(jù)操作方式相結(jié)合,不論是使用Python、Java 還是Scala,開發(fā)者都可以在單個的應用中同時使用SQL 和復雜的數(shù)據(jù)分析。

1.3 Spark Streaming

Spark Streaming 是Spark 提供的對實時數(shù)據(jù)進行流式計算的組件。

數(shù)據(jù)流:比如生產(chǎn)環(huán)境中的網(wǎng)頁服務器日志,或是網(wǎng)絡(luò)服務中用戶提交的狀態(tài)更新組成的消息隊列,都是數(shù)據(jù)流。

Spark Streaming 提供了用來操作數(shù)據(jù)流的API,并且與Spark Core 中的RDD API 高度對應。這樣一來,程序員編寫應用時的學習門檻就得以降低,不論是操作內(nèi)存或硬盤中的數(shù)據(jù),還是操作實時數(shù)據(jù)流,程序員都更能應對自如。從底層設(shè)計來看,Spark Streaming 支持與Spark Core 同級別的容錯性、吞吐量以及可伸縮性。

1.5 Spark MLlib

Spark 中還包含一個提供常見的機器學習(ML)功能的程序庫,叫作MLlib。
MLlib 提供了很多種機器學習算法,包括分類、回歸、聚類、協(xié)同過濾等,還提供了模型評估、數(shù)據(jù)導入等額外的支持功能。MLlib 還提供了一些更底層的機器學習原語,包括一個通用的梯度下降優(yōu)化算法。所有這些方法都被設(shè)計為可以在集群上輕松伸縮的架構(gòu)。

1.6 GraphX

GraphX 是用來操作圖(比如社交網(wǎng)絡(luò)的朋友關(guān)系圖)的程序庫,可以進行并行的圖計算。
與Spark Streaming 和Spark SQL 類似,GraphX 也擴展了Spark 的RDD API,能用來創(chuàng)建一個頂點和邊都包含任意屬性的有向圖。GraphX 還支持針對圖的各種操作(比如進行圖分割的subgraph 和操作所有頂點的mapVertices),以及一些常用圖算法(比如PageRank和三角計數(shù))。

1.7 集群管理器

就底層而言,Spark 設(shè)計為可以高效地在一個計算節(jié)點到數(shù)千個計算節(jié)點之間伸縮計算。為了實現(xiàn)這樣的要求,同時獲得最大靈活性,Spark 支持在各種集群管理器(cluster manager)上運行,包括Hadoop YARN、Apache Mesos,以及Spark 自帶的一個簡易調(diào)度器,叫作獨立調(diào)度器(Standalone)。

1.8 Spark Shell啟動

如果你有一個Hadoop 集群, 并且Hadoop 版本支持YARN, 通過為Spark master 設(shè)定
yarn-client 參數(shù)值,就可以在集群上啟動Spark 作業(yè):

$ spark-shell --master yarn-client
$ spark-shell --master yarn --deploy-mode client

如果你是在自己的計算機上運行示例,可以通過設(shè)定local[N] 參數(shù)來啟動本地Spark 集
群,其中N 代表運行的線程數(shù),或者用* 表示使用機器上所有可用的核數(shù)。比如,要在一
個8 核的機器上用8 個線程啟動一個本地集群,可以輸入以下命令:

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

相關(guān)閱讀更多精彩內(nèi)容

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