描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111617488
本书完整系统地介绍Spark各模块的原理并兼顾使用实战及综合应用
从实战角度讲解Spark,实例丰富,容易理解,内容实用,适合学习
本书介绍了Spark应用程序及更高级应用的工作流程,主要从使用角度进行了描述,每个具体内容都有对应的代码。本书涵盖了Apache Spark和它丰富的API,构成Spark的组件(包括Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX),在Spark standalone、 Hadoop YARN以及 Mesos clusters上运行Spark应用程序的部署和安装。通过对应的实例全面、详细地介绍了整个Spark实战开发的流程。*后,还介绍了Spark的高级应用,包括Spark流应用程序及可扩展和快速的机器学习框架H2O。
本书可以作为高等院校计算机、软件工程、数据科学与大数据技术等专业的大数据课程材料,可用于指导Spark编程实践,也可供相关技术人员参考使用。
目录
译者序
致谢
前言
关于本书
关于作者
关于封面
第1部分 第1步
第1章 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-action 虚拟机
1.5.1下载启动虚拟机
1.5.2 停止虚拟机
1.6总结
第2章 Spark基础
2.1使用spark-in-action虚拟机
2.1.1 复制Spark in Action GitHub存储库
2.1.2 找到java
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 使用用map转换
2.3.2 使用distinct和flatMap 转换
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 建立uberjar
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使用DataFrames
5.1.1 从RDD创建DataFrames
5.1.2 DataFrame API 基础知识
5.1.3 用SQL函数执行数据计算
5.1.4 使用缺失值
5.1.5 将DataFrames转换为RDD
5.1.6 分组和连接数据
5.1.7 执行连接
5.2超越DataFrames:引入DataSet
5.3使用SQL命令
5.3.1 表目录和Hive metastore
5.3.2 执行SQL查询
5.3.3 通过Thrift服务器连接到Spark SQL
5.4保存并加载DataFrame 数据
5.4.1 内置数据源
5.4.2 保存数据
5.4.3 加载数据
5.5 Catalyst 优化器
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 创建流式DataFrame
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
第10章 运行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 master参数
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 Executors(执行器)页面
10.5在本地机器运行Spark
10.5.1 本地模式
10.5.2 本地集群模式
10.6总结
第11章 在Spark独立集群上运行
11.1 Spark Standalone集群组件
11.1.1 启动Stanalone集群
11.1.2 用shell脚本启动群集
11.1.3 手动启动集群
11.1.4 查看Spark进程
11.1.5 Standalone master高可用性和恢复
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 在Amazon EC2上运行
11.6.1 先决条件
11.6.2 创建一个E2C独立集群
11.6.3 使用E2C集群
11.6.4 销毁集群
11.7 总结
第12章 在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部分 协同使用
第13章 实例学习:实时仪表盘
13.1了解用例
13.1.1 概况
13.1.2 了解应用程序组件
13.2 运行应用程序
13.2.1 在spark-in-action VM中运行应用程序
13.2.2 手动启动应用程序
13.3 理解源代码
13.3.1 KafkaLogsSimulator项目
13.3.2 Streaming Log Analyzer项目
13.3.3 Web统计信息显示板项目
13.3.4 建设项目
13.4总结
第14章 H20深入学习Spark
14.1什么是深入学习
14.2 在Spark中使用H2O和
14.2.1 什么是H2O
14.4.2 在Spark中启动Sparkling Water
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 Water API构建和评估深度学习模型
14.4使用H2O的深度学习进行分类
14.4.1 加载和拆分数据
14.4.2 通过Flow UI 建造模型
14.4.3 通过Sparkling Water API建造模型
14.4.4 停止H2O集群
14.5总结
附录A 安装Apache Spark
附录B 了解MapReduce
附录C 线性代数基础
回顾过去一年半,笔者不禁想到:笔者在这个地球上是如何生存的,这是笔者生命中最繁忙的18个月!自从Manning出版社让笔者和Marko写一本关于Spark的书,笔者花了大部分空闲时间在Apache Spark上。笔者这段时间过得很充实,学到了很多,并且觉得这是值得的。
如今,Spark是一个超热门的话题。它于2009年由Matei Zaharia在加利福尼亚州的伯克利设想的(最初是试图证明Mesos执行平台的可行性)。在2010年开源。在2013年Spark被捐赠给了Apache软件基金,从那以后它以闪电般的速度发展。2015年,Spark是最活跃的Apache项目之一,有超过1000个贡献者(投稿人、捐助人)。今天,Spark是所有主要Hadoop发行版的一部分,并被许多组织使用,广泛应用于或大或小的程序中。
写一本关于Spark的书的挑战在于它发展很快。自从笔者们开始写Spark in Action,笔者们看到了6个版本Spark,有许多新的、重要的功能需要覆盖。第一个主要版本(2.0版本)在笔者完成了大部分书的写作后推出的,笔者不得不延迟出版计划以涵盖它附带的新功能。
写Spark的另一个挑战是主题的广度:Spark更多的是一个平台,而不是一个框架。用户可以使用它来编写各种应用程序(用4种语言),包括批处理作业、实时处理系统和Web应用程序执行Spark作业、用SQL处理结构化数据和使用传统编程技术处理非结构化数据、各种机器学习和数据修改任务、与分布式文件系统交互、各种关系和无SQL数据库、实时系统等。安装、配置和运行Spark,这些运行时的工作也同样重要。
笔者详细地介绍了Spark中的重要内容并且是本书成为使用Spark的指南,希望用户能够喜欢本书。
评论
还没有评论。