描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302511878
编辑推荐
每天有100万次优步打车,每月有100亿小时的Netflix视频,每年有1万亿美元花在电子商务网站上——我们今天的生活何尝不是如此呢?。这些服务的成功得益于大数据和日益增长的实时分析。这些服务的成功也应引起我们足够的重视!这也是我们学习实时大数据分析的1佳时机!学习它,掌握它,使用它!本书采取用例为先的方法:每1章都专门针对某一特定垂直行业,并通过实例、代码、图标进行分析——真实的示例、真实的应用程序、真实的数据和真实的代码。
内容简介
本书详细阐述了与Spark实时大数据分析以及Spark Streaming框架相关的基本解决方案,主要包括大数据漫游指南,实时RDD,高速流:链接外部数据源,边界效应,实时ETL和分析技术,大规模机器学习,云、Lambda及Python等内容。此外,本书还提供了丰富的示例以及代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
目 录
目 录
第1章 大数据漫游指南 1
1.1 Spark前传 1
1.1.1 Web 2.0时代 2
1.1.2 无处不在的传感器 7
1.2 Spark Streaming:MapReduce和CEP的交集 9
第2章 Spark简介 10
2.1 安装 11
2.2 执行 12
2.2.1 独立集群模式(Standalone Cluster) 12
2.2.2 YARN模式 13
2.3 个应用程序 13
2.3.1 构建 16
2.3.2 执行 17
2.4 SparkContext 19
2.4.1 RDDs创建 19
2.4.2 处理依赖关系 20
2.4.3 创建共享变量 21
2.4.4 作业执行 22
2.5 RDD 22
2.5.1 持久化 23
2.5.2 转换 24
2.5.3 行动(Action) 28
小结 29
第3章 实时RDD:DStream 30
3.1 从连续流到离散流 30
3.2 个Spark Streaming应用程序 31
3.2.1 构建和执行 34
3.2.2 Streaming Context 34
3.3 DStreams 36
3.3.1 Spark Streaming应用程序剖析 38
3.3.2 转换 42
小结 52
第4章 高速流:并行化及其他 54
4.1 流数据的一大飞跃 54
4.2 并行化 56
4.2.1 Worker 56
4.2.2 执行器(Executor) 57
4.2.3 任务(Task) 59
4.3 批处理间隔 62
4.4 调度 64
4.4.1 应用程序间调度 64
4.4.2 批处理调度 64
4.4.3 作业间调度 65
4.4.4 一个行动,一个作业 65
4.5 内存 66
4.5.1 序列化 67
4.5.2 压缩(Compression) 70
4.5.3 垃圾收集 70
4.6 Shuffle 70
4.6.1 早期投影和过滤 70
4.6.2 经常使用组合器 70
4.6.3 大量运用平行化 70
4.6.4 文件合并(File Consolidation) 71
4.6.5 更多内存 71
小结 71
第5章 链接外部数据源 72
5.1 智慧城市,智慧地球,一切更智慧 72
5.2 ReceiverInputDStream 74
5.3 套接字 76
5.4 MQTT 85
5.5 Flume 89
5.5.1 基于推模式的Flume数据摄取 91
5.5.2 基于拉模式的Flume数据摄取 92
5.6 Kafka 92
5.6.1 基于接收器的Kafka消费者 95
5.6.2 直接Kafka消费者 98
5.7 Twitter 99
5.8 块间隔 100
5.9 自定义接收器 100
小结 104
第6章 边界效应 106
6.1 盘点股市 106
6.2 foreachRDD 108
6.2.1 为每条记录创建一个连接 110
6.2.2 为每个分区创建一个连接 111
6.2.3 静态连接 112
6.2.4 惰性静态连接 113
6.2.5 静态连接池 114
6.3 可扩展流存储 116
6.3.1 HBase 117
6.3.2 股市控制台(Dashboard) 118
6.3.3 SparkOnHBase 120
6.3.4 Cassandra 122
6.3.5 Spark Cassandra连接器 124
6.4 全局状态(Global State) 126
6.4.1 静态变量 126
6.4.2 updateStateByKey() 128
6.4.3 累加器 129
6.4.4 外部解决方案 131
小结 133
第7章 充分准备 134
7.1 每个点击都异乎重要 134
7.2 Tachyon(Alluxio) 135
7.3 Spark Web UI 138
7.3.1 历史分析 151
7.3.2 RESTful度量 152
7.4 日志记录 153
7.5 外部度量 154
7.6 系统度量 156
7.7 监控和报警 157
小结 159
第8章 实时ETL和分析技术 160
8.1 交易数据记录的强大功能 160
8.2 个流式Spark SQL应用程序 162
8.3 SQLContext 165
8.3.1 创建数据框 165
8.3.2 执行SQL 168
8.3.3 配置 169
8.3.4 用户自定义函数 169
8.3.5 Catalyst:查询执行和优化 171
8.3.6 HiveContext 171
8.4 数据框(Data Frame) 173
8.4.1 类型 173
8.4.2 查询转换 173
8.4.3 行动 180
8.4.4 RDD操作 182
8.4.5 持久化 182
8.4.6 做法 183
8.5 SparkR 183
8.6 个SparkR应用程序 184
8.6.1 执行 185
8.6.2 流式SparkR 185
小结 188
第1章 大数据漫游指南 1
1.1 Spark前传 1
1.1.1 Web 2.0时代 2
1.1.2 无处不在的传感器 7
1.2 Spark Streaming:MapReduce和CEP的交集 9
第2章 Spark简介 10
2.1 安装 11
2.2 执行 12
2.2.1 独立集群模式(Standalone Cluster) 12
2.2.2 YARN模式 13
2.3 个应用程序 13
2.3.1 构建 16
2.3.2 执行 17
2.4 SparkContext 19
2.4.1 RDDs创建 19
2.4.2 处理依赖关系 20
2.4.3 创建共享变量 21
2.4.4 作业执行 22
2.5 RDD 22
2.5.1 持久化 23
2.5.2 转换 24
2.5.3 行动(Action) 28
小结 29
第3章 实时RDD:DStream 30
3.1 从连续流到离散流 30
3.2 个Spark Streaming应用程序 31
3.2.1 构建和执行 34
3.2.2 Streaming Context 34
3.3 DStreams 36
3.3.1 Spark Streaming应用程序剖析 38
3.3.2 转换 42
小结 52
第4章 高速流:并行化及其他 54
4.1 流数据的一大飞跃 54
4.2 并行化 56
4.2.1 Worker 56
4.2.2 执行器(Executor) 57
4.2.3 任务(Task) 59
4.3 批处理间隔 62
4.4 调度 64
4.4.1 应用程序间调度 64
4.4.2 批处理调度 64
4.4.3 作业间调度 65
4.4.4 一个行动,一个作业 65
4.5 内存 66
4.5.1 序列化 67
4.5.2 压缩(Compression) 70
4.5.3 垃圾收集 70
4.6 Shuffle 70
4.6.1 早期投影和过滤 70
4.6.2 经常使用组合器 70
4.6.3 大量运用平行化 70
4.6.4 文件合并(File Consolidation) 71
4.6.5 更多内存 71
小结 71
第5章 链接外部数据源 72
5.1 智慧城市,智慧地球,一切更智慧 72
5.2 ReceiverInputDStream 74
5.3 套接字 76
5.4 MQTT 85
5.5 Flume 89
5.5.1 基于推模式的Flume数据摄取 91
5.5.2 基于拉模式的Flume数据摄取 92
5.6 Kafka 92
5.6.1 基于接收器的Kafka消费者 95
5.6.2 直接Kafka消费者 98
5.7 Twitter 99
5.8 块间隔 100
5.9 自定义接收器 100
小结 104
第6章 边界效应 106
6.1 盘点股市 106
6.2 foreachRDD 108
6.2.1 为每条记录创建一个连接 110
6.2.2 为每个分区创建一个连接 111
6.2.3 静态连接 112
6.2.4 惰性静态连接 113
6.2.5 静态连接池 114
6.3 可扩展流存储 116
6.3.1 HBase 117
6.3.2 股市控制台(Dashboard) 118
6.3.3 SparkOnHBase 120
6.3.4 Cassandra 122
6.3.5 Spark Cassandra连接器 124
6.4 全局状态(Global State) 126
6.4.1 静态变量 126
6.4.2 updateStateByKey() 128
6.4.3 累加器 129
6.4.4 外部解决方案 131
小结 133
第7章 充分准备 134
7.1 每个点击都异乎重要 134
7.2 Tachyon(Alluxio) 135
7.3 Spark Web UI 138
7.3.1 历史分析 151
7.3.2 RESTful度量 152
7.4 日志记录 153
7.5 外部度量 154
7.6 系统度量 156
7.7 监控和报警 157
小结 159
第8章 实时ETL和分析技术 160
8.1 交易数据记录的强大功能 160
8.2 个流式Spark SQL应用程序 162
8.3 SQLContext 165
8.3.1 创建数据框 165
8.3.2 执行SQL 168
8.3.3 配置 169
8.3.4 用户自定义函数 169
8.3.5 Catalyst:查询执行和优化 171
8.3.6 HiveContext 171
8.4 数据框(Data Frame) 173
8.4.1 类型 173
8.4.2 查询转换 173
8.4.3 行动 180
8.4.4 RDD操作 182
8.4.5 持久化 182
8.4.6 做法 183
8.5 SparkR 183
8.6 个SparkR应用程序 184
8.6.1 执行 185
8.6.2 流式SparkR 185
小结 188
第9章 大规模机器学习 189
9.1 传感器数据风暴 189
9.2 流式MLlib应用程序 191
9.3 MLlib 194
9.3.1 数据类型 194
9.3.2 统计分析 197
9.3.3 预处理 198
9.4 特征选择和提取 199
9.4.1 卡方选择 199
9.4.2 主成分分析 200
9.5 学习算法 201
9.5.1 分类 202
9.5.2 聚类 202
9.5.3 推荐系统 204
9.5.4 频繁模式挖掘 207
9.6 流式ML管道应用程序 208
9.7 ML 211
9.8 管道交叉验证 212
小结 213
第10章 云、Lambda及Python 215
10.1 一条好评胜过一千个广告 216
10.2 Google Dataproc 217
10.3 基于Dataproc应用程序创建的个Spark 220
10.4 PySpark 227
10.5 Lambda架构 229
10.6 流式图分析 238
总结 241
前 言
引 言
每天有100万次优步打车,每月有100亿小时的Netflix视频,每年有1万亿美元花在电子商务网站上。这些服务的成功得益于大数据和日益增长的实时分析。实时分析的出现,让企业能够把握消费者的消费取向,并将消费者需求整合到关键业务决策中。到目前为止,我们只是触及了实时分析的冰山一角。未来10年,将有500亿部设备接入互联网,从智能手机、台式机和汽车到喷气发动机、冰箱,甚至是厨房水槽都会接入互联网。未来就是数据,这些数据变得越来越实时。当下正是勇当实时分析时代弄潮儿的时机,而学习这本书将有助你成为一名专业人士。
流式应用程序的低延迟规定,加上一般大数据系统的共同要求,即可扩展性、容错和可靠性,这些要求催生了一种全新的实时计算。而引领实时计算的先锋是Spark Streaming,它将流处理视为离散的微批处理。这不仅使得低延迟计算能够同时保留Spark的可扩展性和容错特性,也能保留它的简单编程模型。还允许流式应用程序连接到更广泛的 Spark Libraries生态系统,如Spark SQL,MLlib,SparkR和GraphX等。此外,程序员还可以将流处理与批处理结合起来,创建出既能处理静态数据又能处理动态数据的应用程序。后,这些应用程序也能使用与其他系统开箱即用的集成,如Kafka,Flume,HBase和Cassandra。由于Spark Streaming具备所有这些功能,让它在进行实时大数据处理时就像是一把多功能的瑞士军刀。读者阅读本书时可以用这把瑞士军刀来解决一些领域和行业的问题。
本书采取用例为先的方法:每一章都专门针对某一特定垂直行业(进行分析)。通过讨论该领域的实时大数据问题而展开内容,并从总体上说明Spark Streaming和流处理的概念。然后进一步采用该领域公开可用的数据集,去实现每个章节中的真实应用程序。此外,本书的所有代码片段都可以用于执行。但是为了简化这个过程,我们把代码放在GitHub 和出版社的网站上供读者使用。本书中的所有内容都是真实的:真实的示例、真实的应用程序、真实的数据和真实的代码。读者在阅读的过程中按书中步骤设置一个环境,下载数据,并运行应用程序,这就是学习本书的方法。而读者也会从处理这些现实问题及找寻解决方案的过程中获得宝贵的心得体会。
总之,令人兴奋的Spark Streaming和Spark时刻来临了。Spark已经成为世界上的开源大数据处理项目,超过200个组织的750多名贡献者(为此做出了贡献)。Spark代码库处于快速发展中,几乎每天都有性能改进和特性添加。例如,(在Spark 1.4版本首次出现的)Project Tungsten将底层引擎的性能提高了许多数量级。在我开始写这本书之时,Spark的版本是1.4。此后Spark又发行了两个重要版本(1.5和1.6版本)。这些版本中有一些改变,包括原生内存管理,MLlib中添加更多算法,通过TensorFlow支持深度学习、Dataset API和会话管理。在Spark Streaming前端,添加了两个主要功能:mapWithState允许跨多个批处理维护状态,并且在队列积聚的情况下用背压来控制输入速率。 此外,像Google,Databricks和IBM这些公司的云托管服务降低了开发和运行Spark应用程序的门槛。
让我们揭开Spark新篇章去为学习技能锦上添花!
每天有100万次优步打车,每月有100亿小时的Netflix视频,每年有1万亿美元花在电子商务网站上。这些服务的成功得益于大数据和日益增长的实时分析。实时分析的出现,让企业能够把握消费者的消费取向,并将消费者需求整合到关键业务决策中。到目前为止,我们只是触及了实时分析的冰山一角。未来10年,将有500亿部设备接入互联网,从智能手机、台式机和汽车到喷气发动机、冰箱,甚至是厨房水槽都会接入互联网。未来就是数据,这些数据变得越来越实时。当下正是勇当实时分析时代弄潮儿的时机,而学习这本书将有助你成为一名专业人士。
流式应用程序的低延迟规定,加上一般大数据系统的共同要求,即可扩展性、容错和可靠性,这些要求催生了一种全新的实时计算。而引领实时计算的先锋是Spark Streaming,它将流处理视为离散的微批处理。这不仅使得低延迟计算能够同时保留Spark的可扩展性和容错特性,也能保留它的简单编程模型。还允许流式应用程序连接到更广泛的 Spark Libraries生态系统,如Spark SQL,MLlib,SparkR和GraphX等。此外,程序员还可以将流处理与批处理结合起来,创建出既能处理静态数据又能处理动态数据的应用程序。后,这些应用程序也能使用与其他系统开箱即用的集成,如Kafka,Flume,HBase和Cassandra。由于Spark Streaming具备所有这些功能,让它在进行实时大数据处理时就像是一把多功能的瑞士军刀。读者阅读本书时可以用这把瑞士军刀来解决一些领域和行业的问题。
本书采取用例为先的方法:每一章都专门针对某一特定垂直行业(进行分析)。通过讨论该领域的实时大数据问题而展开内容,并从总体上说明Spark Streaming和流处理的概念。然后进一步采用该领域公开可用的数据集,去实现每个章节中的真实应用程序。此外,本书的所有代码片段都可以用于执行。但是为了简化这个过程,我们把代码放在GitHub 和出版社的网站上供读者使用。本书中的所有内容都是真实的:真实的示例、真实的应用程序、真实的数据和真实的代码。读者在阅读的过程中按书中步骤设置一个环境,下载数据,并运行应用程序,这就是学习本书的方法。而读者也会从处理这些现实问题及找寻解决方案的过程中获得宝贵的心得体会。
总之,令人兴奋的Spark Streaming和Spark时刻来临了。Spark已经成为世界上的开源大数据处理项目,超过200个组织的750多名贡献者(为此做出了贡献)。Spark代码库处于快速发展中,几乎每天都有性能改进和特性添加。例如,(在Spark 1.4版本首次出现的)Project Tungsten将底层引擎的性能提高了许多数量级。在我开始写这本书之时,Spark的版本是1.4。此后Spark又发行了两个重要版本(1.5和1.6版本)。这些版本中有一些改变,包括原生内存管理,MLlib中添加更多算法,通过TensorFlow支持深度学习、Dataset API和会话管理。在Spark Streaming前端,添加了两个主要功能:mapWithState允许跨多个批处理维护状态,并且在队列积聚的情况下用背压来控制输入速率。 此外,像Google,Databricks和IBM这些公司的云托管服务降低了开发和运行Spark应用程序的门槛。
让我们揭开Spark新篇章去为学习技能锦上添花!
评论
还没有评论。