版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章流計(jì)算SparkStreaming《大數(shù)據(jù)技術(shù)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解流計(jì)算概述了解流計(jì)算的概念了解Spark概述理解Spark運(yùn)行時(shí)架構(gòu)——SparkStandalone架構(gòu)學(xué)習(xí)目標(biāo)/Target理解SparkStreaming流計(jì)算掌握編寫SparkStreaming程序的基本步驟掌握創(chuàng)建StreamingContext對(duì)象掌握SparkStreaming數(shù)據(jù)源及程序開發(fā)章節(jié)概述/
SummarySpark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非?;钴S、高效的大數(shù)據(jù)計(jì)算平臺(tái),很多互聯(lián)網(wǎng)公司都使用Spark來(lái)實(shí)現(xiàn)公司的核心業(yè)務(wù)。Spark提供了Java、Scala、Python和R的高級(jí)API,支持一組豐富的高級(jí)工具,包括使用SQL進(jìn)行結(jié)構(gòu)化數(shù)據(jù)處理的SparkSQL,用于機(jī)器學(xué)習(xí)的MLlib,用于圖處理的GraphX,以及用于實(shí)時(shí)流處理的SparkStreaming。目錄/Contents010203流計(jì)算概述流計(jì)算的概念Spark概述04SparkStandalone架構(gòu)目錄/Contents050607SparkStreaming流計(jì)算編寫SparkStreaming程序的基本步驟創(chuàng)建StreamingContext對(duì)象08SparkStreaming數(shù)據(jù)源09SparkStreaming程序示例流計(jì)算概述11.1流計(jì)算概述流計(jì)算是一種典型的大數(shù)據(jù)計(jì)算模式,可以對(duì)源源不斷到達(dá)的流數(shù)據(jù)進(jìn)行實(shí)時(shí)處理分析。流數(shù)據(jù)具有如下特征:數(shù)據(jù)快速持續(xù)到達(dá),潛在大小也許是無(wú)窮無(wú)盡的數(shù)據(jù)來(lái)源眾多,格式復(fù)雜數(shù)據(jù)量大,但是不十分關(guān)注存儲(chǔ),一旦經(jīng)過(guò)處理,要么被丟棄,要么被歸檔存儲(chǔ)注重?cái)?shù)據(jù)的整體價(jià)值,不過(guò)分關(guān)注個(gè)別數(shù)據(jù)數(shù)據(jù)順序顛倒,或者不完整,系統(tǒng)無(wú)法控制將要處理的新到達(dá)的數(shù)據(jù)元素的順序。
對(duì)靜態(tài)數(shù)據(jù)和流數(shù)據(jù)的處理,對(duì)應(yīng)著兩種截然不同的計(jì)算模式:批量計(jì)算和實(shí)時(shí)計(jì)算。1.1流計(jì)算概述流計(jì)算是針對(duì)流數(shù)據(jù)的實(shí)時(shí)計(jì)算,其主要應(yīng)用于產(chǎn)生大量流數(shù)據(jù)、同時(shí)對(duì)實(shí)時(shí)性要求高的領(lǐng)域。流計(jì)算的概念22.1流計(jì)算的概念Spark概述33.1Spark概述ApacheSpark是一個(gè)快速通用的集群計(jì)算系統(tǒng),是一種與Hadoop相似的開源集群計(jì)算環(huán)境,但是Spark在一些工作負(fù)載方面表現(xiàn)得更加優(yōu)越。Spark運(yùn)行時(shí)架構(gòu)——SparkStandalone架構(gòu)44.1Spark運(yùn)行時(shí)架構(gòu)——SparkStandalone架構(gòu)SparkStandalone模式為經(jīng)典的Master/Slave(主/從)架構(gòu),資源調(diào)度是Spark自己實(shí)現(xiàn)的。在Standalone模式中,根據(jù)應(yīng)用程序提交的方式不同,Driver(主控進(jìn)程)在集群中的位置也有所不同。應(yīng)用程序的提交方式主要有兩種:client和cluster,默認(rèn)是client。4.1MapReduce程序編寫步驟(1)client提交方式4.1MapReduce程序編寫步驟(2)cluster提交方式SparkStreaming流計(jì)算55.1SparkStreaming流計(jì)算SparkStreaming是SparkCoreAPI(SparkRDD)的擴(kuò)展,支持對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行可伸縮、高吞吐量及容錯(cuò)處理。數(shù)據(jù)可以從Kafka、Flume、Kinesis或TCPSocket等多種來(lái)源獲取,并且可以使用復(fù)雜的算法處理數(shù)據(jù),這些算法由map()、reduce()、join()和window()等高級(jí)函數(shù)表示。5.1SparkStreaming流計(jì)算SparkStreaming接收實(shí)時(shí)輸入的數(shù)據(jù)流,并將數(shù)據(jù)流以時(shí)間片(秒級(jí))為單位拆分成批次,然后將每個(gè)批次交給Spark引擎(SparkCore)進(jìn)行處理,最終生成以批次組成的結(jié)果數(shù)據(jù)流。5.1SparkStreaming流計(jì)算在內(nèi)部,對(duì)輸入數(shù)據(jù)流拆分成的每個(gè)批次實(shí)際上是一個(gè)RDD(ResilientDistributedDatasets,彈性分布式數(shù)據(jù)集),一個(gè)DStream由多個(gè)RDD組成,相當(dāng)于一個(gè)RDD序列。編寫SparkStreaming程序的基本步驟66.1編寫SparkStreaming程序的基本步驟1)通過(guò)創(chuàng)建輸入DStream(InputDstream)來(lái)定義輸入源。流計(jì)算處理的數(shù)據(jù)對(duì)象是來(lái)自輸入源的數(shù)據(jù),這些輸入源會(huì)源源不斷產(chǎn)生數(shù)據(jù),并發(fā)送給SparkStreaming,由Receiver組件接收到以后,交給用戶自定義的SparkStreaming程序進(jìn)行處理;2)通過(guò)對(duì)DStream應(yīng)用轉(zhuǎn)換操作和輸出操作來(lái)定義流計(jì)算。流計(jì)算過(guò)程通常是由用戶自定義實(shí)現(xiàn)的,需要調(diào)用各種DStream操作實(shí)現(xiàn)用戶處理邏輯;3)調(diào)用StreamingContext對(duì)象的start()方法來(lái)開始接收數(shù)據(jù)和處理流程;4)通過(guò)調(diào)用StreamingContext對(duì)象的awaitTermination()方法來(lái)等待流計(jì)算進(jìn)程結(jié)束,或者可以通過(guò)調(diào)用StreamingContext對(duì)象的stop()方法來(lái)手動(dòng)結(jié)束流計(jì)算進(jìn)程。創(chuàng)建StreamingContext對(duì)象77.1創(chuàng)建StreamingContext對(duì)象在RDD編程中需要生成一個(gè)SparkContext對(duì)象,如果要運(yùn)行一個(gè)SparkStreaming程序,就需要首先生成一個(gè)StreamingContext對(duì)象,它是SparkStreaming程序的主入口。SparkStreaming數(shù)據(jù)源88.1基本數(shù)據(jù)源(1)文件流對(duì)于從任何與HDFSAPI(HDFS、S3、NFS等)兼容的文件系統(tǒng)上的文件中讀取數(shù)據(jù),可以通過(guò)以下方式創(chuàng)建DStream:streamingContext.fileStream[KeyClass,ValueClass,InputFormatClass](dataDirectory)SparkStreaming將監(jiān)視目錄dataDirectory并處理在該目錄中的所有文件。對(duì)于簡(jiǎn)單的文本文件,可以使用以下方式創(chuàng)建DStream:streamingContext.textFileStream(dataDirectory)8.1基本數(shù)據(jù)源(2)Socket流通過(guò)監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(2)Socket流通過(guò)監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(3)RDD隊(duì)列流使用streamingContext.queueStream(queueOfRDDs)可以基于RDD隊(duì)列創(chuàng)建DStream。推入隊(duì)列的每個(gè)RDD將被視為DStream中的一批數(shù)據(jù),并像流一樣進(jìn)行處理。8.1基本數(shù)據(jù)源(3)RDD隊(duì)列流8.1基本數(shù)據(jù)源(3)RDD隊(duì)列流8.2高級(jí)數(shù)據(jù)源SparkStreaming可以從Kafka、Flume、Kinesis等數(shù)據(jù)源讀取數(shù)據(jù),使用時(shí)需要引入第三方依賴庫(kù),此類數(shù)據(jù)源稱為高級(jí)數(shù)據(jù)源。SparkStreaming程序示例99.1SparkStreaming程序示例假設(shè)需要監(jiān)聽TCPSocket端口的數(shù)據(jù),實(shí)時(shí)計(jì)算接收到的文本數(shù)據(jù)中的單詞數(shù),具體的實(shí)現(xiàn)步驟如下:(1)導(dǎo)入相應(yīng)類9.1SparkStreaming程序示例(2)創(chuàng)建StreamingContext9.1SparkStreaming程序示例(3)創(chuàng)建DStream使用StreamingContext可以創(chuàng)建一個(gè)輸入DStream,它表示來(lái)自TCP源的流數(shù)據(jù)。例如,從主機(jī)名為localhost、端口為9999的TCP源獲取數(shù)據(jù),代碼如下:JavaReceiverInputDStream<String>
lines
=
jssc.socketTextStream("localhost",9999);9.1SparkStreaming程序示例(4)操作DStreamDStream創(chuàng)建成功后,可以對(duì)DStream應(yīng)用算子操作,生成新的DStream,類似對(duì)RDD的操作。例如,按空格字符將每一行文本分割為單詞,代碼如下:JavaDStream<String>words=lines.flatMap(x->Arrays.asList(x.split("")).iterator());9.1SparkStreaming程序示例(5)啟動(dòng)SparkStreaming在DStream的創(chuàng)建與轉(zhuǎn)換代碼編寫完畢后,需要啟動(dòng)SparkStreaming才能真正地開始計(jì)算,因此需要在最后添加以下代碼://開始計(jì)算ssc.start()//等待計(jì)算結(jié)束ssc.awaitTermination()至此,一個(gè)簡(jiǎn)單的單詞計(jì)數(shù)例子就完成了。9.1SparkStreaming程序示例(6)使用nc模擬端口netcat(或簡(jiǎn)稱nc)是一個(gè)功能強(qiáng)大且易于使用的程序,可用于Linux中與TCP、UDP或UNIX域套接字相關(guān)的任何事情。本例測(cè)試方式為:nc-l9999一行行輸入句子,觀察應(yīng)用程序的運(yùn)行結(jié)果。本章小結(jié)本章主要介紹了流計(jì)算SparkStreaming,Spark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非?;钴S、高效的大數(shù)據(jù)計(jì)算平臺(tái)。包括流計(jì)算概述、流計(jì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東青年職業(yè)學(xué)院《數(shù)據(jù)結(jié)構(gòu)和算法》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東女子職業(yè)技術(shù)學(xué)院《護(hù)理傳染學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 不斷進(jìn)取-助推事業(yè)成功:年度工作總結(jié)與自我提升
- 2025年中國(guó)農(nóng)業(yè)機(jī)械行業(yè)概述與產(chǎn)業(yè)鏈及發(fā)展歷程調(diào)研報(bào)告
- 《xx項(xiàng)目建議書》課件
- 【名師一號(hào)】2020-2021學(xué)年高中英語(yǔ)必修二-第二單元綜合測(cè)評(píng)
- 2021高考英語(yǔ)浙江義烏市課外訓(xùn)練(9)及答案
- 湖北省黃石市陽(yáng)新縣2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試題 含答案
- 《直腸癌術(shù)后的護(hù)理》課件
- 【名師一號(hào)】2020-2021學(xué)年高中英語(yǔ)(北師大版)必修1隨堂演練:期中測(cè)試
- 四川新農(nóng)村建設(shè)農(nóng)房設(shè)計(jì)方案圖集川西部分
- 資料員崗位培訓(xùn)ppt課件(PPT 36頁(yè))
- 組織架構(gòu)圖可編輯
- 口腔材料學(xué)課件
- 工資審核流程
- 手工鎢極氬弧焊焊接工藝指導(dǎo)書
- 北師大七年級(jí)上數(shù)學(xué)易錯(cuò)題(共8頁(yè))
- 供應(yīng)商供方履約評(píng)價(jià)表(參考模板)
- 徒步行軍pt課件
- 國(guó)家電網(wǎng)公司電網(wǎng)設(shè)備缺陷管理規(guī)定國(guó)網(wǎng)(運(yùn)檢3)(文號(hào)國(guó)家電網(wǎng)企管
- 輸血科(血庫(kù))儀器設(shè)備使用、保養(yǎng)記錄表
評(píng)論
0/150
提交評(píng)論