內容簡介
本書從初學者角度詳細介紹了Spark應用程式體系架構的核心技術,全書共9章。第1章詳細介紹開發Spark框架的Scala程式語言;第2~4、7~8章主要講解Spark核心基礎、SparkRDD彈性分散式數據集、Spark SQL處理結構化數據、Spark Streaming實時計算框架、Spark MLlib機器學習庫,並包含了搭建Spark集群、Spark集群的操作方式、利用Spark解決大數據工作中遇到的基本問題。第5~6章主要講解大數據環境中常見的輔助系統,HBase資料庫以及Kafka流處理平台,包含輔助系統的搭建方式、使用方法以及相關底層實現的基本原理;第9章是一個綜合項目,利用Spark框架開發流式計算系統。掌握Spark相關技術,能夠很好地適應企業開發的技術需要頸宙仔,為離線、實時數據處理平台的開發奠定基礎。
本書附有配套原始碼、教學PPT、題庫、教學視頻、教學補充案例、教學設計等資源。為了幫助初學者更好地學習本書中的內容,還提供了線上答疑,歡迎讀者關注。
本書可作為高等院校本、專科計算機相關專業,大數據課程的專用教材,是一本適合廣大計算機編程愛好者的優秀讀物。
圖書目錄
第1章Scala語言基礎1
1.1初識Scala1
1.1.1Scala概述1
1.1.2Scala的下載安裝2
1.1.3在IDEA開發工具中下載安裝
Scala外掛程式4
1.1.4開發第一個Scala程式6
1.2Scala的基礎語法9
1.2.1聲檔己端明值和變炒市盼量9
1.2.2數據類型9
1.2.4控制結構語句10
1.2.5方法和函式13
1.3Scala的數據結構15
1.3.1數組15
1.3.2元組18
1.3.3集合19
1.4Scala面向對象的特性24
1.4.1類與對象24
1.4.2繼承25
1.4.3單例對象和伴生對象26
1.4.4特質28
1.5Scala的模式匹配與樣例類29
1.5.1模式匹配30
1.5.2樣例類31
1.6本章小結31
1.7課後習題32
第2章Spark基礎33
2.1初識Spark33Spark大數據分析與實戰
2.1.1Spark概述33
2.1.2Spark的特點34
2.1.3Spark套用場景35
2.1.4Spark與Hadoop對比36
2.2搭建Spark開發環境37
2.2.1環境準備37
2.2.2Spark的部署方式37
2.2.3Spark集群安裝部署38
2.2.4Spark HA集群部署41
2.3Spark運行架構與原理45
2.3.1基本概念45
2.3.2Spark集群運行架構45
2.3.3Spark運行基本流程46
2.4體驗第一套連承境個Spark程式47
2.5啟動SparkShell49
2.5.1運行SparkShell命令49
2.5.2運行SparkShell讀取HDFS檔案50
2.6IDEA開發WordCount程式52
2.6.1以本地堡姜槓立模式執行Spark程式52
2.6.2集群模式執行Spark程式54
2.7本章小結58
2.8課後習題59
第3章Spark RDD彈性分散式數據集60
3.1RDD簡介60
3.2RDD的創建方式61
3.2.1從檔案系統載入數據創建RDD61
3.2.2通過並行集合創建RDD62
3.3RDD的處理過程員良63
3.3.1轉換運算元63
3.3.2行動運算元67
3.3.3編寫WordCount詞頻統計案例70
3.4RDD的分區71
3.5RDD的依賴關係71
3.6RDD機制73
3.6.1持久化機制73
3.6.2容錯機制75
3.7Spark的任務調度76
3.7.1DAG的概念76
3.7.2RDD在Spark中的運行流程76
3.8本白立台章小結78
3.9課後習題78
第4章Spark SQL結構化數據檔案處理80
4.1Spark SQL的基礎知識80
4.1.1Spark SQL的簡介80
4.1.2Spark SQL架構81
4.2DataFrame的基礎知識82
4.2.1DataFrame簡介82
4.2.2DataFrame的創建83
4.2.3DataFrame的常用操作86
4.3Dataset的基礎知識89
4.3.1Dataset簡介89
4.3.2Dataset對象的創建89
4.4RDD轉換為DataFrame90
4.4.1反射機制推斷Schema90
4.4.2編程方式定義Schema92
4.5Spark SQL運算元據源94
4.5.1操作MySQL94
4.5.2操作Hive數據集96
4.6本章小結99
4.7課後習題99
第5章HBase分散式資料庫101
5.1HBase的基礎知識101
5.1.1HBase的簡介101
5.1.2HBase的數據模型102
5.2HBase的集群部署103
5.3HBase的基本操作107
5.3.1HBase的Shell操作107
5.3.2HBase的Java API操作112
5.4深入學習HBase原理120
5.4.1HBase架構121
5.4.2物理存儲122
5.4.3定址機制123
5.4.4HBase讀寫數據流程124
5.5HBase和Hive的整合125
5.6本章小結130
5.7課後習題130
第6章Kafka分散式發布訂閱訊息系統132
6.1Kafka的基礎知識132
6.1.1訊息傳遞模式簡介132
6.1.2Kafka簡介133
6.2Kafka工作原理134
6.2.1Kafka核心組件介紹134
6.2.2Kafka工作流程分析136
6.3Kafka集群部署與測試138
6.3.1安裝Kafka138
6.3.2啟動Kafka服務140
6.4Kafka生產者和消費者實例141
6.4.1基於命令行方式使用Kafka141
6.4.2基於Java API方式使用Kafka143
6.5Kafka Streams148
6.5.1Kafka Streams概述149
6.5.2Kafka Streams開發單詞計數套用149
6.6本章小結153
6.7課後習題153
第7章Spark Streaming實時計算框架155
7.1實時計算的基礎知識155
7.1.1什麼是實時計算155
7.1.2常用的實時計算框架155
7.2Spark Streaming的基礎知識156
7.2.1Spark Streaming簡介156
7.2.2Spark Streaming工作原理157
7.3Spark的DStream157
7.3.1DStream簡介157
7.3.2DStream編程模型158
7.3.3DStream轉換操作158
7.3.4DStream視窗操作164
7.3.5DStream輸出操作168
7.3.6DStream實例——實現網站熱詞排序170
7.4Spark Streaming整合Kafka實戰173
7.4.1KafkaUtils.createDstream方式173
7.4.2KafkaUtils.createDirectStream方式177
7.5本章小結180
7.6課後習題180
第8章Spark MLlib 機器學習算法庫182
8.1初識機器學習182
8.1.1什麼是機器學習182
8.1.2機器學習的套用183
8.2Spark機器學習庫MLlib的概述184
8.2.1MLlib的簡介184
8.2.2Spark機器學習工作流程185
8.3數據類型186
8.3.1本地向量186
8.3.2標註點186
8.3.3本地矩陣187
8.4Spark MLlib基本統計188
8.4.1摘要統計188
8.4.2相關統計189
8.4.3分層抽樣190
8.5分類191
8.5.1線性支持向量機191
8.5.2邏輯回歸192
8.6案例——構建推薦系統193
8.6.1推薦模型分類194
8.6.2利用MLlib實現電影推薦194
8.7本章小結200
8.8課後習題200
第9章綜合案例——Spark實時交易數據統計202
9.1系統概述202
9.1.1系統背景介紹202
9.1.2系統架構設計202
9.1.3系統預覽203
9.2Redis資料庫203
9.2.1Redis介紹204
9.2.2Redis部署與啟動204
9.2.3Redis操作及命令205
9.3模組開發——構建工程結構206
9.4模組開發——構建訂單系統211
9.4.1模擬訂單數據211
9.4.2向Kafka集群傳送訂單數據212
9.5模組開發——分析訂單數據215
9.6模組開發——數據展示219
9.6.1搭建Web開發環境219
9.6.2實現數據展示功能221
9.6.3可視化平台展示227
9.7本章小結228
2.3.3Spark運行基本流程46
2.4體驗第一個Spark程式47
2.5啟動SparkShell49
2.5.1運行SparkShell命令49
2.5.2運行SparkShell讀取HDFS檔案50
2.6IDEA開發WordCount程式52
2.6.1以本地模式執行Spark程式52
2.6.2集群模式執行Spark程式54
2.7本章小結58
2.8課後習題59
第3章Spark RDD彈性分散式數據集60
3.1RDD簡介60
3.2RDD的創建方式61
3.2.1從檔案系統載入數據創建RDD61
3.2.2通過並行集合創建RDD62
3.3RDD的處理過程63
3.3.1轉換運算元63
3.3.2行動運算元67
3.3.3編寫WordCount詞頻統計案例70
3.4RDD的分區71
3.5RDD的依賴關係71
3.6RDD機制73
3.6.1持久化機制73
3.6.2容錯機制75
3.7Spark的任務調度76
3.7.1DAG的概念76
3.7.2RDD在Spark中的運行流程76
3.8本章小結78
3.9課後習題78
第4章Spark SQL結構化數據檔案處理80
4.1Spark SQL的基礎知識80
4.1.1Spark SQL的簡介80
4.1.2Spark SQL架構81
4.2DataFrame的基礎知識82
4.2.1DataFrame簡介82
4.2.2DataFrame的創建83
4.2.3DataFrame的常用操作86
4.3Dataset的基礎知識89
4.3.1Dataset簡介89
4.3.2Dataset對象的創建89
4.4RDD轉換為DataFrame90
4.4.1反射機制推斷Schema90
4.4.2編程方式定義Schema92
4.5Spark SQL運算元據源94
4.5.1操作MySQL94
4.5.2操作Hive數據集96
4.6本章小結99
4.7課後習題99
第5章HBase分散式資料庫101
5.1HBase的基礎知識101
5.1.1HBase的簡介101
5.1.2HBase的數據模型102
5.2HBase的集群部署103
5.3HBase的基本操作107
5.3.1HBase的Shell操作107
5.3.2HBase的Java API操作112
5.4深入學習HBase原理120
5.4.1HBase架構121
5.4.2物理存儲122
5.4.3定址機制123
5.4.4HBase讀寫數據流程124
5.5HBase和Hive的整合125
5.6本章小結130
5.7課後習題130
第6章Kafka分散式發布訂閱訊息系統132
6.1Kafka的基礎知識132
6.1.1訊息傳遞模式簡介132
6.1.2Kafka簡介133
6.2Kafka工作原理134
6.2.1Kafka核心組件介紹134
6.2.2Kafka工作流程分析136
6.3Kafka集群部署與測試138
6.3.1安裝Kafka138
6.3.2啟動Kafka服務140
6.4Kafka生產者和消費者實例141
6.4.1基於命令行方式使用Kafka141
6.4.2基於Java API方式使用Kafka143
6.5Kafka Streams148
6.5.1Kafka Streams概述149
6.5.2Kafka Streams開發單詞計數套用149
6.6本章小結153
6.7課後習題153
第7章Spark Streaming實時計算框架155
7.1實時計算的基礎知識155
7.1.1什麼是實時計算155
7.1.2常用的實時計算框架155
7.2Spark Streaming的基礎知識156
7.2.1Spark Streaming簡介156
7.2.2Spark Streaming工作原理157
7.3Spark的DStream157
7.3.1DStream簡介157
7.3.2DStream編程模型158
7.3.3DStream轉換操作158
7.3.4DStream視窗操作164
7.3.5DStream輸出操作168
7.3.6DStream實例——實現網站熱詞排序170
7.4Spark Streaming整合Kafka實戰173
7.4.1KafkaUtils.createDstream方式173
7.4.2KafkaUtils.createDirectStream方式177
7.5本章小結180
7.6課後習題180
第8章Spark MLlib 機器學習算法庫182
8.1初識機器學習182
8.1.1什麼是機器學習182
8.1.2機器學習的套用183
8.2Spark機器學習庫MLlib的概述184
8.2.1MLlib的簡介184
8.2.2Spark機器學習工作流程185
8.3數據類型186
8.3.1本地向量186
8.3.2標註點186
8.3.3本地矩陣187
8.4Spark MLlib基本統計188
8.4.1摘要統計188
8.4.2相關統計189
8.4.3分層抽樣190
8.5分類191
8.5.1線性支持向量機191
8.5.2邏輯回歸192
8.6案例——構建推薦系統193
8.6.1推薦模型分類194
8.6.2利用MLlib實現電影推薦194
8.7本章小結200
8.8課後習題200
第9章綜合案例——Spark實時交易數據統計202
9.1系統概述202
9.1.1系統背景介紹202
9.1.2系統架構設計202
9.1.3系統預覽203
9.2Redis資料庫203
9.2.1Redis介紹204
9.2.2Redis部署與啟動204
9.2.3Redis操作及命令205
9.3模組開發——構建工程結構206
9.4模組開發——構建訂單系統211
9.4.1模擬訂單數據211
9.4.2向Kafka集群傳送訂單數據212
9.5模組開發——分析訂單數據215
9.6模組開發——數據展示219
9.6.1搭建Web開發環境219
9.6.2實現數據展示功能221
9.6.3可視化平台展示227
9.7本章小結228