从实用角度系统讲解Spark的数据处理工具及使用方法
手把手教你充分利用Spark提供的各种功能,快速编写高效分布式程序
海报
Spark是一个开源的通用并行分布式计算框架,由加州大学伯克利分校的AMP实验室开发,支持内存计算、多迭代批量处理、即席查询、流处理和图计算等多种范式。Spark内存计算框架适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持,如阿里巴巴、百度、网易、英特尔等公司。
《Spark快速数据处理》系统讲解Spark的使用方法,包括如何在多种机器上安装Spark,如何配置一个Spark集群,如何在交互模式下运行第一个Spark作业,如何在Spark集群上构建一个生产级的脱机/独立作业,如何与Spark集群建立连接和使用SparkContext,如何创建和保存RDD(弹性分布式数据集),如何用Spark分布式处理数据,如何设置Shark,将Hive查询集成到你的Spark作业中来,如何测试Spark作业,以及如何提升Spark任务的性能。
第1章
安装Spark以及构建
Spark集群
1.1 单机运行Spark
1.2 在EC2上运行Spark
1.3 在ElasticMapReduce上部署Spark
1.4 用Chef(opscode)部署Spark
1.5 在Mesos上部署Spark
1.6 在Yarn上部署Spark
1.7 通过SSH部署集群
1.8 链接和参考
1.9 小结
本章将详细介绍搭建Spark的常用方法。Spark的单机版便于测试,同时本章也会提到通过SSH用Spark的内置部署脚本搭建Spark集群,使用Mesos、Yarn或者Chef来部署Spark。对于Spark在云环境中的部署,本章将介绍在EC2(基本环境和EC2MR)上的部署。如果你的机器或者集群中已经部署了Spark,可以跳过本章直接开始使用Spark编程。
不管如何部署Spark,首先得从获得Spark的一个版本,截止到写本书时,Spark的最新版本为0.7版。对于熟悉github的程序员,则可以从git://github.com/mesos/spark.git直接复制Spark项目。Spark提供基本源码压缩包,同时也提供已经编译好的压缩包。为了和Hadoop分布式文件系统(HDFS)交互,需要在编译源码前设定相应的集群中所使用的Hadoop版本。对于0.7版本的Spark,已经编译好的压缩包依赖的是1.0.4版本的Hadoop。如果想更深入地学习Spark,推荐自己编译基本源码,因为这样可以灵活地选择HDFS的版本,如果想对Spark源码有所贡献,比如提交补丁,自己编译源码是必须的。你需要安装合适版本的Scala和与之对应的JDK版本。对于Spark的0.7.1版本,需要Scala 2.9.2或者更高的Scala 2.9版本(如2.9.3版)。在写本书时,Linux发行版Ubuntu的LTS版本已经有Scala 2.9.1版,除此之外,最近的稳定版本已经有2.9.2版。Fedora 18已经有2.9.2版。软件包的更新信息可以查看到。Scala官网上的最新版在。选择Spark支持的Scala版本十分重要,Spark对Scala的版本很敏感。
……
译者序
作者简介
前言
第1章 安装Spark以及构建Spark集群 / 1
1.1 单机运行Spark / 4
1.2 在EC2上运行Spark / 5
1.3 在ElasticMapReduce上部署Spark / 11
1.4 用Chef(opscode)部署Spark / 12
1.5 在Mesos上部署Spark / 14
1.6 在Yarn上部署Spark / 15
1.7 通过SSH部署集群 / 16
1.8 链接和参考 / 21
1.9 小结 / 21
第2章 Spark shell的使用 / 23
2.1 加载一个简单的text文件 / 24
2.2 用Spark shell运行逻辑回归 / 26
2.3 交互式地从S3加载数据 / 28
2.4 小结 / 30
第3章 构建并运行Spark应用 / 31
3.1 用sbt构建Spark作业 / 32
3.2 用Maven构建Spark作业 / 36
3.3 用其他工具构建Spark作业 / 39
3.4 小结 / 39
第4章 创建SparkContext / 41
4.1 Scala / 43
4.2 Java / 43
4.3 Java和Scala共享的API / 44
4.4 Python / 45
4.5 链接和参考 / 45
4.6 小结 / 46
第5章 加载与保存数据 / 47
5.1 RDD / 48
5.2 加载数据到RDD中 / 49
5.3 保存数据 / 54
5.4 连接和参考 / 55
5.5 小结 / 55
第6章 操作RDD / 57
6.1 用Scala和Java操作RDD / 58
6.2 用Python操作RDD / 79
6.3 链接和参考 / 83
6.4 小结 / 84
第7章 Shark-Hive和Spark的综合运用 / 85
7.1 为什么用Hive/Shark / 86
7.2 安装Shark / 86
7.3 运行Shark / 88
7.4 加载数据 / 88
7.5 在Spark程序中运行HiveQL查询 / 89
7.6 链接和参考 / 92
7.7 小结 / 93
第8章 测试 / 95
8.1 用Java和Scala测试 / 96
8.2 用Python测试 / 103
8.3 链接和参考 / 104
8.4 小结 / 105
第9章 技巧和窍门 / 107
9.1 日志位置 / 108
9.2 并发限制 / 108
9.3 内存使用与垃圾回收 / 109
9.4 序列化 / 110
9.5 IDE集成环境 / 111
9.6 Spark与其他语言 / 112
9.7 安全提示 / 113
9.8 邮件列表 / 113
9.9 链接和参考 / 113
9.10 小结 / 114