《Spark大数据分析:核心概念、技术及实践》一导读

前  言  Preface

本书是大数据和Spark方面的一本简明易懂的手册。它将助你学习如何用Spark来完成很多大数据分析任务。它覆盖了高效利用Spark所需要知道的一切内容。

购买本书的好处之一就是:帮你高效学习Spark,节省你大量时间。本书所覆盖的主题在互联网上都可以找到,网上有很多关于Spark的博客、PPT和视频。事实上,Spark的资料浩如烟海,你可能需要在网络上不同地方花费数月来阅读关于Spark的点滴和碎片知识。本书提供了一个更好的选择:内容组织精妙,并以易懂的形式表现出来。

本书的内容和材料的组织基于我在不同的大数据相关会议上所组织的Spark研讨会。与会者对于内容和流程方面的积极反馈激励我写了这本书。

书和研讨会的区别之一在于后者具有交互性。然而,组织过几次Spark研讨会后,我了解到了人们普遍存在的问题,我把这些内容也收录在本书中。如果阅读本书时有问题,我鼓励你们通过LinkedIn或Twitter联系我。任何问题都可以问,不存在什么“愚蠢的问题”。

本书没有覆盖Spark的每一个细节,而是包含了高效使用Spark所需要知道的重要主题。我的目标是帮你建立起坚实的基础。一旦基础牢固,就可以轻松学习一项新技术的所有细节。另外,我希望保持本书尽可能简单。如果读完本书后发现Spark看起来也挺简单的,那我的目的也就达到了。

本书中的任何主题都不要求有先验知识。本书会一步步介绍关键概念,每一节建立在前一节的基础上。同样,每一章都是下一章的基石。如果当下不需要,你可以略过后面一些章节中讲解的不同的Spark库。不过我还是鼓励你阅读所有章节。即使可能和你当前的项目不相关,那些部分也可能会给你新的灵感。

通过本书你会学到很多Spark及其相关技术的知识。然而,要充分利用本书,建议亲自运行书中所展示的例子:用代码示例做实验。当你写代码并执行时,很多事情就变得更加清晰。如果你一边阅读一边练习并用示例来实验,当读完本书时,你将成为一名基础扎实的Spark开发者。

在我开发Spark应用时,我发现了一个有用的资源—Spark官方API文档,其访问地址为http://spark.apache.org/docs/latest/api/scala。初学者可能觉得它难以理解,不过一旦你学习了基本概念后,会发现它很有用。

另一个有用的资源是Spark邮件列表。Spark社区很活跃、有用。不仅Spark开发者会回答问题,有经验的Spark用户也会志愿帮助新人。无论你遇到什么问题,很有可能Spark邮件列表中有人已经解决过这个问题了。

而且,也可以联系我,我很乐意倾听,欢迎反馈、建议和提问。

—Mohammed Guller

LinkedIn: www.linkedin.com/in/mohammedguller

Twitter: @MohammedGuller

Contents  目  录

译者序

前言

致谢

第1章 大数据技术一览

1.1 Hadoop

1.1.1 HDFS

1.1.2 MapReduce

1.1.3 Hive

1.2 数据序列化

1.2.1 Avro

1.2.2 Thrift

1.2.3 Protocol Buffers

1.2.4 SequenceFile

1.3 列存储

1.3.1 RCFile

1.3.2 ORC

1.3.3 Parquet

1.4 消息系统

1.4.1 Kafka

1.4.2 ZeroMQ

1.5 NoSQL

1.5.1 Cassandra

1.5.2 HBase

1.6 分布式SQL查询引擎

1.6.1 Impala

1.6.2 Presto

1.6.3 Apache Drill

1.7 总结

第2章 Scala编程

2.1 函数式编程

2.1.1 函数

2.1.2 不可变数据结构

2.1.3 一切皆表达式

2.2 Scala基础

2.2.1 起步

2.2.2 基础类型

2.2.3 变量

2.2.4 函数

2.2.5 类

2.2.6 单例

2.2.7 样本类

2.2.8 模式匹配

2.2.9 操作符

2.2.10 特质

2.2.11 元组

2.2.12 Option类型

2.2.13 集合

2.3 一个单独的Scala应用程序

2.4 总结

第3章 Spark Core

3.1 概述

3.1.1 主要特点

3.1.2 理想的应用程序

3.2 总体架构

3.2.1 worker

3.2.2 集群管理员

3.2.3 驱动程序

3.2.4 执行者

3.2.5 任务

3.3 应用运行

3.3.1 术语

3.3.2 应用运行过程

3.4 数据源

3.5 API

3.5.1 SparkContext

3.5.2 RDD

3.5.3 创建RDD

3.5.4 RDD操作

3.5.5 保存RDD

3.6 惰性操作

3.7 缓存

3.7.1 RDD的缓存方法

3.7.2 RDD缓存是可容错的

3.7.3 缓存内存管理

3.8 Spark作业

3.9 共享变量

3.9.1 广播变量

3.9.2 累加器

3.10 总结

第4章 使用Spark shell进行交互式数据分析

4.1 起步

4.1.1 下载

4.1.2 解压

4.1.3 运行

4.2 REPL命令

4.3 把Spark shell当成Scala shell使用

4.4 数值分析

4.5 日志分析

4.6 总结

第5章 编写Spark应用

5.1 Spark中的Hello World

5.2 编译并运行应用

5.2.1 sbt

5.2.2 编译代码

5.2.3 运行应用

5.3 监控应用

5.4 调试应用

5.5 总结

第6章 Spark Streaming

6.1 Spark Streaming简介

6.1.1 Spark Streaming是一个Spark类库

6.1.2 总体架构

6.1.3 数据流来源

6.1.4 接收器

6.1.5 目的地

6.2 API

6.2.1 StreamingContext

6.2.2 Spark Streaming应用基本结构

6.2.3 DStream

6.2.4 创建DStream

6.2.5 处理数据流

6.2.6 输出操作

6.2.7 窗口操作

6.3 一个完整的Spark Streaming应用

6.4 总结

第7章 Spark SQL

7.1 Spark SQL简介

7.1.1 和其他Spark库集成

7.1.2 可用性

7.1.3 数据源

7.1.4 数据处理接口

7.1.5 与Hive的互操作性

7.2 性能

7.2.1 磁盘I/O

7.2.2 分区

7.2.3 列存储

7.2.4 内存中的列式缓存

7.2.5 行跳过

7.2.6 谓词下推

7.2.7 查询优化

7.3 应用

7.3.1 ETL

7.3.2 数据可视化

7.3.3 分布式JDBC/ODBC SQL查询引擎

7.3.4 数据仓库

7.4 API

7.4.1 关键抽象

7.4.2 创建DataFrame

7.4.3 在程序中使用SQL/HiveQL处理数据

7.4.4 使用DataFrame API处理数据

7.4.5 保存DataFrame

7.5 内置函数

7.5.1 聚合操作

7.5.2 集合操作

7.5.3 日期/时间

7.5.4 数学

7.5.5 字符串

7.5.6 窗口

7.6 UDF和UDAF

7.7 一个交互式分析的例子

7.8 使用Spark SQL JDBC服务器进行交互式分析

7.9 总结

第8章 使用Spark进行机器学习

8.1 机器学习简介

8.1.1 特征

8.1.2 标签

8.1.3 模型

8.1.4 训练数据

8.1.5 测试数据

8.1.6 机器学习应用

8.1.7 机器学习算法

8.1.8 超参数

8.1.9 模型评价

8.1.10 机器学习的主要步骤

8.2 Spark机器学习库

8.3 MLlib概览

8.3.1 与其他Spark库集成

8.3.2 统计工具

8.3.3 机器学习算法

8.4 MLlib API

8.4.1 数据类型

8.4.2 算法和模型

8.4.3 模型评价

8.5 MLlib示例应用

8.5.1 数据集

8.5.2 目标

8.5.3 代码

8.6 Spark ML

8.6.1 ML数据集

8.6.2 Transformer

8.6.3 Estimator

8.6.4 Pipeline

8.6.5 PipelineModel

8.6.6 Evaluator

8.6.7 网格搜索

8.6.8 CrossValidator

8.7 Spark ML示例应用

8.7.1 数据集

8.7.2 目标

8.7.3 代码

8.8 总结

第9章 使用Spark进行图处理

9.1 图简介

9.1.1 无向图

9.1.2 有向图

9.1.3 有向多边图

9.1.4 属性图

9.2 GraphX简介

9.3 GraphX API

9.3.1 数据抽象

9.3.2 创建图

9.3.3 图属性

9.3.4 图操作符

9.4 总结

第10章 集群管理员

10.1 独立集群管理员

10.1.1 架构

10.1.2 建立一个独立集群

10.1.3 在独立集群中运行Spark应用

10.2 Apache Mesos

10.2.1 架构

10.2.2 建立一个Mesos集群

10.2.3 在Mesos集群上运行Spark应用

10.3 YARN

10.3.1 架构

10.3.2 在YARN集群上运行Spark应用

10.4 总结

第11章 监控

11.1 监控独立集群

11.1.1 监控Spark master

11.1.2 监控Spark worker

11.2 监控Spark应用

11.2.1 监控一个应用所运行的作业

11.2.2 监控一个作业的不同阶段

11.2.3 监控一个阶段中的任务

11.2.4 监控RDD存储

11.2.5 监控环境

11.2.6 监控执行者

11.2.7 监控Spark流应用

11.2.8 监控Spark SQL查询

11.2.9 监控Spark SQL JDBC/ODBC服务器

11.3 总结

参考文献

时间: 2024-08-01 13:22:56

《Spark大数据分析:核心概念、技术及实践》一导读的相关文章

《TCP/IP路由技术(第二卷)》一导读

前 言 TCP/IP路由技术(第二卷)自从出版了<TCP/IP路由技术(第一卷)>之后,虽然Cisco Press"CCIE职业发展系列"中增加了大量新书,而且CCIE计划本身也被扩展到多个专业领域,但IP路由协议仍然是所有准CCIE们的核心基础.因此,必须透彻地对其加以理解和掌握,否则基础不牢,大厦将倾. 我在<TCP/IP路由技术(第一卷)>的前言中曾经说过,"--随着互联网络规模和复杂性的不断增大,路由问题也随即变得庞大且错综复杂".由

《TCP/IP路由技术(第二卷)》一1.4 配置EGP

1.4 配置EGP TCP/IP路由技术(第二卷) 通过以下4个基本步骤即可完成路由器上的EGP配置. 第1步:利用命令autonomous-system指定路由器的AS. 第2步:利用命令router egp启动EGP进程并指定邻居的AS. 第3步:利用命令neighbor指定EGP邻居. 第4步:指定由EGP宣告的网络. 下面的第一个案例研究将详细解释前3个配置步骤,同时也给出了步骤4的多种实现方法. 1.4.1 案例研究:EGP末梢网关 图1-10给出了一台位于AS 65502的EGP末梢

《TCP/IP路由技术(第二卷)》一1.9 配置练习题

1.9 配置练习题 TCP/IP路由技术(第二卷) 本书附录E中提供了以下配置练习题的答案. (1)图1-14中的自治系统65531是一个核心AS,请在RTA和RTB上配置EGP,要求如下: 不要将AS内的数据链路宣告给任何外部邻居. RTA将连接在其S1接口上的网络宣告给RTB:另外,要求RTA和RTB之间不能宣告其他AS间链路. RTA和RTB向其外部邻居(除了从其他自治系统学习到的网络)宣告默认路由,而且这两个网关都不得将默认路由宣告给其内部邻居. (2)例1-26给出了图1-15中RTC

《TCP/IP路由技术(第二卷)》一1.1 EGP的起源

1.1 EGP的起源 TCP/IP路由技术(第二卷)在20世纪80年代早期,构成ARPANET(现代互联网的前身)的路由器(网关)设备上都运行了一种距离向量路由协议--GGP(Gateway-to-Gateway Protocol,网关到网关协议).但是随着ARPANET的不断发展,与当今许多负责管理日益增长的互联网络的网管员一样,ARPANET的架构师们也预见到了相同的问题:现在运行的路由协议没有很好的扩展性. Eric Rosen在RFC 827中阐述了以下扩展性问题. 由于所有的网关都要知

《TCP/IP路由技术(第二卷)》一1.6 附 注

1.6 附 注 TCP/IP路由技术(第二卷)1Eric Rosen,"RFC 827:外部网关协议(EGP)". 2Linda J. Seamonson和Eric C. Rosen"RFC 888:'末梢'外部网关协议". 3D.L. Mills,"RFC 904:外部网关协议正式规范". 4J. Rekhter,"RFC 1092:EGP和新NSFNET骨干网的策略路由".

《TCP/IP路由技术(第二卷)》一1.5 检测与排除EGP故障

1.5 检测与排除EGP故障 TCP/IP路由技术(第二卷)在1.3节中已经解释了EGP为何无法应用于复杂的AS间拓扑结构,而强制性的简单拓扑结构带来了一个意外的好处,那就是EGP的故障检测和排除变得非常简单. 与其他路由协议一样,检测与排除EGP故障的第一步工作就是查看路由表.如果所请求的路由缺失或路由表中存在一条非期望路由,通过查看路由表就可以检测到问题的根源.由于EGP的度量值几乎没有任何意义,因而与其他路由协议相比,利用路由表进行EGP故障的检测和排除工作可以得到大大简化. 需要注意的是

《TCP/IP路由技术(第二卷)》一第1章 外部网关协议

第1章 外部网关协议 TCP/IP路由技术(第二卷)本章将主要讨论以下主题. • EGP的起源:本节将讨论在RFC 827(1982)中定义的外部网关协议的发展历史. • EGP的操作:本节将讨论EGP的基本操作机制,重点是EGP拓扑结构.EGP功能及EGP消息格式. • EGP的不足:本节将探讨为什么EGP不再是一种可行的外部网关协议解决方案. • 配置EGP:本节将通过4个独立的案例研究--EGP末梢网关.EGP核心网关.间接邻居和默认路由,来说明不同类型的EGP配置方法. • 检测和排除E

《TCP/IP路由技术(第二卷)》一1.7 展 望

1.7 展 望 TCP/IP路由技术(第二卷)本章不但说明了AS间路由协议的发明驱动力,也解释了EGP难以胜任该角色的原因.第2章将简要描述EGP的替代协议--边界网关协议及其操作.表1-10汇总了本章用到的所有命令.

《TCP/IP路由技术(第一卷)(第二版)》一导读

前 言 TCP/IP路由技术(第一卷)(第二版)路由技术即使在最小的数据通信网络中也是基本的要素.在某种程度上,路由技术和路由器的配置是相当简单的.但是,当网络的规模越来越大,并且越来越复杂的时候,路由选择问题就变得比较突出和难以控制了.或许,有点不恰当地说,作为一名网络系统顾问,我应该感谢当前出现的大规模路由技术难题,这些问题给了我谋生的手段.假设没有它们,"你何以为生?"这句习语可能就会不幸地成为我每天生活词汇的一部分了. Cisco认证互联网专家(CCIE)在大型网络的设计.故障

《TCP/IP路由技术(第一卷)(第二版)》一第1章 TCP/IP回顾1.1 TCP/IP协议层

第1章 TCP/IP回顾 TCP/IP路由技术(第一卷)(第二版)本章包括以下主题: TCP/IP协议层: IP包头(IP Packet Header): IPv4地址: 地址解析协议(ARP): Internet控制消息协议(ICMP): 主机到主机层. 考虑到这本书的书名是<TCP/IP路由技术>,有必要从回顾TCP/IP的基本知识开始讲起,然后再讲述如何进行TCP/IP路由选择.如果读者正在准备Cisco认证互连网专家(Cisco Certified Internetwork Exper