Spark1——介绍
1、Spark是什么
Spark是一個(gè)用來(lái)實(shí)現(xiàn)快速而通用的集群計(jì)算的平臺(tái)。
?
2、Spark是一個(gè)大一統(tǒng)的軟件棧
Spark項(xiàng)目包含多個(gè)緊密集成的組件。首先Spark的核心是一個(gè)對(duì)由很多計(jì)算任務(wù)組成的、運(yùn)行在多個(gè)工作機(jī)器或者是一個(gè)計(jì)算集群上的應(yīng)用進(jìn)行調(diào)度、分發(fā)以及監(jiān)控的計(jì)算引擎。
Spark的個(gè)組件如下圖所示:
- Apache Spark 也就是Spark的核心部分,也稱(chēng)為Spark Core,這個(gè)部分實(shí)現(xiàn)了Spark的基本功能,包含任務(wù)調(diào)度、內(nèi)存管理、錯(cuò)誤恢復(fù)、與存儲(chǔ)系統(tǒng)交互模塊,還包含了對(duì)彈性分布式數(shù)據(jù)集(RDD)的API定義。
- Spark SQL是Spark用來(lái)操作結(jié)構(gòu)化數(shù)據(jù)的程序包。通過(guò)Spark SQL,我們可以使用SQL或者HQL來(lái)查詢(xún)數(shù)據(jù)。
- Spark Streaming 是Spark提供的對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件。比如生產(chǎn)環(huán)境中的網(wǎng)頁(yè)服務(wù)器日志,或是網(wǎng)絡(luò)服務(wù)中用戶(hù)提交的狀態(tài)更新組成的消息隊(duì)列,都是消息流
- MLlib這是一個(gè)包含了常見(jiàn)機(jī)器學(xué)習(xí)功能的程序庫(kù),包括分類(lèi)、回歸、聚類(lèi)、協(xié)同過(guò)濾等
- GraphX是用來(lái)操作圖的程序庫(kù),可以進(jìn)行并行的圖計(jì)算。
3、Spark的核心概念
從上層來(lái)看,每個(gè)Spark應(yīng)用都由一個(gè)驅(qū)動(dòng)器程序來(lái)發(fā)起集群上的并行操作。驅(qū)動(dòng)器程序包含應(yīng)用的main函數(shù),并且定義了集群上的分布式數(shù)據(jù)集,還對(duì)這些分布式數(shù)據(jù)集應(yīng)用了相關(guān)操作。
驅(qū)動(dòng)器程序通過(guò)一個(gè)SparkContext對(duì)象來(lái)訪(fǎng)問(wèn)Spark。這個(gè)對(duì)象代表對(duì)計(jì)算集群的一個(gè)連接,當(dāng)Spark shell啟動(dòng)時(shí)已自動(dòng)創(chuàng)建了一個(gè)SparkContext對(duì)象。
val textFile = sc.textFile("hdfs://...") val counts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) counts.saveAsTextFile("hdfs://...")這里的sc變量,就是自動(dòng)創(chuàng)建的SparkContext對(duì)象。通過(guò)它就可以來(lái)創(chuàng)建RDD,調(diào)用sc.textFile()來(lái)創(chuàng)建一個(gè)代表文件各行文本的RDD。
通過(guò)RDD我們就可以在這些行上進(jìn)行各種操作,通常驅(qū)動(dòng)器程序要管理多個(gè)執(zhí)行器節(jié)點(diǎn)。比如,如果我們?cè)诩荷线\(yùn)行輸出操作,那么不同的節(jié)點(diǎn)就會(huì)統(tǒng)計(jì)文件不同部分的行數(shù)。
?
4、初始化SparlContext
一旦完成了應(yīng)用與Spark的連接,接下來(lái)就需要在程序中導(dǎo)入Spark包并創(chuàng)建SparkContext.我們可以通過(guò)先創(chuàng)建一個(gè)SparkConf對(duì)象來(lái)配置應(yīng)用,然后基于這個(gè)SparkConf來(lái)創(chuàng)建一個(gè)Sparktext對(duì)象。
val conf = new SparkConf().setAppName("wordcount").setMaster("local") val sc = new SparkContext(conf)這里創(chuàng)建了SparkContext的最基礎(chǔ)的方法,只需要傳遞兩個(gè)參數(shù):
- 應(yīng)用名:這里使用的是"wordcount?",當(dāng)連接到一個(gè)集群的時(shí)候,這個(gè)值可以幫助我們?cè)诩汗芾砥鞯挠脩?hù)界面中找到你的應(yīng)用,這是這個(gè)程序運(yùn)行后的集群管理器的截圖
- 集群URL:告訴Spark如何連接到集群上,這里使用的是local,這個(gè)特殊的值可以讓Spark運(yùn)行在單機(jī)單線(xiàn)程上而無(wú)需連接到集群上
?
轉(zhuǎn)載于:https://www.cnblogs.com/xxbbtt/p/8425376.html
總結(jié)
以上是生活随笔為你收集整理的Spark1——介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python之字符串连接
- 下一篇: [BZOJ4537][Hnoi2016]