发表于2024-12-21
本书适合:
大数据技术初学者阅读;
作为高等院校计算机相关专业的研究生学习参考资料;
所有愿意对大数据技术有所了解并想要将大数据技术应用于本职工作的读者阅读。
Spark作为下一代大数据处理引擎,经过短短几年的飞跃式发展,正在以燎原之势席卷业界,现已成为大数据产业中的一股中坚力量。本书着重讲解了Spark内核、Spark GraphX、Spark SQL、Spark Streaming和Spark MLlib的核心概念与理论框架,并提供了相应的示例与解析。全书共分8章,其中前4章介绍Spark内核,主要包括Spark简介、集群部署、工作原理、核心概念与操作等;后4章分别介绍Spark内核上的核心组件,每章系统地介绍Spark的一个组件,并附以相应的案例分析。本书适合作为高等院校计算机相关专业的研究生学习参考资料,也适合大数据技术初学者阅读,还适合于所有愿意对大数据技术有所了解并想要将大数据技术应用于本职工作的读者阅读。
经管之家(www.jg.com.cn):原人大经济论坛,于2003年成立,致力于推动经管学科的进步,传播优秀教育资源,目前已经发展成为国内优秀的经济、管理、金融、统计类的在线教育和咨询网站,也是国内活跃和具影响力的经管类网络社区。经管之家从2006年起在国内开展数据分析培训,累计培训学员数万人。在大数据的趋势背景下,创新“CDA数据分析师”品牌,致力于为社会各界数据分析爱好者提供优质、科学、系统的数据分析教育。截至2016年3月已成功举办40多期系统培训,培训学员达3千余名;CDA认证考试已成功举办三届,报考人数上千人;中国数据分析师俱乐部(CDA CLUB),每周线下免费沙龙活动,已举力40多期,累积会员2千余名;中国数据分析师行业峰会(CDA Summit),一年两届,参会人数皆达2千余名,在大数据领域影响力超前。“CDA数据分析师”队伍在业界不断壮大,对数据分析人才产业起到了巨大的推动作用。
第1章 Spark导论 1
1.1 Spark的发展 2
1.2 什么是Spark 3
1.3 Spark主要特征 3
1.3.1 快速 3
1.3.2 简洁易用 5
1.3.3 通用 6
1.3.4 多种运行模式 8
第2章 Spark集群部署 9
2.1 运行环境说明 9
2.1.1 软硬件环境 9
2.1.2 集群网络环境 10
2.2 安装VMware Workstation 11 10
2.3 安装CentOS 6 16
2.4 安装Hadoop 21
2.4.1 克隆并启动虚拟机 21
2.4.2 网络基本配置 24
2.4.3 安装JDK 27
2.4.4 免密钥登录配置 28
2.4.5 Hadoop配置 29
2.4.6 配置从节点 33
2.4.7 配置系统文件 33
2.4.8 启动Hadoop集群 33
2.5 安装Scala 35
2.6 安装Spark 36
2.6.1 下载并解压Spark安装包 36
2.6.2 配置Spark-env.sh 37
2.6.3 配置Spark-defaults.conf 37
2.6.4 配置Slaves 38
2.6.5 配置环境变量 38
2.6.6 发送至Slave1、Slave2 39
2.7 启动Spark 39
第3章 RDD编程 42
3.1 RDD定义 42
3.2 RDD的特性 43
3.2.1 分区 43
3.2.2 依赖 44
3.2.3 计算 45
3.2.4 分区函数 45
3.2.5 优先位置 46
3.3 创建操作 46
3.3.1 基于集合的创建操作 47
3.3.2 基于外部存储的创建操作 47
3.4 常见执行操作 49
3.5 常见转换操作 49
3.5.1 一元转换操作 50
3.5.2 二元转换操作 53
3.6 持久化操作 56
3.7 存储操作 58
第4章 Spark调度管理与应用程序开发 59
4.1 Spark调度管理基本概念 59
4.2 作业调度流程 60
4.2.1 作业的生成与提交 61
4.2.2 阶段的划分 62
4.2.3 调度阶段的提交 62
4.2.4 任务的提交与执行 62
4.3 基于IntelliJ IDEA构建Spark应用程序 64
4.3.1 安装IntelliJ IDEA 64
4.3.2 创建Spark应用程序 70
4.3.3 集群模式运行Spark应用程序 81
第5章 GraphX 87
5.1 GraphX概述 87
5.2 GraphX基本原理 89
5.2.1 图计算模型处理流程 89
5.2.2 GraphX定义 90
5.2.3 GraphX的特点 90
5.3 GraphX设计与实现 91
5.3.1 弹性分布式属性图 91
5.3.2 图的数据模型 92
5.3.3 图的存储模型 94
5.3.4 GraphX模型框架 97
5.4 GraphX操作 97
5.4.1 创建图 97
5.4.2 基本属性操作 100
5.4.3 结构操作 102
5.4.4 转换操作 103
5.4.5 连接操作 105
5.4.6 聚合操作 106
5.5 GraphX案例解析 107
5.5.1 PageRank算法与案例解析 107
5.5.2 Triangle Count算法与案例解析 110
第6章 Spark SQL 113
6.1 Spark SQL概述 113
6.2 Spark SQL逻辑架构 116
6.2.1 SQL执行流程 116
6.2.2 Catalyst 117
6.3 Spark SQL CLI 117
6.3.1 硬软件环境 117
6.3.2 集群环境 118
6.3.3 结合Hive 118
6.3.4 启动Hive 118
6.4 DataFrame编程模型 119
6.4.1 DataFrame简介 119
6.4.2 创建DataFrames 120
6.4.3 保存DataFrames 126
6.5 DataFrame常见操作 127
6.5.1 数据展示 127
6.5.2 常用列操作 128
6.5.3 过滤 131
6.5.4 排序 132
6.5.5 其他常见操作 134
6.6 基于Hive的学生信息管理系统的SQL查询案例与解析 137
6.6.1 Spark SQL整合Hive 137
6.6.2 构建数据仓库 138
6.6.3 加载数据 141
6.6.4 查询数据 142
第7章 Spark Streaming 146
7.1 Spark Streaming概述 146
7.2 Spark Streaming基础概念 147
7.2.1 批处理时间间隔 147
7.2.2 窗口时间间隔 148
7.2.3 滑动时间间隔 148
7.3 DStream基本概念 149
7.4 DStream的基本操作 150
7.4.1 无状态转换操作 150
7.4.2 有状态转换操作 152
7.4.3 输出操作 153
7.4.4 持久化操作 154
7.5 数据源 154
7.5.1 基础数据源 154
7.5.2 高级数据源 155
7.6 Spark Streaming编程模式与案例分析 156
7.6.1 Spark Streaming编程模式 156
7.6.2 文本文件数据处理案例(一) 157
7.6.3 文本文件数据处理案例(二) 160
7.6.4 网络数据处理案例(一) 164
7.6.5 网络数据处理案例(二) 171
7.6.6 stateful应用案例 175
7.6.7 window应用案例 180
7.7 性能考量 185
7.7.1 运行时间优化 185
7.7.2 内存使用与垃圾回收 186
第8章 Spark MLlib 187
8.1 Spark MLlib概述 187
8.1.1 机器学习介绍 187
8.1.2 Spark MLlib简介 189
8.2 MLlib向量与矩阵 190
8.2.1 MLlib向量 190
8.2.2 MLlib矩阵 192
8.3 Spark MLlib分类算法 196
8.3.1 贝叶斯分类算法 197
8.3.2 支持向量机算法 201
8.3.3 决策树算法 204
8.4 MLlib线性回归算法 208
8.5 MLlib聚类算法 212
8.6 MLlib协同过滤 215
3.2.2 依赖
RDD是易转换、易操作的,这意味着用户可以从已有的RDD转换出新的RDD。新、旧RDD之间必定存在着某种联系,这种联系称为RDD的依赖关系。RDD间的依赖关系是Spark中的一个重要概念,是Spark进行容错、优化与任务调度的基础。
RDD的依赖关系分为两种,如图3.1所示。
窄依赖:父RDD的每个分区最多被其子RDD的一个分区所依赖,也就是说子RDD的每个分区依赖于常数个父分区,子RDD每个分区的生成与父RDD的数据规模无关。
宽依赖:父RDD的每个分区被其子RDD的多个分区所依赖,子RDD每个分区的生成与父RDD的数据规模相关。
图3.1 依赖关系
在图3.1中,透明的矩形框代表一个RDD,每个矩形框里面的实心矩形代表RDD的一个分区。
为何要区分这两种依赖关系?一方面,对于若干个彼此窄依赖关系的RDD,基于任何一个子RDD分区可以方便地计算出其所有祖先RDD的相应分区,这些RDD可以在集群的节点的内存中以流水线(pipeline)的方式高效执行,如图3.2中Stage2所示。另一方面,对于窄依赖关系间的RDD,当子RDD的一个分区出错,可以很方便地利用父RDD中对应的分区重新计算该错误分区,因此窄依赖关系使得数据的容错与恢复非常方便;而对于宽依赖关系,子RDD的一个分区出错会导致其对应父RDD的多个分区进行重新计算,过程类似于MapReduce的Shuffle操作,代价非常高。
图3.2 流水线形式计算多个窄依赖关系间的RDD
示例2-3 RDD间的依赖关系
scala>val rdd =sc.makeRDD(1 to 10)
scala>val mapRDD=rdd.map(x=>(x, x))
scala>mapRDD.dependencies
scala>val shuffleRDD=mapRDD.partitionBy(new org.apache.spark.HashPartitioner(3))
scala>shuffleRDD.dependencies
运行结果:
res1: Seq[org.apache.spark.Dependency[_]]=List(org.apache.spark.OneToOneDependency@45ec9c22)
res2: Seq[org.apache.spark.Dependency[_]] = List(org.apache.spark.ShuffleDependency@7edbd4ec)
其中res1返回的org.apache.spark.OneToOneDependency为窄依赖关系;res2返回的org.apache. spark.ShuffleDependency为宽依赖关系。
3.2.3 计算
Spark 中每个RDD中都包含一个函数,即在父RDD上执行何种计算后得到当前RDD。每个RDD的计算都是以分区为单位的,而且每个RDD中的计算都是在对迭代器进行复合,不需要保存每次计算的结果。
3.2.4 分区函数
对于Key-Value形式的RDD,Spark允许用户根据关键字(Key)指定分区顺序,这是一个可选的功能。目前支持哈希分区(HashPartitioner)和范围分区(RangPartitioner)。这一特性有助于提高RDD之间某些操作的执行效率,例如可指定将两个RDD按照同样的哈希分区方式进行分区(将同一机器上具有相同关键字的记录放在一个分区),当这两个RDD之间执行join操作时,会简化Shuffle过程,提高效率。
3.2.5 优先位置
RDD优先位置属性与Spark中的作业调度与管理密切相关,是RDD中每个分区所存储的位置。遵循“移动计算不移动数据”这一理念,Spark在执行任务时尽可能地将计算分配到相关数据块所在的节点上。以从Hadoop中读取数据生成RDD为例,preferredLocations返回每一个数据块所在节点的机器名或者IP地址,如果每一块数是多份存储的,那么将返回多个机器地址。
示例2-4 RDD间的优先位置
scala>val rdd=sc.textFile("hdfs://master:9000/user/dong/input/file.txt").
map(_.contains("l"))
//根据依赖关系找到源头rdd。
scala>val hadoopRDD=rdd.dependencies(0).rdd
//源头rdd的分区数。
scala>hadoopRDD.partitions.size
//查看第一个分区位置。
scala>hadoopRDD.preferredLocations(HadoopRDD.partitions(0))
//查看第二个分区位置。
scala>hadoopRDD.preferredLocations(HadoopRDD.partitions(1))
运行结果:
res0: Int = 2
res1: Seq [String] = WrappedArray(slave2)
res2: Seq [String] = WrappedArray(slave2)
运行结果表明hadoopRDD共有2个分区,均位于slave2上。
……
随着电子信息、物联网等产业的高速发展,智能手机、平板电脑、可穿戴设备与物联网设备已经渗入到现代化生产与生活的各个方面,每时每刻产生着大量的数据,当今社会已经进入数据爆炸的时代。各领域中的相关数据不仅量大,而且种类繁多、变化速度快、价值密度低。这些日益凸显的大数据特征在全球范围内掀起了一场全新的思维、技术与商业变革,无论是产业界还是学术界都在持续加大在大数据技术和相关领域中的投入。“中国制造2025”战略规划和“互联网+”概念的提出再次为国内大数据技术的发展注入了强劲的动力,大数据技术已被提升到了前所未有的高度,预示了其未来广阔的发展空间与应用前景。
在大数据背景下,各领域对数据相关服务的需求不断提升,迫切需要一种高效通用的大数据处理引擎。相对于第一代大数据生态系统Hadoop中的MapReduce,Spark是一种基于内存的、分布式的大数据处理引擎,其计算速度更快,更加适合处理具有较多迭代次数的问题;Spark中还提供了丰富的API,使其具有极强的易用性;与此同时,Spark实现了“一栈式”的大数据解决方案,即在Spark内核基础上提出了Spark GraphX、Spark Streaming、Spark MLlib、Spark SQL等组件,使其不仅能够对海量数据进行批处理,同时还具备流式计算、海量数据交互式查询等功能,可以满足包括教育、电信、医疗、金融、电商、政府、智慧城市和安全等诸多领域中的大数据应用需求。
Spark作为下一代大数据处理引擎,经过短短几年的飞跃式发展,正在以燎原之势席卷业界,现已成为大数据产业中的一股中坚力量。
本书主要针对大数据技术初学者,着重讲解了Spark内核、Spark GraphX、Spark SQL、Spark Streaming和Spark MLlib的核心概念与理论框架,并提供了相应的示例与解析,以便读者能够尽快了解Spark。
全书共分为8章,其中前4章介绍Spark内核,主要包括Spark简介、集群部署、工作原理、核心概念与操作等;后4章分别介绍Spark内核的核心组件,每章系统地介绍Spark的一个组件,并附以相应的案例分析。
? 第1章:Spark导论。概述Spark的发展背景与起源,对比MapReduce介绍了Spark的特征、原理与应用场景等。
? 第2章:Spark集群部署。该章详细介绍了Ubuntu下Spark集群的部署过程与注意事项,首先利用VMware Workstation搭建Hadoop分布式集群;然后在集群中安装Scala;最后搭建Standalone模式的Spark集群。
? 第3章:RDD编程。该章对Spark中的弹性分布式数据集(Resilient Distributed Dataset —RDD)这一核心概念进行了详细介绍,重点讲解了与之相关的定义、特征及其操作,并附以相应的示例与解析。
? 第4章:Spark调度管理与应用程序开发。该章阐述了Spark底层的工作机制,介绍了Spark应用程序从产生作业到最终计算任务的整个流程;基于IntelliJ IDEA讲解了Spark应用程序的开发过程,并介绍了如何在本地与集群模式下提交运行Spark应用程序。
? 第5章:GraphX。该章介绍了GraphX的基本原理,着重讲解了GraphX中弹性分布式属性图的定义、表示模型、存储方式以及其上的丰富操作;以经典的PageRank与三角形计数等图计算算法为例,讲解了GraphX中相关接口的使用方法。
? 第6章:Spark SQL。该章包含了Spark SQL概述、SQL语句的处理流程、DataFrame数据模型的概念与相关操作等;并将Spark SQL与Hive相结合,给出了一个学生信息管理系统的设计与实现。
Spark大数据分析技术与实战 下载 mobi pdf epub txt 电子书 格式 2024
Spark大数据分析技术与实战 下载 mobi epub pdf 电子书天冷了可口可乐了可口可乐了可口可乐了可口可乐了
评分京东读书节买的 非常实惠 静心选购的书本呐 大爱 京东的物流和售后不能太赞?
评分还不错。简单易懂。坚持学下去。。希望能达到自己的要求。。。
评分掌柜的服务态度真好,发货很快。商品质量也相当不错。太喜欢了,谢谢!
评分数据分析一套~买来收藏~偶尔看看
评分绵柔和细腻的感情都需要自己努力过吗:这里有很多事情你永远不知道自己到底有个人的心是真的不一样,好看。你要不要那么。是不是在一起很久了?
评分书不错不错不错不错不错不错不错
评分趁着活动买的,真划算
评分质量非常好,真出乎我的意料,包装非常仔细,非常感谢 ,祝生意兴隆!
Spark大数据分析技术与实战 mobi epub pdf txt 电子书 格式下载 2024