大數據與人工智能技術叢書HADOOP+SPARK大數據技術(微課版) 版權信息
- ISBN:9787302514275
- 條形碼:9787302514275 ; 978-7-302-51427-5
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
大數據與人工智能技術叢書HADOOP+SPARK大數據技術(微課版) 本書特色
包含250分鐘微課視頻、豐富的實例代碼以及真實、完整的項目案例。
內容囊括Linux和MySQL使用基礎、Hadoop和Spark集群搭建、Hadoop兩大核心的原理與使用、Hadoop生態圈工具(Hive、HBase、Spoop、Flume等)、Scala基礎、RDD、Spark SQL、Spark streaming和Spark-ML等知識點,并有配套實例代碼。
詳細講解真實的大數據項目“電力能源大數據分析”。
250分鐘微課視頻,豐富的實操代碼,真實、完整的項目案例
大數據與人工智能技術叢書HADOOP+SPARK大數據技術(微課版) 內容簡介
全書內容分為大數據系統基礎、Hadoop技術、Spark技術和項目實戰4部分。其中,Linux是學習大數據技術的基礎,先從Linux入手,打下堅實的基礎,之后才能更好地學習Hadoop和Spark。4部分內容分別介紹如下。
大數據系統基礎篇通過大數據概述、Linux系統安裝、Linux系統基礎命令、Shell編程和MySQL數據操作,為以后編程奠定堅實的基礎。
Hadoop技術篇以Hadoop生態圈為中心,詳細介紹Hadoop高可用集群搭建、HDFS技術、MapReduce技術、Hive技術,為讀者學習大數據開發技術提供便利,并以實用的方式簡單介紹HBase、Sqoop、Flume工具的使用,使讀者在精通一門技術的前提下,能擴展了解相關知識,真正成為一專多能的專業型人才。
Spark技術篇從Spark概述、Scala語言、環境搭建、RDD核心技術、Spark SQL和機器學習等多方面講解Spark大數據的開發,從基礎的Scala語言開始學習,并以Hadoop環境為基礎搭建Spark大數據集群,從很基礎、很常用、很容易理解的思路出發,幫助讀者逐步掌握Spark大數據技術。
項目實戰篇從真實項目“電力能源大數據分析”中抽取一部分業務作為實戰解讀,通過簡潔的流程講解,使讀者了解大數據項目開發的整個過程。
大數據與人工智能技術叢書HADOOP+SPARK大數據技術(微課版) 目錄
第1篇 大數據系統基礎
第1章 大數據概述 3
1.1 數據的產生與發展 3
1.2 大數據的基礎知識 4
1.3 大數據架構 5
第2章 系統的安裝與使用 7
2.1 系統安裝 7
2.1.1 安裝CentOS 6.x 7
2.1.2 安裝步驟 7
2.2 基本命令 18
2.2.1 cd命令 18
2.2.2 打包和解壓指令 19
2.2.3 其他常用命令 21
2.3 權限與目錄 26
2.3.1 權限 26
2.3.2 目錄 27
2.4 文件操作 28
2.4.1 文件與目錄管理 28
2.4.2 用戶和用戶組管理 39
2.5 習題與思考 46
第3章 任務命令 47
3.1 腳本配置 47
3.1.1 Shell腳本 47
3.1.2 Shell變量 47
3.1.3 Shell傳遞參數 48
3.1.4 Shell數組 50
3.1.5 Shell運算符 51
3.1.6 Shell echo命令 55
3.1.7 Shell printf命令 57
3.1.8 Shell test命令 58
3.1.9 Shell流程控制 60
3.2 網絡配置 67
3.3 習題與思考 70
第4章 數據庫操作 71
4.1 數據庫簡介 71
4.1.1 MySQL數據庫簡介 71
4.1.2 安裝MySQL 72
4.2 數據庫基本操作 72
4.2.1 MySQL的DDL操作 72
4.2.2 MySQL的DML操作 80
4.3 數據庫用戶操作 83
4.3.1 創建用戶 83
4.3.2 給用戶授權 83
4.3.3 撤銷授權 84
4.3.4 查看用戶權限 85
4.3.5 刪除用戶 85
4.3.6 修改用戶密碼 86
4.4 數據庫查詢操作 86
4.5 習題與思考 90
第2篇 Hadoop技術
第5章 Hadoop開發環境 95
5.1 Hadoop生態圈工具 95
5.2 環境搭建 97
5.2.1 步驟1——虛擬機安裝 97
5.2.2 步驟2——安裝JDK和Hadoop 97
5.2.3 步驟3——復制虛擬機 113
5.2.4 步驟4——設置免密 117
5.2.5 步驟5——安裝Zookeeper 119
5.2.6 步驟6——啟動Hadoop集群 122
5.2.7 正常啟動順序 125
5.3 常見問題匯總 127
5.4 習題與思考 128
第6章 HDFS技術 129
6.1 HDFS架構 129
6.2 HDFS命令 130
6.2.1 version命令 131
6.2.2 dfsadmin命令 131
6.2.3 jar命令 132
6.2.4 fs命令 132
6.3 API的使用 140
6.4 習題與思考 142
第7章 MapReduce技術 143
7.1 MapReduce工作原理 143
7.1.1 MapReduce作業運行流程 143
7.1.2 早期MapReduce架構存在的問題 144
7.2 YARN運行概述 144
7.2.1 YARN模塊介紹 144
7.2.2 YARN工作流程 145
7.3 MapReduce編程模型 146
7.4 MapReduce數據流 148
7.4.1 輸入文件 150
7.4.2 輸入格式 150
7.4.3 數據片段 151
7.4.4 記錄讀取器 151
7.4.5 Mapper 151
7.4.6 Shuffle 152
7.4.7 排序 153
7.4.8 歸約 153
7.4.9 輸出格式 153
7.5 MapReduce API編程 154
7.5.1 詞頻統計 154
7.5.2 指定字段 156
7.5.3 求平均數 158
7.5.4 關聯 160
7.6 習題與思考 163
第8章 Hive數據倉庫 165
8.1 Hive模型 165
8.1.1 Hive架構與基本組成 165
8.1.2 Hive的數據模型 166
8.2 Hive的安裝 167
8.2.1 Hive的基本安裝 167
8.2.2 MySQL的安裝 168
8.2.3 Hive配置 169
8.3 HQL詳解 170
8.3.1 Hive數據管理方式 170
8.3.2 HQL操作 174
8.4 習題與思考 182
第9章 HBase分布式數據庫 183
9.1 HBase工作原理 183
9.1.1 HBase表結構 183
9.1.2 體系結構 184
9.1.3 物理模型 186
9.1.4 HBase讀寫流程 187
9.2 HBase完全分布式 189
9.2.1 安裝前的準備 189
9.2.2 配置文件 189
9.2.3 集群啟動 191
9.3 HBase Shell 192
9.3.1 DDL操作 192
9.3.2 DML操作 194
9.4 習題與思考 197
第10章 Sqoop工具 198
10.1 Sqoop安裝 199
10.2 Sqoop的使用 200
10.2.1 MySQL的導入導出 200
10.2.2 Oracle的導入導出 201
10.3 習題與思考 202
第11章 Flume日志收集 203
11.1 體系架構 204
11.1.1 Flume內部結構 204
11.1.2 Flume事件 204
11.2 Flume的特點 205
11.3 Flume集群搭建 206
11.4 Flume實例 207
11.4.1 實例1:實時測試客戶端傳輸的數據 207
11.4.2 實例2:監控本地文件夾并寫入到HDFS中 208
11.5 習題與思考 210
第3篇 Spark技術
第12章 Spark概述 213
12.1 Spark框架原理 213
12.2 Spark大數據處理 214
12.3 RDD數據集 215
12.4 Spark子系統 215
第13章 Scala語言 216
13.1 Scala語法基礎 216
13.1.1 變量、常量與賦值 216
13.1.2 運算符與表達式 217
13.1.3 條件分支控制 217
13.1.4 循環流程控制 218
13.1.5 Scala數據類型 218
13.2 Scala運算與函數 219
13.3 Scala閉包 220
13.4 Scala數組與字符串 220
13.4.1 Scala數組 220
13.4.2 Scala字符串 221
13.5 Scala迭代器 221
13.6 Scala類和對象 222
13.7 習題與思考 223
第14章 Spark高可用環境 224
14.1 環境搭建 224
14.1.1 準備工作 224
14.1.2 下載并安裝Spark 224
14.2 常見問題匯總 226
第15章 RDD技術 228
15.1 RDD的實現 228
15.1.1 數據源 228
15.1.2 調度器 228
15.2 RDD編程接口 229
15.3 RDD操作 229
15.3.1 Spark基于命令行的操作 229
15.3.2 Spark基于應用作業的操作 231
15.3.3 Spark操作的基礎命令與開發工具介紹 231
15.3.4 Spark基于YARN的調度模式 231
15.3.5 Spark基于Scala語言的本地應用開發 234
15.3.6 Spark基于Scala語言的集群應用開發 235
15.3.7 Spark基于Java語言的應用開發 236
15.3.8 Spark基于Java語言的本地應用開發 237
15.3.9 Spark基于Java語言的集群應用開發 238
15.4 習題與思考 241
第16章 Spark SQL 242
16.1 Spark SQL架構原理 242
16.1.1 Hive的兩種功能 242
16.1.2 Spark SQL的重要功能 242
16.1.3 Spark SQL的DataFrame特征 243
16.2 Spark SQL操作Hive 243
16.2.1 添加配置文件,便于Spark SQL訪問Hive倉庫 243
16.2.2 安裝JDBC驅動 243
16.2.3 啟動MySQL服務及其Hive的元數據服務 243
16.2.4 啟動HDFS集群和Spark集群 244
16.2.5 啟動Spark-Shell并測試 244
16.3 Spark SQL操作HDFS 244
16.3.1 操作代碼 244
16.3.2 工程文件 246
16.3.3 創建測試數據 246
16.3.4 運行Job并提交到集群 247
16.3.5 查看運行結果 247
16.4 Spark SQL操作關系數據庫 248
16.4.1 添加訪問MySQL的驅動包 248
16.4.2 添加必要的開發環境 248
16.4.3 使用Spark SQL操作關系數據庫 248
16.4.4 初始化MySQL數據庫服務 250
16.4.5 準備Spark SQL源數據 251
16.4.6 運行Spark代碼 252
16.4.7 創建dist文件夾 252
16.4.8 安裝數據庫驅動 252
16.4.9 基于集群操作 253
16.4.10 打包工程代碼到dist目錄下 256
16.4.11 啟動集群并提交Job應用 256
16.4.12 檢查關系數據庫中是否已有數據 258
16.5 習題與思考 258
第17章 Spark Streaming 260
17.1 架構與原理 260
17.1.1 Spark Streaming中的離散流特征 260
17.1.2 Spark Streaming的應用場景 260
17.2 KafKa中間件 261
17.2.1 KafKa的特點 261
17.2.2 ZeroCopy技術 261
17.2.3 KafKa的通信原理 261
17.2.4 KafKa的內部存儲結構 262
17.2.5 KafKa的下載 262
17.2.6 KafKa集群搭建 262
17.2.7 啟動并使用KafKa集群 263
17.2.8 停止KafKa集群 264
17.2.9 KafKa集成Flume 264
17.3 Socket事件流操作 265
17.3.1 netcat網絡Socket控制臺工具 265
17.3.2 基于本地的Spark Streaming流式數據分析示例 266
17.3.3 基于集群的Spark Streaming流式數據分析示例 269
17.3.4 基于集群模式下的集群文件I/O流分析示例 272
17.4 KafKa事件流操作 275
17.4.1 基于Receiver模式的KafKa集成 275
17.4.2 基于Direct模式的KafKa集成 278
17.5 I/O文件事件流操作 280
17.5.1 基于路徑掃描的Spark Streaming 281
17.5.2 打包至工程的dist目錄 284
17.5.3 啟動集群 284
第18章 Spark機器學習 289
18.1 機器學習原理 289
18.1.1 機器學習的概念 289
18.1.2 機器學習的分類 289
18.1.3 Spark機器學習的版本演變 290
18.1.4 DataFrame數據結構 290
18.1.5 DataSet數據結構 290
18.1.6 執行引擎的性能與效率 290
18.1.7 Spark 2.x的新特性 290
18.2 線性回歸 291
18.2.1 線性回歸分析過程 291
18.2.2 矩陣分析過程 291
18.2.3 基于本地模式的線性回歸分析 291
18.2.4 基于集群模式的線性回歸分析 294
18.3 聚類分析 300
18.3.1 K-Means聚類算法原理 300
18.3.2 聚類分析過程 300
18.3.3 基于本地模式的聚類算法分析 301
18.3.4 基于集群模式的聚類算法分析 305
18.4 協同過濾 312
18.4.1 個性化推薦算法 312
18.4.2 相關性推薦算法 312
18.4.3 基于本地的協同過濾算法分析 312
18.4.4 基于集群的協同過濾算法分析 317
第4篇 項目實戰
第19章 基于電力能源的大數據實戰 325
19.1 需求分析 325
19.2 項目設計 325
19.2.1 數據采集 325
19.2.2 數據處理 326
19.2.3 數據呈現 326
19.3 數據收集與處理 329
19.3.1 數據收集 329
19.3.2 數據處理 329
19.4 大數據呈現 341
19.4.1 數據傳輸 341
19.4.2 數據呈現 342
19.5 項目總結 343
展開全部
大數據與人工智能技術叢書HADOOP+SPARK大數據技術(微課版) 節選
任 務 命 令 3.1 腳 本 配 置 3.1.1 Shell腳本 Shell是用C語言編寫的程序,它是用戶使用Linux內核的橋梁。Shell既是一種命令語言,又是一種程序設計語言。Shell應用程序提供了一個界面,用戶通過這個界面可以訪問操作內核的服務。關于Shell的講解視頻可掃描二維碼觀看。 Shell腳本(Shell Script)是一種為Shell編寫的腳本程序。業界所說的Shell通常是指Shell腳本,但Shell和Shell Script是兩個不同的概念。 Shell編程跟Java、PHP編程一樣,只需要一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器。 Linux的Shell種類眾多,常見的有: * Bourne Shell(/usr/bin/sh或/bin/sh) * Bourne Again Shell(/bin/bash) * C Shell(/usr/bin/csh) * K Shell(/usr/bin/ksh) * Shell for Root(/sbin/sh) … 3.1.2 Shell變量 關于Shell變量的講解視頻可掃描二維碼觀看。 Linux的Shell編程是一種非常成熟的編程語言,它支持各種類型的變量。有三種主要的變量類型:環境變量、局部變量和Shell變量。 環境變量:所有的程序,包括Shell啟動程序,都能訪問環境變量。有些程序需要環境變量來保證其正常運行,必要的時候Shell腳本也可以自定義環境變量。 局部變量:局部變量是在腳本或命令中定義,僅在當前Shell實例中有效,其他Shell程序不能訪問的局部變量。 Shell變量:Shell變量是由Shell程序設置的特殊變量。Shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了Shell的正常運行。 Shell編程和其他編程語言的主要不同之處是:在Shell編程中,變量是非類型性質的,不必指定變量是數字類型還是字符串類型。 1.局部變量 Shell編程中,使用局部變量無須事先聲明,同時變量名的命名須遵循如下規則: * 首個字符必須為字母(a~z,A~Z)。 * 中間不能有空格,可以使用下畫線(_)。 * 不能使用標點符號。 * 不能使用bash中的關鍵字(可以用help命令查看保留關鍵字)。 2.局部變量賦值 變量賦值的格式: 變量名=值 訪問變量值:取用一個變量的值,只需在變量名前面加一個$。 示例如下: #!/bin/bash # 對變量賦值: a="hello world" #等號兩邊均不能有空格存在 # 打印變量a的值: echo -e "A is: $a\n" 備注:bash中變量賦值,等號兩邊均不能有空格存在。 可以使用自己喜歡的編輯器,輸入上述內容,并保存為文件test_hello.bsh,然后執行 chmod +x test_hello.bsh使其具有執行權限,*后輸入“./test_hello”或“bash test_hello.bsh”執行該腳本。 程序運行結果: A is: hello world 有時候變量名可能會和其他文字混淆,例如: num=1 echo "this is the $numst" 上述腳本并不會輸出"this is the 1st"而是"this is the ",這是由于Shell會去搜索變量 numst的值,而實際上這個變量并未賦值,可以用大括號來告訴 Shell 把 num 變量跟其他部分 分開。num=1 echo "this is the ${num}st" 程序運行結果: this is the 1st 3.1.3 Shell傳遞參數 關于Shell傳遞參數的講解視頻可掃描二維碼觀看。 1.普通字符 可以在執行Shell腳本時,向腳本傳遞參數,腳本內獲取參數的格式為$n。n代表一個數據,n=1為執行腳本的**個參數,n=2為執行腳本的第二個參數,以此類推。 示例如下:以下代碼向腳本傳遞三個參數,并分別輸出。 #!/bin/bash echo “Shell傳遞參數實例!”; echo “**個參數為$1”; echo “第二個參數為$2”; echo “第三個參數為$3”; 為腳本設置可執行權限后,并執行腳本,輸出結果如下所示: [root@localhost ~]# chmod u+x test.sh [root@localhost ~]# ./test.sh 1 8 89 打印結果: Shell傳遞參數實例! **個參數為:1 第二個參數為:8 第三個參數為:89 ……