Spark實戰
內容描述
本書介紹了Spark應用程序及更高級應用的工作流程,主要從使用角度進行了描述,每個具體內容都有對應的代碼。
本書涵蓋了Apache Spark和它豐富的API,構成Spark的組件
(包括Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX),在Spark standalone、
Hadoop YARN以及Mesos cluste上運行Spark應用程序的部署和安裝。
通過對應的實例全面、詳細地介紹了整個Spark實戰開發的流程。
後,還介紹了Spark的高級應用,包括Spark流應用程序及可擴展和快速的機器學習框架H2O。
本書可以作為高等院校計算機、軟件工程、數據科學與大數據技等專業的大數據課程材料,
可用於指導Spark編程實踐,也可供相關技*人員參考使用。
目錄大綱
目錄
譯者序
致謝
前言
關於本書
關於作者
關於封面
部分步
章Apache Spark介紹
1.1什麼是Spark
1.1.1 Spark革命
1.1.2 MapReduce的缺點
1.1.3 Spark帶來了什麼有價值的東西
1.2 Spark組件
1.2.1 Spark核心
1.2.2 Spark SQL
1.2.3 Spark Streaming
1.2.4 Spark MLlib
1.2.5 Spark GraphX
1.3 Spark程序流
1.4 Spark生態系統
1.5建立spark-in-aion虛擬機
1.5.1下載啟動虛擬機
1.5.2停止虛擬機
1.6總結
2章Spark基礎
2.1使用spark-in-aion虛擬機
2.1.1複製Spark in Aion GitHub存儲庫
2.1.2找到ava
2.1.3用虛擬機的Hadoop安裝
2.1.4檢查虛擬機的Spark安裝
2.2用Spark shell(殼)編寫個Spark程序
2.2.1啟動Spark shell
2.2.2 個Spark代碼示例
2.2.3彈性分佈式數據集的概念
2.3基礎RDD行為和轉換
2.3.1使用用p轉換
2.3.2使用distin和flMap轉換
2.3 .3使用sample、take和takeSample作獲取RDD的元素
2.4 Double RDD功能
2.4.1 Double RDD基本統計
2.4.2使用直方圖可視化數據分佈
2.4.3近似求和與平均值
2.5總結
3章編寫Spark應用程序
3.1在Eclipse上生成一個新的Spark項目
3.2開發應用程序
3.2.1準備GitHub檔案數據
3.2.2加載JSON
3.2.3從Eclipse運行應用
3.2.4數據匯總
3.2.5排除非公司員工
3.2.6廣播變量
3.2.7使用整個數據集
3.3提交應用程序
3.3.1建立uberar
3.3.2調整應用程序
3.3.3使用spark-submit
3.4總結
4章深入Spark API
4.1使用鍵值對RDD
4.1.1創建鍵值對RDD
4.1.2鍵值對RDD的基本功能
4.2了解數據分區和減少數據混排
4.2.1使用spark數據分區器
4.2.2了解和避免不必要的數據混排
4.2.3 RDD重新分區
4.2.4在分區中映數據
4.3連接、排序、分組數據
4.3.1連接數據
4.3.2數據排序
4.3.3數據分組
4.4理解RDD依賴
4.4.1 RDD依賴和Spark執行
4.4.2 Spark階段和任務
4.4.3使用檢查點保存Spark譜系
4.5使用累加器和廣播變量與spark執行器進行溝通
4.5.1使用累加器從執行器獲取數據
4.5.2使用廣播變量將數據發送數據到執行器
4.6總結
二部分認識Spark家族
5章Spark SQL查詢
5.1使用DaFrames
5.1.1從RDD創建DaFrames
5.1.2 DaFrame API基礎知識
5.1.3用SQL函數執行數據計算
5.1.4使用缺失值
5.1.5將DaFrames轉換為RDD
5.1.6分組和連接數據
5.1.7執行連接
5.2DaFrames:引入DaSet
5.3使用SQL命令
5.3.1表目錄和Hive metastore
5.3.2執行SQL查詢
5.3.3通過Thrift服務器連接到Spark SQL
5.4保存並加載DaFrame數據
5.4.1內置數據源
5.4.2保存數據
5.4.3加載數據
5.5 Calyst優化器
5.6 Tungsten性能改進
5.7總結
6章使用Spark Streaming提取數據
6.1編寫Spark Streaming應用程序
6.1.1介紹示例程序
6.1.2創建流上下文
6.1.3創建離散流
6.1.4使用離散流
6.1.5把結果保存到文檔
6.1.6啟動和停止流計算
6.1.7隨著保存計算狀態
6.1.8使用窗作進行限制計算
6.1.9檢查其他內置輸入流
6.2使用外部數據源
6.2.1設置kafka
6.2.2使用kafka更改流應用程序
6.3 Spark Streaming任務的性能
6.3.1獲得良好的性能
6.3.2實現容錯
6.4結構化流
6.4.1創建流式DaFrame
6.4.2輸出流數據
6.4.3檢查流執行
6.4.4結構化流的未來方向
6.5總結
7章使用MLlib變聰明
7.1機器學習簡介
7.1.1機器學習的定義
7.1.2機器學習算法分類
7.1.3使用Spark進行機器學習
7.2 Spark中的線性代數
7.2.1本地向量與矩陣實現
7.2.2分佈式矩陣
7.3線性回歸
7.3.1有關線性回歸
7.3.2簡單的線性回歸
7.3.3將模型擴展到多元線性回歸
7.4分析和準備數據
7.4.1分析數據分佈
7.4.2分析列餘弦相似性
7.4.3協方差矩陣的計算
7.4.4轉化為標記點
7.4.5拆分數據
7.4.6特徵縮放和平均歸一化
7.5擬合和使用線性回歸模型
7.5.1預測目標值
7.5.2評估模型性能
7.5.3解釋模型參數
7.5.4加載和保存模型
7.6調整算法
7.6.1找到正確的步長和迭代次數
7.6.2添加高階多項式
7.6 .3偏差-方差權衡和模型複雜度
7.6.4繪製殘差圖
7.6.5利用正則化避免過度擬合
7.6.6 k折交驗證
7.7優化線性回歸
7.7.1小批量梯度下降
7.7.2 LBFGS優化
7.8總結
八、ML:分類和聚類
8.1 Spark ML圖書館
8.1.1估計器,變壓器和評估器
8.1.2 ML參數
8.1.3 ML管道
8.2邏輯回歸
8.2.1二元邏輯回歸模型
8.2.2準備數據在Spark中使用邏輯回歸
8.2.3訓練模型
8.2.4評估分類模型
8.2.5執行k折交驗證
8.2.6多類邏輯回歸
8.3決策樹和森林
8.3.1決策樹
8.3.2 森林
8.4使用k均值聚類
8.4.1 k均值聚類
8.5總結
9章使用GraphX連接點
9.1 Spark圖處理
9.1.1使用GraphX API構造圖
9.1.2轉換圖
9.2圖算法
9.2.1數據集的介紹
9.2.2 短路徑算法
9.2.3頁面排名
9.2.4連通分量
9.2.5強連通分量
9.3實現A搜索算法
9.3.1了解A搜索算法
9.3.2實現A搜索算法
9.3.3測試實現
9.4總結
3部分Spark ops
0章運行Spark
10.1 Spark的運行時架構概述
10.1.1 Spark運行組件
10.1.2 Spark集類型
10.2作業與資源調度
10.2. 1集資源調度
10.2.2 Spark作業調度
10.2.3數據局部性考慮
10.2.4 Spark內存調度
10.3配置Spark
10.3.1 Spark配置文件
10.3.2命令行參數
10.3.3系統環境變量
10.3.4譯編程方式設置配置
10.3.5 ster參數
10.3.6查看所有配置的參數
10.4 Spark Web UI (網絡用戶界面)
10.4.1 Jobs(作業)頁面
10.4.2 Stages(階段)頁面
10.4.3 Storage(存儲)頁面
10.4.4 Environment(環境)頁面
10.4.5 Executo(執行器)頁面
10.5在本地機器運行Spark
10.5.1本地模式
10.5.2本地集模式
10.6總結
1章在Spark獨立集上運行
11.1 Spark Standalone集組件
11.1.1啟動Stanalone集
11.1.2用shell腳本啟動集
11.1.3手動啟動集
11.1.4查看Spark進程
11.1.5 Standalone ster高可用性和恢復
11.3 Standalone集網絡用戶界面
11.4在3Standalone集中運行應用程序
11.4.1驅動器的位置
11.4.2指定執行器的數量
11.4.3指定額外的類路徑和文件
11.4.4終止應用程序
11.4.5應用程序自動重啟
11.5 Spark歷史記錄服務器和事件日誌記錄
11.6在Amon EC2上運行
11.6.1先決條件
11.6.2創建一個E2C獨立集
11.6.3使用E2C集
11.6.4銷毀集
11.7總結2章在YARN and Mesos運行
12.1在YARN上運行Spark
12.1.1 YARN架構
12.1.2安裝配置啟動YARN
12.1.3 YARN中的資源調度
12.1.4向YARN提交Spark應用程序
12.1.5在YARN上配置Spark
12.1.6為Spark工作配置資源
12.1.7 YARN UI
12.1.8在YARN上尋找日誌
12.1.9安全注意事項
12.1.10動態資源分配
12.2在Mesos上運行Spark
12.2.1 Mesos架構
12.2.2安裝配置Mesos
12.2.3 Mesos Web UI
12.2.4 Mesos資源調度
12.2.5向Mesos提交Spark應用程序
12.2.6使用Docker運行Spark
12.3總結
4部分協同使用
3章實例學習:實時儀錶盤
13.1了解用例
13.1.1概況
13.1.2了解應用程序組件
13.2運行應用程序
13.2.1在spark-in-aion VM中運行應用程序
13.2.2手動啟動應用程序
13.3理解源代碼
13.3.1 KafkaLogsSilor項目
13.3.2 Streaming Log Analyzer項目
13.3.3 Web統計信息顯示板項目
13.3.4建設項目
13.4總結
4章H20深入學習Spark
14.1什麼是深入學習
14.2在Spark中使用H2O和
14.2.1什麼是H2O
14.4.2在Spark中啟動Sparkling Wer
14.4.3啟動H2O集
14.4.4訪問Flow UI
14.3使用H2O的深度學行回歸
14.4.3將數據加載到H2O框架中
14.4.4使用Flow UI構建和評估深度學習模型
14.4.5使用Sparkling Wer API構建和評估深度學習模型
14.4使用H2O的深度學行分類
14.4.1加載和拆分數據
14.4.2通過Flow UI建造模型
14.4.3通過Sparkling Wer API建造模型
14.4.4停止H2O集
14.5總結
附錄A安裝Apache Spark
附錄B了解MapReduce
附錄C線性代數基礎