本書是一本介紹大數(shù)據(jù)處理技術(shù)的專業(yè)圖書,力求提高讀者對大數(shù)據(jù)處理的認知水平和動手能力。本書首先介紹大數(shù)據(jù)技術(shù)的相關(guān)概念和發(fā)展歷程,從實踐的角度介紹 Hadoop 和 Spark 的安裝部署、編程基礎(chǔ)和使用方法;然后結(jié)合具體案例,重點介紹 Spark RDD、 Spark SQL、 Spark Streaming、 Spark GraphFrame 等的應(yīng)用思路和方法,并通過具體代碼,讓讀者更好地感受大數(shù)據(jù)處理技術(shù)的效果。
本書既可以作為高等院校計算機、大數(shù)據(jù)等相關(guān)專業(yè)的教材,也可以作為大數(shù)據(jù)技術(shù)相關(guān)從業(yè)人員的參考書,還可作為零基礎(chǔ)人員學習 Hadoop 和 Spark 技術(shù)的入門圖書。
1.本書是《大數(shù)據(jù)》編委會針對校企合作的精心力作。
2.本書凝結(jié)了曙光瑞翼多年的教學經(jīng)驗,能夠滿足校企融合教學的需求。
3.本書旨在介紹Hadoop和Spark的基礎(chǔ)知識,為即將學習大數(shù)據(jù)技術(shù)的讀者奠定基礎(chǔ)。
4.本書采用任務(wù)驅(qū)動的編寫方式,讀者可以直接進行實驗效果體驗,并進行自由調(diào)整。
5.本書采用大量的實踐案例,結(jié)合行業(yè)典型應(yīng)用,編寫行業(yè)實踐。
6.本書提供豐富的教學資源,包括電子課件、實驗設(shè)計等。
許桂秋,北京中科特瑞科技有限公司運營總監(jiān),主要研究方向為大數(shù)據(jù)、人工智能技術(shù) ,已出版《大數(shù)據(jù)導論》《Python編程基礎(chǔ)與應(yīng)用》《NoSQL數(shù)據(jù)庫原理與應(yīng)用》《數(shù)據(jù)挖掘與機器學習》等圖書。
第 1章 大數(shù)據(jù)技術(shù)概述 1
1.1 大數(shù)據(jù)技術(shù)簡介 1
1.1.1 大數(shù)據(jù)的發(fā)展 1
1.1.2 大數(shù)據(jù)的流程 4
1.2 大數(shù)據(jù)的主流軟件 5
1.2.1 Hadoop 5
1.2.2 Spark 8
1.2.3 Flink 10
1.2.4 Hadoop與Spark對比 11
1.3 大數(shù)據(jù)的主流編程語言 12
1.3.1 Python語言 12
1.3.2 Java語言 13
1.3.3 Scala語言 13
1.4 本章小結(jié) 13
第 2章 Hadoop部署安裝與使用 14
2.1 Linux基本操作 14
2.1.1 Linux簡介 14
2.1.2 新建與刪除用戶 15
2.1.3 目錄權(quán)限的查看與修改 16
2.1.4 Linux的常用命令 18
2.1.5 任務(wù)實現(xiàn) 21
2.2 搭建Hadoop完全分布式集群 21
2.2.1 關(guān)閉防火墻 21
2.2.2 安裝SSH 22
2.2.3 安裝Xshell及Xftp(可選) 22
2.2.4 安裝Java 24
2.2.5 安裝Hadoop 25
2.2.6 克隆主機 27
2.2.7 安裝完全分布式模式 29
2.3 查看Hadoop集群的基本信息 37
2.3.1 查詢存儲系統(tǒng)信息 37
2.3.2 查詢計算資源信息 38
2.4 本章小結(jié) 39
第3章 HDFS基本操作 40
3.1 Hadoop Shell命令操作HDFS 40
3.1.1 HDFS簡介 40
3.1.2 HDFS Shell命令簡介 45
3.1.3 目錄操作 47
3.1.4 文件操作 47
3.1.5 利用Web界面管理HDFS 50
3.1.6 任務(wù)實現(xiàn) 52
3.2 Java操作HDFS 52
3.2.1 在Eclipse中創(chuàng)建HDFS交互Java項目 53
3.2.2 在Java項目中編寫Java應(yīng)用程序 57
3.2.3 編譯運行應(yīng)用程序與打包文件 59
3.2.4 任務(wù)實現(xiàn) 63
3.2.5 文件常用操作的參考代碼 65
3.3 本章小結(jié) 71
第4章 MapReduce基本原理與編程實現(xiàn) 72
4.1 MapReduce基本原理 72
4.1.1 MapReduce簡介 72
4.1.2 MapReduce編程核心思想 73
4.1.3 MapReduce編程規(guī)范 74
4.1.4 MapReduce的輸入格式 75
4.1.5 MapReduce的輸出格式 77
4.1.6 分區(qū) 77
4.1.7 合并 78
4.2 編程實現(xiàn)——按訪問次數(shù)排序 79
4.2.1 編程思路與處理邏輯 79
4.2.2 核心模塊代碼 81
4.2.3 任務(wù)實現(xiàn) 83
4.3 本章小結(jié) 86
第5章 Hive部署與編程基礎(chǔ) 87
5.1 搭建偽分布式Hive 87
5.1.1 Hive概述 87
5.1.2 Hive安裝和配置 89
5.2 Hive基本操作 91
5.2.1 數(shù)據(jù)庫基本操作 92
5.2.2 數(shù)據(jù)表基本操作 93
5.2.3 數(shù)據(jù)基本操作 95
5.3 編程實現(xiàn)——部門工資統(tǒng)計 96
5.4 本章小結(jié) 98
第6章 Spark部署與編程基礎(chǔ) 99
6.1 Spark的運行原理 99
6.1.1 集群架構(gòu) 99
6.1.2 運行流程 100
6.1.3 核心數(shù)據(jù)集RDD 101
6.1.4 核心原理 101
6.2 Scala安裝與使用 102
6.2.1 Scala 語言概述 102
6.2.2 Scala特性 102
6.2.3 環(huán)境設(shè)置與安裝 103
6.3 Spark安裝與使用 105
6.3.1 環(huán)境搭建前的準備 105
6.3.2 Spark的安裝與配置 106
6.3.3 在PySpark中運行代碼 109
6.3.4 編程實現(xiàn)——Spark獨立應(yīng)用程序 111
6.4 本章小結(jié) 112
第7章 Spark RDD:彈性分布式數(shù)據(jù)集 113
7.1 RDD概述 113
7.2 RDD編程 114
7.2.1 RDD編程基礎(chǔ) 114
7.2.2 鍵值對RDD 136
7.2.3 數(shù)據(jù)讀/寫操作 141
7.3 編程實現(xiàn) 145
7.3.1 任務(wù)1:取出排名前五的訂單支付金額 145
7.3.2 任務(wù)2:文件排序 149
7.3.3 任務(wù)3:二次排序 153
7.4 本章小結(jié) 158
第8章 Spark SQL:結(jié)構(gòu)化數(shù)據(jù)文件處理 159
8.1 Spark SQL概述 159
8.1.1 Spark SQL簡介 159
8.1.2 Spark SQL CLI配置 160
8.1.3 Spark SQL與Shell交互 161
8.2 DataFrame基礎(chǔ)操作 161
8.2.1 創(chuàng)建DataFrame對象 162
8.2.2 DataFrame查看數(shù)據(jù) 168
8.2.3 DataFrame查詢操作 171
8.2.4 DataFrame輸出操作 176
8.3 Spark SQL與MySQL的交互 177
8.4 本章小結(jié) 180
第9章 Spark Streaming:實時計算框架 181
9.1 Spark Streaming概述 181
9.1.1 Spark Streaming應(yīng)用場景 181
9.1.2 流計算概述 181
9.1.3 Spark Streaming特性分析 184
9.2 DStream編程模型基礎(chǔ) 187
9.2.1 DStream概述 187
9.2.2 基本輸入源 188
9.2.3 轉(zhuǎn)換操作 196
9.2.4 輸出操作 201
9.3 編程實現(xiàn)——流數(shù)據(jù)過濾與分析 206
9.4 本章小結(jié) 210
第 10章 Spark GraphFrames:圖計算 211
10.1 圖計算概述 211
10.1.1 圖的基本概念 211
10.1.2 圖計算的應(yīng)用 212
10.1.3 GraphFrames簡介 213
10.2 GraphFrames編程模型基礎(chǔ) 213
10.2.1 創(chuàng)建實例化圖 213
10.2.2 視圖和圖操作 214
10.2.3 保存和加載圖 216
10.3 編程實現(xiàn)——基于GraphFrames的網(wǎng)頁排名 216
10.3.1 準備數(shù)據(jù)集 217
10.3.2 GraphFrames實現(xiàn)算法 218
10.3.3 使用PageRank進行網(wǎng)頁排名 220
10.4 本章小結(jié) 220
第 11章 大數(shù)據(jù)生態(tài)常用工具介紹 221
11.1 Flume的安裝與使用 221
11.1.1 安裝及配置Flume 221
11.1.2 實例分析 223
11.2 Kafka的安裝與使用 225
11.2.1 Kafka相關(guān)概念 225
11.2.2 安裝Kafka 225
11.2.3 實例分析 225
11.3 Sqoop的安裝與使用 226
11.3.1 安裝及配置Sqoop 227
11.3.2 添加MySQL驅(qū)動程序 229
11.3.3 測試Sqoop與MySQL的連接 229
11.4 編程實現(xiàn)——編寫Spark程序使用Kafka數(shù)據(jù)源 230
11.4.1 Kafka準備工作 230
11.4.2 Spark準備工作 231
11.4.3 編寫代碼 233
11.5 本章小結(jié) 237