大數(shù)據(jù)平臺技術實例教程 課件 【ch10】基于內(nèi)存的分布式計算框架Spark_第1頁
大數(shù)據(jù)平臺技術實例教程 課件 【ch10】基于內(nèi)存的分布式計算框架Spark_第2頁
大數(shù)據(jù)平臺技術實例教程 課件 【ch10】基于內(nèi)存的分布式計算框架Spark_第3頁
大數(shù)據(jù)平臺技術實例教程 課件 【ch10】基于內(nèi)存的分布式計算框架Spark_第4頁
大數(shù)據(jù)平臺技術實例教程 課件 【ch10】基于內(nèi)存的分布式計算框架Spark_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于內(nèi)存的分布式計算框架Spark“新工科建設之路·數(shù)據(jù)科學與大數(shù)據(jù)系列大數(shù)據(jù)平臺技術實剛教程第十章01基于Spark的大數(shù)據(jù)分析框架配置本章任務完成后,鏡像保存的快照節(jié)點為ahutOX-ll,該節(jié)點完成了Spark、Python、Jupyter等環(huán)境的配置,其中Spark版本為231,ahut。1作為master節(jié)點,ahut02>ahut03、ahut04作為Slave節(jié)點,如圖10-1所示。讀者在編碼實現(xiàn)Spark操作與應用時若遇到環(huán)境錯誤,可恢復至對應的快照節(jié)點,初始化Spark的部署環(huán)境。新增進程的作用如下。Master:主要負責管理整個集群的資源信息。Worker:主要負責管理所在節(jié)點的資源信息。02Spark基礎知識Spark的特點1.數(shù)據(jù)處理快:作為一種基于內(nèi)存的計算框架,Spark將中間數(shù)據(jù)集保存在內(nèi)存中以減少磁盤I/O,從而提高性能。2.通用性強:Spark具有強大的通用性,集成多個分析組件,覆蓋機器學習、圖算法、流計算、SQL查詢和迭代計算等多個領域。這些組件之間緊密、無縫集成,實現(xiàn)一站式解決工作流問題,使開發(fā)人員可以在一個平臺上完成多個任務。其架構如圖10-2所示。HBase體系架構及組件Spark的特點3.適應性好:Spark具有良好的適應性,與Hadoop緊密集成,它主要用于替代Hadoop中的MapReduce計算模型,仍使用HDFS進行存儲,并且可以通過YARN實現(xiàn)資源調(diào)度管理。這使得開發(fā)人員可以在不改變原有架構的情況下,利用Spark進行計算。同時,Spark同樣可以像Hadoop一樣有良好的可擴展性,滿足不同計算需求。4.易于使用,用戶體驗好:Spark提供了Scala、Java、Python和R四種語言的高級API和豐富的內(nèi)置庫,使得開發(fā)人員可以使用多種編程語言進行高效的數(shù)據(jù)處理。特別的是,Scala和Python的REPL(ReadEval-PrintLoop,交互式解釋器)使應用更具靈活性。HBase體系架構及組件Spark和Hadoop的比較0102Spark更擅長處理實時流數(shù)據(jù),MapReduce頻繁磁盤操作的執(zhí)行效率不如前者。對MapReduce來說,執(zhí)行Map和Reduce時,都需要寫入磁盤,這會對處理速度產(chǎn)生影響。Spark基于內(nèi)存的機制,避免頻繁的磁盤I/O操作,從而提高數(shù)據(jù)處理速度。03MapReduce模型相對簡單,只支持Map和Reduce兩種操作,這限制了它的靈活性和可擴展性。而Spark框架則提供了豐富的API,可以實現(xiàn)多種數(shù)據(jù)及操作,如轉換操作的map、filter、join及行動操作的count、collect等。Spark和Hadoop的比較0405雖然Spark消耗的內(nèi)存比MapReduce更多,但在實時數(shù)據(jù)處理和在線計算場景中,Spark比MapReduce效果更好。然而,在處理大規(guī)模數(shù)據(jù)集的離線計算和時效要求較低的項目中,MapReduce磁盤的存儲成本更低,更適合存儲海量數(shù)據(jù)。由此可見,具體選用哪種大數(shù)據(jù)處理框架,還要看具體應用場景。在MapReduce框架中,中間結果會被大量寫入磁盤,從而拖慢整體的數(shù)據(jù)處理速度。而RDD則采用將結果保存在內(nèi)存中的方式,彌補了MapReduce的這個缺點。RDD是Spark中的一種數(shù)據(jù)模型,它將數(shù)據(jù)集分成多個分區(qū),每個分區(qū)可以在不同的節(jié)點上進行計算,同時RDD在內(nèi)存中緩存數(shù)據(jù),這一特點使得數(shù)據(jù)可以在多個操作間重用。RDD的概念RDDRDD(彈性分布式數(shù)據(jù)集)是Spark中最核心的概念之一,它是一個只讀元素集合。RDD作為Spark的基本數(shù)據(jù)抽象,每個分區(qū)表示數(shù)據(jù)集的一部分。RDD是一個包含多個算子的、不可變的、可分區(qū)的、具有并行計算能力的集合。用RDD可以實現(xiàn)一種抽象的數(shù)據(jù)架構,將現(xiàn)有RDD通過轉換操作生成新的RDD,以滿足業(yè)務邏輯的需求。Spark的運行機制Spark的運行機制Spark的運行模式03HBase數(shù)據(jù)庫少163-167頁啟動PySpaik0102在啟動PySpark之前,需要啟動ZooKeeper和Hadoop。選擇PySpark的運行模式。Local模式:在ahut01中運行命令/opt/ahut/spark/bin/pyspark。Standalone模式:運行該模式前,需要先啟動Spark,這里不能直接運行start-allsh,因為會和Hadoop的啟動命令沖突,命令如下:[root@ahut0lsoftware]#/opt/ahut/spark/sbin/start-allsh。SparkonYARN模式:啟動該模式前,需要完成10.3.1節(jié)中關于yarn-sitexml的相關配置并啟動YARN的相關服務,命令如下:[root@ahut01-]#/opt/ahut/spark/bin/pyspark--masteryarn03這里選擇Local模式啟動PySpark,并記錄輸出信息中的token值。啟動PySpaik04進入頁面后,單擊“NewFolder”按來創(chuàng)建一個文件夾,并將其重命名為myspark,如圖10-8所示。單擊my-spark文件夾,新建Python3項目,就可以進入Jupyter交互頁面,如圖10-9所示。05Jupyter有兩種模式:命令模式和編輯模式。①cell側邊欄默認是綠色,即編輯模式,按Esc鍵可進入命令模式。②cell側邊欄是藍色時,即命令模式,按回車鍵可進入編輯模式。06輸入代碼測試是否配置成功(運行快捷鍵為Ctrl+回車。04Spark的常用操作Spark中的map函數(shù)會對每一個輸入進行相應的操作,然后為每一個輸入返回一個對象。換句話說,就是對RDD中的每個元素進行逐一的函數(shù)操作,映射為另一個RDD。flatMap會先執(zhí)行map的操作,再將所有對象合并為一個對象,返回值是一個Sequence,正是“先映射后扁平化”。實例10-1map、flatMap三種方法都是對RDD進行的聚合操作。reduce與fold方法是對同種元素類型數(shù)據(jù)的RDD進行操作,其返回值是一個同樣類型的新元素。fold與reduce類似,接收與reduce接收的函數(shù)簽名相同的函數(shù),另外再加上一個初始值作為第一次調(diào)用的結果。aggregate方法可以對兩個不同類型的元素進行聚合,即支持異構。實例10-2聚合類reduce、fold、aggregatefilter函數(shù)用于過濾RDD,即過濾掉不符合條件的元素,返回由符合條件元素組成的RDD。distinct會對重復的元素進行去重,返回一個新的不包含重復元素的RDD。實例10-3filter、distinctntersectioii(cither)返回這個RDD和另一個RDD的交集,即使輸入RDD包含任何重復的元素,輸出也不會包含任何重復的元素。union(other)返回止匕RDD和另一個RDD的并集。sortByKey是對key(鍵)的排序,默認為True,即升序,當設置參數(shù)ascending=False時表示降序排列。sortBy可以指定是對鍵還是對值進行排序,第一個參數(shù)是函數(shù),返回對應的某一列值用來排序;第二個參數(shù)是ascending,決定是升序還是降序;第三個參數(shù)是numPartitions,決定排序后RDD的分區(qū)個數(shù),默認排序之后的分區(qū)數(shù)和排序之前的個數(shù)相等。其中第一個參數(shù)必須傳入,第二個和第三個參數(shù)可無。實例10-4交集intersection并集union>排序sortByPairRDD的算子包括groupBykey>reduceByKey>aggregateByKey>reduceByKeyLocallyogroupByKey按照Key分組,得到相同Key的值的sequence,可以通過自定義partitioner完成分區(qū)。實例10-5PairRDD的算子join在類型為(&V)和(K,W)的RDD上調(diào)用,返回一個相同Key對應的所有元素連接在一起的(K,(V,W))形式的RDD。實例10-6join少172-173頁05SparkSQL的應用SparkSQL是Spark用來處理結構化數(shù)據(jù)的一個模塊,它提供了一個編程抽象(稱為DataFrame)且起到分布式SOL查詢引警的作用。與RDD類似,DataFrame也是一個分布式數(shù)據(jù)容器,然而DataFrame更像傳統(tǒng)數(shù)據(jù)庫的二維表格。除數(shù)據(jù)外,還記錄數(shù)據(jù)的結構信息即schema。Spark使對結構化數(shù)據(jù)的操作更加高效和方便。使用SparkSOL有多種方式,包括SQL、DataFramesAPI和DatasetsAPI。但無論是哪種API還是編程語言,都基于同樣的執(zhí)行引擎,因此可以使用代碼在不同的API之間隨意切換。06Spark綜合應用實例1.數(shù)據(jù)集介紹在Kaggle數(shù)據(jù)平臺下載數(shù)據(jù)集albumscsv,其中包含10萬張音樂專輯的數(shù)據(jù)。albumtitle:音樂專輯名稱。genre:專輯類型。yearofpub;專輯發(fā)行年。numoftracks:每張專輯中的單曲數(shù)量。numofsales:專輯銷量。rollingstonecritic:滾石網(wǎng)站的評分。mtvcritic:全球大音樂電視網(wǎng)MTV的評分。musicmaniaccritic:音樂達人的評分實例10-12基于Spark的音樂專輯數(shù)據(jù)分析2.數(shù)據(jù)分析要求統(tǒng)計各類型專輯的數(shù)量;統(tǒng)計各類型專輯的銷量總數(shù);統(tǒng)計近20年來每年發(fā)行的專輯數(shù)量和單曲數(shù)量。3.實際操作(1)首先上傳數(shù)據(jù)文件到HDFS中;(2)使用PySpark實現(xiàn)讀取數(shù)據(jù),形成DataFrame;(3)統(tǒng)計各類型專輯的數(shù)量(只顯示總數(shù)大于2000的10種專輯類型);(4)統(tǒng)計各類型專輯的銷量總數(shù);(5)統(tǒng)計近20年來每年發(fā)行的專輯數(shù)量和單曲數(shù)量。實例10-12基于Spark的音樂專輯數(shù)據(jù)分析07HBase綜合實例MLlibScala語言MLlib的機器學習算法1.特征處理數(shù)據(jù)和特征決定了機器學習的上限,而模型和算法就在不斷地逼近這個上限。特征工程本質是一項工程活動,目的是最大限度地從原始數(shù)據(jù)中提取特征供算法和模型使用。特征處理是特征工程的核心部分,特征處理方法包括數(shù)據(jù)預處理、特征選擇、降維等。2.標準化與歸一化標準化和歸一化雖然都是在保持數(shù)據(jù)分布不變的情況下對數(shù)據(jù)進行處理,但是標準化讓數(shù)據(jù)因量綱不一致導致的數(shù)據(jù)差別較大情況有

溫馨提示

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

評論

0/150

提交評論