Spark與Hadoop大數據分析 (Big Data Analytics) Spark与Hadoop大数据分析

文卡特·安卡姆(Venkat Ankam)

買這商品的人也買了...

商品描述

本書介紹了ApacheSpark和Hadoop的基礎知識,並深入探討了所有Spark組件:SparkCore、SparkSQL、DataFrame、DataSet、普通流、結構化流、MLlib、Graphx,以及Hadoop的核心組件(HDFS、MapReduce和Yarn)等,此外,也講解了在Spark+Hadoop集群中實現的示例。

作者簡介

作者:(美國)文卡特·安卡姆(Venkat Ankam)譯者:吳今朝

文卡特·安卡姆(Venkat Ankam),有超過18年的IT經驗和5年以上的大數據技術經驗,與客戶一起設計和開發過可擴展的大數據應用程序。他在利用Hadoop和Spark進行大數據分析方面擁有豐富的經驗,與全球很多客戶進行了合作。他是Cloudera認證的Hadoop開發者和管理員,也是Databricks認證的Spark開發者。他還是一些全球Hadoop和Spark會議小組的創始人和主持人,熱愛與社區分享知識。

目錄大綱

譯者序

前言

第1章從宏觀視角看大數據分析1 

1.1大數據分析以及Hadoop和Spark在其中承擔的角色3 
1.1.1典型大數據分析項目的生命週期4 
1.1.2Hadoop和Spark承擔的角色6 
1.2大數據科學以及Hadoop和Spark在其中承擔的角色6 
1.2.1從數據分析到數據科學的根本性轉變6 
1.2.2典型數據科學項目的生命週期8 
1.2.3Hadoop和Spark承擔的角色9 
1.3工具和技術9 
1.4實際環境中的用例11 
1.5小結12 

第2章Apache Hadoop和Apache Spark入門13 

2.1Apache Hadoop概述13 
2.1.1Hadoop分佈式文件系統14 
2.1.2HDFS的特性15 
2.1.3MapReduce16 
2.1.4MapReduce的特性17 
2.1.5MapReducev1與MapReducev2對比17 
2.1.6YARN18 
2.1.7Hadoop上的存儲選擇20 
2.2Apache Spark概述24 
2.2.1Spark的發展歷史24 
2.2.2Apache Spark是什麼25 
2.2.3Apache Spark不是什麼26 
2.2.4MapReduce的問題27 
2.2.5Spark的架構28 
2.3為何把Hadoop和Spark結合使用31 
2.3.1Hadoop的特性31 
2.3.2Spark的特性31 
2.4安裝Hadoop和Spark集群33 
2.5小結36 

第3章深入剖析Apache Spark37 

3.1啟動Spark守護進程37 
3.1.1使用CDH38 
3.1.2使用HDP、MapR和Spark預製軟件包38 
3.2學習Spark的核心概念39 
3.2.1使用Spark的方法39 
3.2 .2彈性分佈式數據集41 
3.2.3Spark環境43 
3.2.4變換和動作44 
3.2.5RDD中的並行度46 
3.2.6延遲評估49 
3.2.7譜系圖50 
3.2.8序列化51 
3.2.9在Spark中利用Hadoop文件格式52 
3.2.10數據的本地性53 
3.2.11共享變量54 
3.2.12鍵值對RDD55 
3.3Spark程序的生命週期55 
3.3.1流水線57 
3.3.2Spark執行的摘要58 
3.4Spark應用程序59 
3.4.1SparkShell和Spark應用程序59 
3.4.2創建Spark環境59 
3.4.3SparkConf59 
3.4.4SparkSubmit60 
3.4.5Spark配置項的優先順序61 
3.4.6重要的應用程序配置61 
3.5持久化與緩存62 
3.5.1存儲級別62 
3.5.2應該選擇哪個存儲級別63 
3.6Spark資源管理器:Standalone、YARN和Mesos63 
3.6.1本地和集群模式63 
3.6.2集群資源管理器64 
3.7小結67 

第4章利用Spark SQL、Data —Frame和Dataset進行大數 分析69 

4.1Spark SQL的發展史70 
4.2Spark SQL的架構71 
4.3介紹Spark SQL的四個組件72 
4.4DataFrame和Dataset的演變74 
4.4.1RDD有什麼問題74 
4.4.2RDD變換與Dataset和DataFrame變換75 
4.5為什麼要使用Dataset和DataFrame75 
4.5.1優化76 
4.5.2速度76 
4.5.3自動模式發現77 
4.5.4多數據源,多種編程語言77 
4.5.5RDD和其他API之間的互操作性77 
4.5.6僅選擇和讀取必要的數據78 
4.6何時使用RDD、Dataset和DataFrame78 
4.7利用DataFrame進行分析78 
4.7.1創建SparkSession79 
4.7.2創建DataFrame79 
4.7.3把DataFrame轉換為RDD82 
4.7.4常用的Dataset/DataFrame操作83 
4.7.5緩存數據84 
4.7.6性能優化84 
4.8利用Dataset API進行分析85 
4.8.1創建Dataset85 
4.8.2把DataFrame轉換為Dataset86 
4.8.3利用數據字典訪問元數據87 
4.9Data Sources API87 
4.9. 1讀和寫函數88 
4.9.2內置數據源88 
4.9.3外部數據源93 
4.10把Spark SQL作為分佈式SQL引擎97 
4.10.1把Spark SQL的Thrift服務器用於JDBC/ODBC訪問97 
4.10.2 使用beeline客戶端查詢數據98 
4.10.3使用spark—sql CLI從Hive查詢數據99 
4.10.4與BI工具集成100 
4.11Hive on Spark100 
4.12小結100 

第5章利用Spark Streaming和Structured Streaming進行實時分析102 

5.1實時處理概述103 
5.1.1Spark Streaming的優缺點104 
5.1.2Spark Streaming的發展史104 
5.2Spark Streaming的架構104 
5.2.1Spark Streaming應用程序流106 
5.2.2無狀態和有狀態的流處理107 
5.3Spark Streaming的變換和動作109 
5.3.1union109 
5.3.2join109 
5.3.3transform操作109 
5.3.4updateStateByKey109 
5.3.5mapWithState110 
5.3.6窗口操作110 
5.3.7輸出操作111 
5.4輸入數據源和輸出存儲111 
5.4.1基本數據源112 
5.4.2高級數據源112 
5.4.3自定義數據源112 
5.4.4接收器的可靠性112 
5.4.5輸出存儲113 
5.5使用Kafka和HBase的Spark Streaming113 
5.5.1基於接收器的方法114 
5.5.2直接方法(無接收器)116 
5.5.3與HBase集成117 
5.6Spark Streaming的高級概念118 
5.6.1使用DataFrame118 
5.6.2MLlib操作119 
5.6.3緩 /持久化119 
5.6.4Spark Streaming中的容錯機制119 
5.6.5Spark Streaming應用程序的性能調優121 
5.7監控應用程序122 
5.8結構化流概述123 
5.8.1結構化流應用程序的工作流123 
5.8.2流式Dataset和流式DataFrame 
5.8.3流式Dataset和流式DataFrame的操作
5.9小結129 

第6章利用Spark和Hadoop的筆記本與數據流

6.1基於網絡的筆記本概述
6.2Jupyter概述
6.2.1安裝Jupyter 
6.2. 2用Jupyter進行分析134 
6.3Apache Zeppelin概述
6.3.1Jupyter和Zeppelin對比
6.3.2安裝ApacheZeppelin 
6.3.3使用Zeppelin進行分析
6.4Livy REST作業服務器和Hue筆記本140 
6.4.1安裝設置Livy服務器和Hue 
6.4.2使用Livy服務器
6.4.3Livy和Hue筆記本搭配使用
6.4.4Livy和Zeppelin搭配使用
6.5用於數據流的Apache NiFi概述
6.5.1安裝Apache NiFi 
6.5.2把NiFi用於數據流和分析
6.6小結

第7章利用Spark和Hadoop進行機器學習

7.1機器學習概述153 
7.2在Spark和Hadoop上進行機器學習
7.3機器學習算法155 
7.3.1有監督學習
7. 3.2無監督學習156 
7.3.3推薦系統157 
7.3.4特徵提取和變換157 
7.3.5優化158 
7.3.6Spark MLlib的數據類型
7.4機器學習算法示例160 
7.5構建機器學習流水線163 
7.5.1流水線工作流的一個示例163 
7.5.2構建一個ML流水線164 
7.5.3保存和加載模型
7.6利用H2O和Spark進行機器學習167 
7.6.1為什麼使用Sparkling Water 
7.6.2YARN上的一個應用程序流167 
7.6.3Sparkling Water入門168 
7.7Hivemall概述
7.8Hivemall for Spark概述
7.9小結170 

第8章利用Spark和Mahout構建推薦系統

8.1構建推薦系統171 
8.1.1基於內容的過濾172 
8.1.2協同過濾172 
8.2推薦系統的局限性173 
8.3用MLlib實現推薦系統173 
8.3.1準備環境174 
8.3.2創建RDD175 
8.3.3利用DataFrame探索數據176 
8.3.4創建訓練和測試數據集178 
8.3.5創建一個模型178 
8.3.6做出預測179 
8.3.7利用測試數據對模型進行評估179 
8.3.8檢查模型的準確度
8.3.9顯式和隱式反饋181 
8.4Mahout和Spark的集成181 
8.4.1安裝Mahout 
8.4.2探 Mahoutshell 
8.4.3利用Mahout和搜索工具構建一個通用的推薦系統
8.5小結189 

第9章利用GraphX進行圖分析

9.1圖處理概述190 
9.1.1圖是什麼191 
9.1.2圖數據庫和圖處理系統191 
9.1. 3GraphX概述
9.1.4圖算法192 
9.2GraphX入門193 
9.2.1GraphX的基本操作
9.2.2圖的變換198 
9.2.3GraphX算法
9.3利用GraphX分析航班數據205 
9.4GraphFrames概述
9.4.1模式發現
9.4.2加載和保存GraphFrames 
9.5小結212 

第10章利用SparkR進行交互式分析

10.1R語言和SparkR概述
10.1.1R語言是什麼
10.1.2SparkR概述
10.1.3SparkR架構
10.2SparkR入門
10.2.1安裝和配置R 
10.2.2使用SparkRshell 
10.2. 3使用SparkR腳本
10.3在SparkR裡使用DataFrame 
10.4在RStudio裡使用SparkR 
10.5利用SparkR進行機器學習
10.5.1利用樸素貝葉斯模型230 
10.5.2利用K均值模型
10.6在Zeppelin裡使用SparkR 
10.7小結