數據分析師和數據科學(xué)家的便捷參考指南
系統講解利用Hadoop和Spark及其生態(tài)系統里的一系列工具進(jìn)行大數據分析的方法及實(shí)踐
大數據技術(shù)的發(fā)展方向正在從MapReduce轉移到Spark。因此,本書(shū)比較系統地講解了利用Hadoop和Spark及其生態(tài)系統里的一系列工具進(jìn)行大數據分析的方法,深入分析了Spark對比MapReduce的優(yōu)勢,總結了以?xún)却嫠俣冗M(jìn)行計算的優(yōu)勢。書(shū)中不僅講解了用于構建大數據分析應用程序的DataFrameAPI、DataSourcesAPI以及新的DatasetAPI,還介紹了如何利用SparkStreaming、ApacheKafka和HBase搭配進(jìn)行實(shí)時(shí)數據分析的技術(shù),以構建流式應用程序。新的結構化流概念是用IOT(物聯(lián)網(wǎng))用例來(lái)講解的。書(shū)中講解的機器學(xué)習技術(shù)利用了MLlib、ML流水線(xiàn)和SparkR,而圖分析技術(shù)則涵蓋了Spark的GraphX和GraphFrames組件。
本書(shū)還將介紹如何使用基于網(wǎng)絡(luò )的筆記本(如Jupyter、ApacheZeppelin)以及數據流工具ApacheNiFi對數據進(jìn)行分析和可視化。
通過(guò)閱讀本書(shū),你將:
學(xué)習并實(shí)踐在Hadoop集群的Spark上借助Spark和Hadoop配套的各種工具進(jìn)行大數據分析的工具和技術(shù)
了解Hadoop和Spark生態(tài)系統的所有組件
了解Spark的所有組件:SparkCore、SparkSQL、DataFrame、DataSet、傳統流和結構化流、MLlib、ML流水線(xiàn)和GraphX
利用SparkCore、SparkSQL、傳統流及結構化流進(jìn)行批量和實(shí)時(shí)數據分析
利用MLlib、ML流水線(xiàn)、H2O、GraphX、SparkR和Hivemall掌握數據科學(xué)和機器學(xué)習技術(shù)
本書(shū)比較系統地講解了利用Hadoop和Spark及其生態(tài)系統里的一系列工具進(jìn)行大數據分析的方法,既涵蓋ApacheSpark和Hadoop的基礎知識,又深入探討所有Spark組件——SparkCore、SparkSQL、DataFrame、DataSet、普通流、結構化流、MLlib、Graphx,以及Hadoop的核心組件(HDFS、MapReduce和Yarn)等,并配套詳細的實(shí)現示例,是快速掌握大數據分析基礎架構及其實(shí)施方法的詳實(shí)參考。
全書(shū)共10章,第1章從宏觀(guān)的角度講解大數據分析的概念,并介紹在Hadoop和Spark平臺上使用的工具和技術(shù),以及一些*常見(jiàn)的用例;第2章介紹Hadoop和Spark平臺的基礎知識;第3章深入探討并學(xué)習Spark;第4章主要介紹DataSourcesAPI、DataFrameAPI和新的DatasetAPI;第5章講解如何用SparkStreaming進(jìn)行實(shí)時(shí)分析;第6章介紹Spark和Hadoop配套的筆記本和數據流;第7章講解Spark和Hadoop上的機器學(xué)習技術(shù);第8章介紹如何構建推薦系統;第9章介紹如何使用GraphX進(jìn)行圖分析;第10章介紹如何使用SparkR。
文卡特·安卡姆(VenkatAnkam)
有超過(guò)18年的IT經(jīng)驗和5年以上的大數據技術(shù)經(jīng)驗,與客戶(hù)一起設計和開(kāi)發(fā)過(guò)可擴展的大數據應用程序。他在利用Hadoop和Spark進(jìn)行大數據分析方面擁有豐富的經(jīng)驗,與全球很多客戶(hù)進(jìn)行了合作。
他是Cloudera認證的Hadoop開(kāi)發(fā)者和管理員,也是Databricks認證的Spark開(kāi)發(fā)者。他還是一些全球Hadoop和Spark會(huì )議小組的創(chuàng )始人和主持人,熱愛(ài)與社區分享知識。
譯者序
前言
第1章 從宏觀(guān)視角看大數據分析 1
1.1 大數據分析以及 Hadoop 和 Spark 在其中承擔的角色 3
1.1.1 典型大數據分析項目的生命周期 4
1.1.2 Hadoop和Spark承擔的角色 6
1.2 大數據科學(xué)以及Hadoop和Spark在其中承擔的角色 6
1.2.1 從數據分析到數據科學(xué)的根本性轉變 6
1.2.2 典型數據科學(xué)項目的生命周期 8
1.2.3 Hadoop和Spark 承擔的角色 9
1.3 工具和技術(shù) 9
1.4 實(shí)際環(huán)境中的用例 11
1.5 小結 12
第2章 Apache Hadoop和Apache Spark入門(mén) 13
2.1 Apache Hadoop概述 13
2.1.1 Hadoop 分布式文件系統 14
2.1.2 HDFS 的特性 15
2.1.3 MapReduce 16
2.1.4 MapReduce 的特性 17
2.1.5 MapReduce v1與MapReduce v2對比 17
2.1.6 YARN 18
2.1.7 Hadoop上的存儲選擇 20
2.2 Apache Spark概述 24
2.2.1 Spark 的發(fā)展歷史 24
2.2.2 Apache Spark 是什么 25
2.2.3 Apache Spark 不是什么 26
2.2.4 MapReduce 的問(wèn)題 27
2.2.5 Spark 的架構 28
2.3 為何把 Hadoop 和 Spark 結合使用 31
2.3.1 Hadoop 的特性 31
2.3.2 Spark 的特性 31
2.4 安裝 Hadoop 和 Spark 集群 33
2.5 小結 36
第3章 深入剖析Apache Spark 37
3.1 啟動(dòng) Spark 守護進(jìn)程 37
3.2 學(xué)習Spark的核心概念 39
3.3 Spark 程序的生命周期 55
3.4 Spark 應用程序 59
3.5 持久化與緩存 62
3.6 Spark 資源管理器:Standalone、YARN和Mesos 63
3.7 小結 67
第4章 利用Spark SQL、Data-Frame和Dataset進(jìn)行大數據分析 69
4.1 Spark SQL 的發(fā)展史 70
4.2 Spark SQL 的架構 71
4.3 介紹Spark SQL的四個(gè)組件 72
4.4 DataFrame 和 Dataset 的演變 74
4.5 為什么要使用 Dataset 和DataFrame 75
4.6 何時(shí)使用 RDD、Dataset 和DataFrame 78
4.7 利用 DataFrame 進(jìn)行分析 78
4.8 利用 Dataset API 進(jìn)行分析 85
4.9 Data Sources API 87
4.10 把 Spark SQL 作為分布式 SQL引擎 97
4.11 Hive on Spark 100
4.12 小結 100
第5章 利用Spark Streaming和Structured Streaming進(jìn)行實(shí)時(shí)分析 102
5.1 實(shí)時(shí)處理概述 103
5.2 Spark Streaming 的架構 104
5.3 Spark Streaming 的變換和動(dòng)作 109
5.4 輸入數據源和輸出存儲 111
5.5 使用 Kafka 和 HBase 的 Spark Streaming 113
5.6 Spark Streaming 的高級概念 118
5.7 監控應用程序 122
5.8 結構化流概述 123
5.9 小結 129
第6章 利用Spark和Hadoop的筆記本與數據流 130
6.1 基于網(wǎng)絡(luò )的筆記本概述 130
6.2 Jupyter概述 131
6.3 Apache Zeppelin概述 135
6.4 Livy REST 作業(yè)服務(wù)器和 Hue筆記本 140
6.5 用于數據流的 Apache NiFi概述 148
6.6 小結 152
第7章 利用Spark和Hadoop進(jìn)行機器學(xué)習 153
7.1 機器學(xué)習概述 153
7.2 在 Spark 和 Hadoop 上進(jìn)行機器學(xué)習 154
7.3 機器學(xué)習算法 155
7.4 機器學(xué)習算法示例 160
7.5 構建機器學(xué)習流水線(xiàn) 163
7.6 利用 H2O 和 Spark 進(jìn)行機器學(xué)習 167
7.7 Hivemall概述 169
7.8 Hivemall for Spark概述 170
7.9 小結 170
第8章 利用Spark和Mahout構建推薦系統 171
8.1 構建推薦系統 171
8.2 推薦系統的局限性 173
8.3 用 MLlib 實(shí)現推薦系統 173
8.4 Mahout 和 Spark 的集成 181
8.5 小結 189
第9章 利用GraphX進(jìn)行圖分析 190
9.1 圖處理概述 190
9.2 GraphX 入門(mén) 193
9.3 利用 GraphX 分析航班數據 205
9.4 GraphFrames概述 209
9.5 小結 212
第10章 利用SparkR進(jìn)行交互式分析 213
10.1 R語(yǔ)言和SparkR概述 213
10.2 SparkR 入門(mén) 216
10.3 在 SparkR 里使用 DataFrame 223
10.4 在 RStudio 里使用 SparkR 228
10.5 利用 SparkR 進(jìn)行機器學(xué)習 230
10.6 在 Zeppelin 里使用 SparkR 233
10.7 小結 234