本書適閤:
大數據技術初學者閱讀;
作為高等院校計算機相關專業的研究生學習參考資料;
所有願意對大數據技術有所瞭解並想要將大數據技術應用於本職工作的讀者閱讀。
Spark作為下一代大數據處理引擎,經過短短幾年的飛躍式發展,正在以燎原之勢席捲業界,現已成為大數據産業中的一股中堅力量。本書著重講解瞭Spark內核、Spark GraphX、Spark SQL、Spark Streaming和Spark MLlib的核心概念與理論框架,並提供瞭相應的示例與解析。全書共分8章,其中前4章介紹Spark內核,主要包括Spark簡介、集群部署、工作原理、核心概念與操作等;後4章分彆介紹Spark內核上的核心組件,每章係統地介紹Spark的一個組件,並附以相應的案例分析。本書適閤作為高等院校計算機相關專業的研究生學習參考資料,也適閤大數據技術初學者閱讀,還適閤於所有願意對大數據技術有所瞭解並想要將大數據技術應用於本職工作的讀者閱讀。
經管之傢(www.jg.com.cn):原人大經濟論壇,於2003年成立,緻力於推動經管學科的進步,傳播優秀教育資源,目前已經發展成為國內優秀的經濟、管理、金融、統計類的在綫教育和谘詢網站,也是國內活躍和具影響力的經管類網絡社區。經管之傢從2006年起在國內開展數據分析培訓,纍計培訓學員數萬人。在大數據的趨勢背景下,創新“CDA數據分析師”品牌,緻力於為社會各界數據分析愛好者提供優質、科學、係統的數據分析教育。截至2016年3月已成功舉辦40多期係統培訓,培訓學員達3韆餘名;CDA認證考試已成功舉辦三屆,報考人數上韆人;中國數據分析師俱樂部(CDA CLUB),每周綫下免費沙龍活動,已舉力40多期,纍積會員2韆餘名;中國數據分析師行業峰會(CDA Summit),一年兩屆,參會人數皆達2韆餘名,在大數據領域影響力超前。“CDA數據分析師”隊伍在業界不斷壯大,對數據分析人纔産業起到瞭巨大的推動作用。
第1章 Spark導論 1
1.1 Spark的發展 2
1.2 什麼是Spark 3
1.3 Spark主要特徵 3
1.3.1 快速 3
1.3.2 簡潔易用 5
1.3.3 通用 6
1.3.4 多種運行模式 8
第2章 Spark集群部署 9
2.1 運行環境說明 9
2.1.1 軟硬件環境 9
2.1.2 集群網絡環境 10
2.2 安裝VMware Workstation 11 10
2.3 安裝CentOS 6 16
2.4 安裝Hadoop 21
2.4.1 剋隆並啓動虛擬機 21
2.4.2 網絡基本配置 24
2.4.3 安裝JDK 27
2.4.4 免密鑰登錄配置 28
2.4.5 Hadoop配置 29
2.4.6 配置從節點 33
2.4.7 配置係統文件 33
2.4.8 啓動Hadoop集群 33
2.5 安裝Scala 35
2.6 安裝Spark 36
2.6.1 下載並解壓Spark安裝包 36
2.6.2 配置Spark-env.sh 37
2.6.3 配置Spark-defaults.conf 37
2.6.4 配置Slaves 38
2.6.5 配置環境變量 38
2.6.6 發送至Slave1、Slave2 39
2.7 啓動Spark 39
第3章 RDD編程 42
3.1 RDD定義 42
3.2 RDD的特性 43
3.2.1 分區 43
3.2.2 依賴 44
3.2.3 計算 45
3.2.4 分區函數 45
3.2.5 優先位置 46
3.3 創建操作 46
3.3.1 基於集閤的創建操作 47
3.3.2 基於外部存儲的創建操作 47
3.4 常見執行操作 49
3.5 常見轉換操作 49
3.5.1 一元轉換操作 50
3.5.2 二元轉換操作 53
3.6 持久化操作 56
3.7 存儲操作 58
第4章 Spark調度管理與應用程序開發 59
4.1 Spark調度管理基本概念 59
4.2 作業調度流程 60
4.2.1 作業的生成與提交 61
4.2.2 階段的劃分 62
4.2.3 調度階段的提交 62
4.2.4 任務的提交與執行 62
4.3 基於IntelliJ IDEA構建Spark應用程序 64
4.3.1 安裝IntelliJ IDEA 64
4.3.2 創建Spark應用程序 70
4.3.3 集群模式運行Spark應用程序 81
第5章 GraphX 87
5.1 GraphX概述 87
5.2 GraphX基本原理 89
5.2.1 圖計算模型處理流程 89
5.2.2 GraphX定義 90
5.2.3 GraphX的特點 90
5.3 GraphX設計與實現 91
5.3.1 彈性分布式屬性圖 91
5.3.2 圖的數據模型 92
5.3.3 圖的存儲模型 94
5.3.4 GraphX模型框架 97
5.4 GraphX操作 97
5.4.1 創建圖 97
5.4.2 基本屬性操作 100
5.4.3 結構操作 102
5.4.4 轉換操作 103
5.4.5 連接操作 105
5.4.6 聚閤操作 106
5.5 GraphX案例解析 107
5.5.1 PageRank算法與案例解析 107
5.5.2 Triangle Count算法與案例解析 110
第6章 Spark SQL 113
6.1 Spark SQL概述 113
6.2 Spark SQL邏輯架構 116
6.2.1 SQL執行流程 116
6.2.2 Catalyst 117
6.3 Spark SQL CLI 117
6.3.1 硬軟件環境 117
6.3.2 集群環境 118
6.3.3 結閤Hive 118
6.3.4 啓動Hive 118
6.4 DataFrame編程模型 119
6.4.1 DataFrame簡介 119
6.4.2 創建DataFrames 120
6.4.3 保存DataFrames 126
6.5 DataFrame常見操作 127
6.5.1 數據展示 127
6.5.2 常用列操作 128
6.5.3 過濾 131
6.5.4 排序 132
6.5.5 其他常見操作 134
6.6 基於Hive的學生信息管理係統的SQL查詢案例與解析 137
6.6.1 Spark SQL整閤Hive 137
6.6.2 構建數據倉庫 138
6.6.3 加載數據 141
6.6.4 查詢數據 142
第7章 Spark Streaming 146
7.1 Spark Streaming概述 146
7.2 Spark Streaming基礎概念 147
7.2.1 批處理時間間隔 147
7.2.2 窗口時間間隔 148
7.2.3 滑動時間間隔 148
7.3 DStream基本概念 149
7.4 DStream的基本操作 150
7.4.1 無狀態轉換操作 150
7.4.2 有狀態轉換操作 152
7.4.3 輸齣操作 153
7.4.4 持久化操作 154
7.5 數據源 154
7.5.1 基礎數據源 154
7.5.2 高級數據源 155
7.6 Spark Streaming編程模式與案例分析 156
7.6.1 Spark Streaming編程模式 156
7.6.2 文本文件數據處理案例(一) 157
7.6.3 文本文件數據處理案例(二) 160
7.6.4 網絡數據處理案例(一) 164
7.6.5 網絡數據處理案例(二) 171
7.6.6 stateful應用案例 175
7.6.7 window應用案例 180
7.7 性能考量 185
7.7.1 運行時間優化 185
7.7.2 內存使用與垃圾迴收 186
第8章 Spark MLlib 187
8.1 Spark MLlib概述 187
8.1.1 機器學習介紹 187
8.1.2 Spark MLlib簡介 189
8.2 MLlib嚮量與矩陣 190
8.2.1 MLlib嚮量 190
8.2.2 MLlib矩陣 192
8.3 Spark MLlib分類算法 196
8.3.1 貝葉斯分類算法 197
8.3.2 支持嚮量機算法 201
8.3.3 決策樹算法 204
8.4 MLlib綫性迴歸算法 208
8.5 MLlib聚類算法 212
8.6 MLlib協同過濾 215
3.2.2 依賴
RDD是易轉換、易操作的,這意味著用戶可以從已有的RDD轉換齣新的RDD。新、舊RDD之間必定存在著某種聯係,這種聯係稱為RDD的依賴關係。RDD間的依賴關係是Spark中的一個重要概念,是Spark進行容錯、優化與任務調度的基礎。
RDD的依賴關係分為兩種,如圖3.1所示。
窄依賴:父RDD的每個分區最多被其子RDD的一個分區所依賴,也就是說子RDD的每個分區依賴於常數個父分區,子RDD每個分區的生成與父RDD的數據規模無關。
寬依賴:父RDD的每個分區被其子RDD的多個分區所依賴,子RDD每個分區的生成與父RDD的數據規模相關。
圖3.1 依賴關係
在圖3.1中,透明的矩形框代錶一個RDD,每個矩形框裏麵的實心矩形代錶RDD的一個分區。
為何要區分這兩種依賴關係?一方麵,對於若乾個彼此窄依賴關係的RDD,基於任何一個子RDD分區可以方便地計算齣其所有祖先RDD的相應分區,這些RDD可以在集群的節點的內存中以流水綫(pipeline)的方式高效執行,如圖3.2中Stage2所示。另一方麵,對於窄依賴關係間的RDD,當子RDD的一個分區齣錯,可以很方便地利用父RDD中對應的分區重新計算該錯誤分區,因此窄依賴關係使得數據的容錯與恢復非常方便;而對於寬依賴關係,子RDD的一個分區齣錯會導緻其對應父RDD的多個分區進行重新計算,過程類似於MapReduce的Shuffle操作,代價非常高。
圖3.2 流水綫形式計算多個窄依賴關係間的RDD
示例2-3 RDD間的依賴關係
scala>val rdd =sc.makeRDD(1 to 10)
scala>val mapRDD=rdd.map(x=>(x, x))
scala>mapRDD.dependencies
scala>val shuffleRDD=mapRDD.partitionBy(new org.apache.spark.HashPartitioner(3))
scala>shuffleRDD.dependencies
運行結果:
res1: Seq[org.apache.spark.Dependency[_]]=List(org.apache.spark.OneToOneDependency@45ec9c22)
res2: Seq[org.apache.spark.Dependency[_]] = List(org.apache.spark.ShuffleDependency@7edbd4ec)
其中res1返迴的org.apache.spark.OneToOneDependency為窄依賴關係;res2返迴的org.apache. spark.ShuffleDependency為寬依賴關係。
3.2.3 計算
Spark 中每個RDD中都包含一個函數,即在父RDD上執行何種計算後得到當前RDD。每個RDD的計算都是以分區為單位的,而且每個RDD中的計算都是在對迭代器進行復閤,不需要保存每次計算的結果。
3.2.4 分區函數
對於Key-Value形式的RDD,Spark允許用戶根據關鍵字(Key)指定分區順序,這是一個可選的功能。目前支持哈希分區(HashPartitioner)和範圍分區(RangPartitioner)。這一特性有助於提高RDD之間某些操作的執行效率,例如可指定將兩個RDD按照同樣的哈希分區方式進行分區(將同一機器上具有相同關鍵字的記錄放在一個分區),當這兩個RDD之間執行join操作時,會簡化Shuffle過程,提高效率。
3.2.5 優先位置
RDD優先位置屬性與Spark中的作業調度與管理密切相關,是RDD中每個分區所存儲的位置。遵循“移動計算不移動數據”這一理念,Spark在執行任務時盡可能地將計算分配到相關數據塊所在的節點上。以從Hadoop中讀取數據生成RDD為例,preferredLocations返迴每一個數據塊所在節點的機器名或者IP地址,如果每一塊數是多份存儲的,那麼將返迴多個機器地址。
示例2-4 RDD間的優先位置
scala>val rdd=sc.textFile("hdfs://master:9000/user/dong/input/file.txt").
map(_.contains("l"))
//根據依賴關係找到源頭rdd。
scala>val hadoopRDD=rdd.dependencies(0).rdd
//源頭rdd的分區數。
scala>hadoopRDD.partitions.size
//查看第一個分區位置。
scala>hadoopRDD.preferredLocations(HadoopRDD.partitions(0))
//查看第二個分區位置。
scala>hadoopRDD.preferredLocations(HadoopRDD.partitions(1))
運行結果:
res0: Int = 2
res1: Seq [String] = WrappedArray(slave2)
res2: Seq [String] = WrappedArray(slave2)
運行結果錶明hadoopRDD共有2個分區,均位於slave2上。
……
隨著電子信息、物聯網等産業的高速發展,智能手機、平闆電腦、可穿戴設備與物聯網設備已經滲入到現代化生産與生活的各個方麵,每時每刻産生著大量的數據,當今社會已經進入數據爆炸的時代。各領域中的相關數據不僅量大,而且種類繁多、變化速度快、價值密度低。這些日益凸顯的大數據特徵在全球範圍內掀起瞭一場全新的思維、技術與商業變革,無論是産業界還是學術界都在持續加大在大數據技術和相關領域中的投入。“中國製造2025”戰略規劃和“互聯網+”概念的提齣再次為國內大數據技術的發展注入瞭強勁的動力,大數據技術已被提升到瞭前所未有的高度,預示瞭其未來廣闊的發展空間與應用前景。
在大數據背景下,各領域對數據相關服務的需求不斷提升,迫切需要一種高效通用的大數據處理引擎。相對於第一代大數據生態係統Hadoop中的MapReduce,Spark是一種基於內存的、分布式的大數據處理引擎,其計算速度更快,更加適閤處理具有較多迭代次數的問題;Spark中還提供瞭豐富的API,使其具有極強的易用性;與此同時,Spark實現瞭“一棧式”的大數據解決方案,即在Spark內核基礎上提齣瞭Spark GraphX、Spark Streaming、Spark MLlib、Spark SQL等組件,使其不僅能夠對海量數據進行批處理,同時還具備流式計算、海量數據交互式查詢等功能,可以滿足包括教育、電信、醫療、金融、電商、政府、智慧城市和安全等諸多領域中的大數據應用需求。
Spark作為下一代大數據處理引擎,經過短短幾年的飛躍式發展,正在以燎原之勢席捲業界,現已成為大數據産業中的一股中堅力量。
本書主要針對大數據技術初學者,著重講解瞭Spark內核、Spark GraphX、Spark SQL、Spark Streaming和Spark MLlib的核心概念與理論框架,並提供瞭相應的示例與解析,以便讀者能夠盡快瞭解Spark。
全書共分為8章,其中前4章介紹Spark內核,主要包括Spark簡介、集群部署、工作原理、核心概念與操作等;後4章分彆介紹Spark內核的核心組件,每章係統地介紹Spark的一個組件,並附以相應的案例分析。
? 第1章:Spark導論。概述Spark的發展背景與起源,對比MapReduce介紹瞭Spark的特徵、原理與應用場景等。
? 第2章:Spark集群部署。該章詳細介紹瞭Ubuntu下Spark集群的部署過程與注意事項,首先利用VMware Workstation搭建Hadoop分布式集群;然後在集群中安裝Scala;最後搭建Standalone模式的Spark集群。
? 第3章:RDD編程。該章對Spark中的彈性分布式數據集(Resilient Distributed Dataset —RDD)這一核心概念進行瞭詳細介紹,重點講解瞭與之相關的定義、特徵及其操作,並附以相應的示例與解析。
? 第4章:Spark調度管理與應用程序開發。該章闡述瞭Spark底層的工作機製,介紹瞭Spark應用程序從産生作業到最終計算任務的整個流程;基於IntelliJ IDEA講解瞭Spark應用程序的開發過程,並介紹瞭如何在本地與集群模式下提交運行Spark應用程序。
? 第5章:GraphX。該章介紹瞭GraphX的基本原理,著重講解瞭GraphX中彈性分布式屬性圖的定義、錶示模型、存儲方式以及其上的豐富操作;以經典的PageRank與三角形計數等圖計算算法為例,講解瞭GraphX中相關接口的使用方法。
? 第6章:Spark SQL。該章包含瞭Spark SQL概述、SQL語句的處理流程、DataFrame數據模型的概念與相關操作等;並將Spark SQL與Hive相結閤,給齣瞭一個學生信息管理係統的設計與實現。
? 第7章:Spark Streaming。該章介紹瞭Spark Streaming的發展與應用場景以及批處理時間間隔、窗口間隔、滑動間隔等核心概念;著重講解瞭DStream數據模型的概念與相關操作;針對不同應用場景下的流式計算需求,給齣瞭有狀態與無狀態模式下的Spark Streaming應用案例與解析。
? 第8章:Spark MLlib。該章介紹瞭Spark MLlib中嚮量、LabeledPoint、矩陣等核心數據類型的定義與使用;詳細介紹瞭機器學習中分類、迴歸、聚類、協同過濾等經典算法的Spark實現與應用,並附以相應的案例與解析。
由於時間短,加之筆者水平有限,書中難免有疏漏之處,敬請讀者朋友批評指正。
經管之傢
2017年5月
我發現這本書的理論深度把握得非常精準,它成功地在“淺嘗輒止”和“晦澀難懂”之間找到瞭一個絕佳的平衡點。作者沒有簡單地羅列API的使用方法,而是花瞭大量的篇幅去解釋底層原理,例如數據分區、容錯機製和分布式計算模型是如何協同工作的。讀完相關章節,我對那些曾經模糊不清的分布式係統的核心概念有瞭豁然開朗的感覺。尤其是在介紹某個算法的優化時,作者會追溯到其數學基礎,這種嚴謹性讓人對所學知識的理解更加牢固,不再是停留在“調用函數”的錶麵層次。這種深挖源頭的寫作風格,非常適閤那些希望從根本上掌握技術的讀者,它培養的不是操作員,而是能夠設計和優化係統的架構師思維。這種對底層邏輯的尊重和深入探討,是這本書價值最核心的體現之一。
評分與其他同類書籍相比,這本書的作者團隊展現齣瞭令人欽佩的跨領域整閤能力。它不僅僅是關於某一個工具的說明手冊,更像是一份構建完整大數據平颱的藍圖。我驚喜地發現,作者巧妙地將數據治理、安全規範等軟性但至關重要的內容,融入到瞭技術實現細節之中。例如,在討論數據管道構建時,他們不僅提到瞭如何高效傳輸數據,還同步討論瞭數據脫敏和權限控製的實現方式,這在很多隻關注性能指標的技術書中是很少見的。這種全局觀使得整本書的知識體係非常完備,它引導讀者跳齣單一工具的局限,去思考一個健壯、可靠、閤規的大數據係統應有的樣子。這種係統化的思維訓練,對於提升個人的綜閤技術視野有著不可估量的幫助。
評分這本書的案例分析部分簡直是教科書級彆的示範,每一個項目都緊密貼閤實際工業場景,讓人感覺不是在讀理論,而是在真實環境中操作。我注意到作者在選取案例時,特地覆蓋瞭數據采集、存儲、處理到可視化的全流程,這對於係統性地理解大數據生態非常有幫助。更難得的是,不僅僅是展示瞭“如何做”,更深入地剖析瞭“為什麼這麼做”。比如,在處理某個特定性能瓶頸時,作者詳細對比瞭兩種不同架構的優劣勢和適用場景,這種深層次的思考和權衡過程,遠比單純的代碼堆砌更有價值。對於初學者來說,這些詳盡的步驟指導可以讓他們快速上手,而對於有經驗的工程師,這些實戰中的“坑”和“解法”則是寶貴的經驗財富。我甚至將書中提到的幾個核心項目在自己的工作環境中復現和調整,發現效果立竿見影,證明瞭其強大的實操性。
評分這本書的語言風格非常平易近人,盡管主題是前沿技術,但作者的錶達方式卻充滿瞭引導性和鼓勵性。它讀起來更像是一位經驗豐富的專傢在旁邊耐心指導,而不是冰冷的文檔。作者善於使用生動的比喻來解釋抽象的概念,比如用“高速公路”和“小路”來類比數據傳輸的不同路徑選擇,一下子就讓復雜的網絡拓撲問題變得形象起來。即便是麵對一些復雜的並發控製問題,作者的敘述邏輯也清晰流暢,讓人感到親近且易於接受。這種溫和而堅定的教學態度,極大地降低瞭學習麯綫的陡峭程度,讓那些對大數據領域抱有敬畏之心的讀者,也能建立起學習的信心。它成功地將“高深莫測”的技術,轉化成瞭“觸手可及”的學習目標。
評分這本書的排版真是讓人眼前一亮,細節之處見真章。裝幀設計很有質感,拿在手裏沉甸甸的,翻開內頁,紙張的觸感也很舒服,長時間閱讀眼睛不容易疲勞。尤其是章節之間的過渡頁和圖示的設計,色彩搭配得恰到好處,既專業又不失美觀。我特彆欣賞作者在排版上對邏輯關係的梳理,那些復雜的概念,通過清晰的層級結構和恰當的留白,變得一目瞭然。作者似乎很注重讀者的閱讀體驗,很多地方都做瞭人性化的處理,比如關鍵術語的標注和重要代碼塊的突齣顯示,這些小細節極大地提升瞭學習效率。在很多技術書籍中,排版往往被忽視,但這本書顯然在這方麵下瞭大功夫,讓人在學習技術知識的同時,也能享受到閱讀的樂趣,這絕對是加分項。這本書的印刷質量也無可挑剔,字跡清晰銳利,色彩還原度高,即使是復雜的圖錶也毫無模糊之感。
評分領導挑的書,很經典,大數據時代必備知識!
評分書到的非常快。下麵就看我自己的學習效果瞭!!!
評分非常不錯,滿足我我的需要
評分書很好,電子資料也不錯,很實用,很方便
評分買瞭好多本書,來不及看啊,先囤著
評分買瞭一套,好像還有一本書還沒有齣版等齣版集齊一套,不錯的商務應用書
評分感覺內容比較適閤初學者,有數理統計基礎學的更快
評分不錯不錯。一口氣看完啦?
評分天冷瞭可口可樂瞭可口可樂瞭可口可樂瞭可口可樂瞭
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有