大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8章 流計算Spark Streaming_第1頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8章 流計算Spark Streaming_第2頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8章 流計算Spark Streaming_第3頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8章 流計算Spark Streaming_第4頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8章 流計算Spark Streaming_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第八章流計算SparkStreaming《大數(shù)據(jù)技術(shù)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解流計算概述了解流計算的概念了解Spark概述理解Spark運行時架構(gòu)——SparkStandalone架構(gòu)學(xué)習(xí)目標(biāo)/Target理解SparkStreaming流計算掌握編寫SparkStreaming程序的基本步驟掌握創(chuàng)建StreamingContext對象掌握SparkStreaming數(shù)據(jù)源及程序開發(fā)章節(jié)概述/

SummarySpark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非?;钴S、高效的大數(shù)據(jù)計算平臺,很多互聯(lián)網(wǎng)公司都使用Spark來實現(xiàn)公司的核心業(yè)務(wù)。Spark提供了Java、Scala、Python和R的高級API,支持一組豐富的高級工具,包括使用SQL進行結(jié)構(gòu)化數(shù)據(jù)處理的SparkSQL,用于機器學(xué)習(xí)的MLlib,用于圖處理的GraphX,以及用于實時流處理的SparkStreaming。目錄/Contents010203流計算概述流計算的概念Spark概述04SparkStandalone架構(gòu)目錄/Contents050607SparkStreaming流計算編寫SparkStreaming程序的基本步驟創(chuàng)建StreamingContext對象08SparkStreaming數(shù)據(jù)源09SparkStreaming程序示例流計算概述11.1流計算概述流計算是一種典型的大數(shù)據(jù)計算模式,可以對源源不斷到達的流數(shù)據(jù)進行實時處理分析。流數(shù)據(jù)具有如下特征:數(shù)據(jù)快速持續(xù)到達,潛在大小也許是無窮無盡的數(shù)據(jù)來源眾多,格式復(fù)雜數(shù)據(jù)量大,但是不十分關(guān)注存儲,一旦經(jīng)過處理,要么被丟棄,要么被歸檔存儲注重數(shù)據(jù)的整體價值,不過分關(guān)注個別數(shù)據(jù)數(shù)據(jù)順序顛倒,或者不完整,系統(tǒng)無法控制將要處理的新到達的數(shù)據(jù)元素的順序。

對靜態(tài)數(shù)據(jù)和流數(shù)據(jù)的處理,對應(yīng)著兩種截然不同的計算模式:批量計算和實時計算。1.1流計算概述流計算是針對流數(shù)據(jù)的實時計算,其主要應(yīng)用于產(chǎn)生大量流數(shù)據(jù)、同時對實時性要求高的領(lǐng)域。流計算的概念22.1流計算的概念Spark概述33.1Spark概述ApacheSpark是一個快速通用的集群計算系統(tǒng),是一種與Hadoop相似的開源集群計算環(huán)境,但是Spark在一些工作負(fù)載方面表現(xiàn)得更加優(yōu)越。Spark運行時架構(gòu)——SparkStandalone架構(gòu)44.1Spark運行時架構(gòu)——SparkStandalone架構(gòu)SparkStandalone模式為經(jīng)典的Master/Slave(主/從)架構(gòu),資源調(diào)度是Spark自己實現(xiàn)的。在Standalone模式中,根據(jù)應(yīng)用程序提交的方式不同,Driver(主控進程)在集群中的位置也有所不同。應(yīng)用程序的提交方式主要有兩種:client和cluster,默認(rèn)是client。4.1MapReduce程序編寫步驟(1)client提交方式4.1MapReduce程序編寫步驟(2)cluster提交方式SparkStreaming流計算55.1SparkStreaming流計算SparkStreaming是SparkCoreAPI(SparkRDD)的擴展,支持對實時數(shù)據(jù)流進行可伸縮、高吞吐量及容錯處理。數(shù)據(jù)可以從Kafka、Flume、Kinesis或TCPSocket等多種來源獲取,并且可以使用復(fù)雜的算法處理數(shù)據(jù),這些算法由map()、reduce()、join()和window()等高級函數(shù)表示。5.1SparkStreaming流計算SparkStreaming接收實時輸入的數(shù)據(jù)流,并將數(shù)據(jù)流以時間片(秒級)為單位拆分成批次,然后將每個批次交給Spark引擎(SparkCore)進行處理,最終生成以批次組成的結(jié)果數(shù)據(jù)流。5.1SparkStreaming流計算在內(nèi)部,對輸入數(shù)據(jù)流拆分成的每個批次實際上是一個RDD(ResilientDistributedDatasets,彈性分布式數(shù)據(jù)集),一個DStream由多個RDD組成,相當(dāng)于一個RDD序列。編寫SparkStreaming程序的基本步驟66.1編寫SparkStreaming程序的基本步驟1)通過創(chuàng)建輸入DStream(InputDstream)來定義輸入源。流計算處理的數(shù)據(jù)對象是來自輸入源的數(shù)據(jù),這些輸入源會源源不斷產(chǎn)生數(shù)據(jù),并發(fā)送給SparkStreaming,由Receiver組件接收到以后,交給用戶自定義的SparkStreaming程序進行處理;2)通過對DStream應(yīng)用轉(zhuǎn)換操作和輸出操作來定義流計算。流計算過程通常是由用戶自定義實現(xiàn)的,需要調(diào)用各種DStream操作實現(xiàn)用戶處理邏輯;3)調(diào)用StreamingContext對象的start()方法來開始接收數(shù)據(jù)和處理流程;4)通過調(diào)用StreamingContext對象的awaitTermination()方法來等待流計算進程結(jié)束,或者可以通過調(diào)用StreamingContext對象的stop()方法來手動結(jié)束流計算進程。創(chuàng)建StreamingContext對象77.1創(chuàng)建StreamingContext對象在RDD編程中需要生成一個SparkContext對象,如果要運行一個SparkStreaming程序,就需要首先生成一個StreamingContext對象,它是SparkStreaming程序的主入口。SparkStreaming數(shù)據(jù)源88.1基本數(shù)據(jù)源(1)文件流對于從任何與HDFSAPI(HDFS、S3、NFS等)兼容的文件系統(tǒng)上的文件中讀取數(shù)據(jù),可以通過以下方式創(chuàng)建DStream:streamingContext.fileStream[KeyClass,ValueClass,InputFormatClass](dataDirectory)SparkStreaming將監(jiān)視目錄dataDirectory并處理在該目錄中的所有文件。對于簡單的文本文件,可以使用以下方式創(chuàng)建DStream:streamingContext.textFileStream(dataDirectory)8.1基本數(shù)據(jù)源(2)Socket流通過監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(2)Socket流通過監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(3)RDD隊列流使用streamingContext.queueStream(queueOfRDDs)可以基于RDD隊列創(chuàng)建DStream。推入隊列的每個RDD將被視為DStream中的一批數(shù)據(jù),并像流一樣進行處理。8.1基本數(shù)據(jù)源(3)RDD隊列流8.1基本數(shù)據(jù)源(3)RDD隊列流8.2高級數(shù)據(jù)源SparkStreaming可以從Kafka、Flume、Kinesis等數(shù)據(jù)源讀取數(shù)據(jù),使用時需要引入第三方依賴庫,此類數(shù)據(jù)源稱為高級數(shù)據(jù)源。SparkStreaming程序示例99.1SparkStreaming程序示例假設(shè)需要監(jiān)聽TCPSocket端口的數(shù)據(jù),實時計算接收到的文本數(shù)據(jù)中的單詞數(shù),具體的實現(xiàn)步驟如下:(1)導(dǎo)入相應(yīng)類9.1SparkStreaming程序示例(2)創(chuàng)建StreamingContext9.1SparkStreaming程序示例(3)創(chuàng)建DStream使用StreamingContext可以創(chuàng)建一個輸入DStream,它表示來自TCP源的流數(shù)據(jù)。例如,從主機名為localhost、端口為9999的TCP源獲取數(shù)據(jù),代碼如下:JavaReceiverInputDStream<String>

lines

=

jssc.socketTextStream("localhost",9999);9.1SparkStreaming程序示例(4)操作DStreamDStream創(chuàng)建成功后,可以對DStream應(yīng)用算子操作,生成新的DStream,類似對RDD的操作。例如,按空格字符將每一行文本分割為單詞,代碼如下:JavaDStream<String>words=lines.flatMap(x->Arrays.asList(x.split("")).iterator());9.1SparkStreaming程序示例(5)啟動SparkStreaming在DStream的創(chuàng)建與轉(zhuǎn)換代碼編寫完畢后,需要啟動SparkStreaming才能真正地開始計算,因此需要在最后添加以下代碼://開始計算ssc.start()//等待計算結(jié)束ssc.awaitTermination()至此,一個簡單的單詞計數(shù)例子就完成了。9.1SparkStreaming程序示例(6)使用nc模擬端口netcat(或簡稱nc)是一個功能強大且易于使用的程序,可用于Linux中與TCP、UDP或UNIX域套接字相關(guān)的任何事情。本例測試方式為:nc-l9999一行行輸入句子,觀察應(yīng)用程序的運行結(jié)果。本章小結(jié)本章主要介紹了流計算SparkStreaming,Spark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非常活躍、高效的大數(shù)據(jù)計算平臺。包括流計算概述、流計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論