从技术层面上,Spark 作为一个快速 、通用的大规模数据处理引擎,凭借其可伸缩、基于内存计算等特点,以及可以直接读写HDFS.上数据的优势,实现了批处理时更加高效、延迟更低,已然成为轻量级大数据快速处理的统一平台。 Spark 集成Spark SQL、Spark Streaming、MLlib、GraphX. SparkR 等子框架,并且提供了全新的大数据处理方式,让从业者的工作变得越来越便捷。本篇从基础讲起,针对性地给出了实战场景;并围绕DataFrame,兼顾在Spark SQL和Spark ML的应用。
从适合读者阅读和掌握知识的结构安排上讲,分为“基础篇"、“实战篇”、 “高级篇”、“扩展篇”四个维度进行编写,从基础引出实战,从实战过渡高级,从高级进行扩展,层层推进,便于读者展开讨论,深入理解分析,并提供相应的解决方案。
总共分为章的内容,系统的讲解了spark核心技术与高级应用,由于细节内容实在是太多了,小编只好把部分知识点截图出来粗略的介绍,每个小节里面都有更加细化的内容。
第1章,spark简介
生活离不开水,同样离不开数据,我们被数据包围,在数据中生活。当数据越来越多时,就成了大数据。
想要理解大数据,就需要理解大数据相关的查询、处理、机器学习、图计算和统计分析等,Spark 作为新一代轻量级大数据快速处理平台,集成了大数据相关的各种能力,是理解大数据的首选。
现在,让我们以向大师致敬的方式开始学习之旅,向Doug Cutting和Matei Zaharia两位大师致敬!
第2章,Spark部署和运行
对于大部分想学习Spark的人而言,如何构建稳定的Spark集群是学习的重点之一,为了解决构建Spark集群的困难,本章内容从简人手,循序渐进,主要包括:部署准备工作、本地模式部署、独立模式部署、YARN模式部署,以及基于各种模式的应用程序运行。
很多优秀的集成部署工具值得推荐,如cloudera manager,但是本章重点讲解手动部署,借以加深对部署的理解。部署完毕,可以直接体验- - 下运行的快感,在自我陶醉的同时,细细品味过程中的细节。
第3章,spark程序开发
作为程序员,怎么提倡超越都不为过,但落地到具体问题,我们需要有比较实际的措施。从简单程序开始,以致虚和守静的心态,清空自己在大数据方向不劳而获的幻想,逐步成长为业内有影响力的角色。对于大部分程序员而言,本章内容略显基础,首先通过Spark交互Shell来介绍SparkAPI,编写简单的Spark程序,然后展示如何构建Spark开发环境,以及编写简单的Spark案例程序,并提交应用程序。
第4章,编程模型
与许多专有的大数据处理平台不同,基于Spark的大数据处理平台,建立在统-抽象的RDD之上,这是Spark这朵小火花让人着迷的地方,也是学习Spark编程模型的瓶颈所在,充满了很深的理论和工程背景。
本章重点讲解Spark编程模型的最主要抽象,第- - 个抽象是RDD ( Resilient DistributedDataset,弹性分布式数据集),它是一.种特殊集合,支持多种来源,有容错机制,可以被缓存,支持并行操作; Spark的第二个抽象是两种共享变量,即支持并行计算的广播变量和累加器。
要理解Spark,就必须理解RDD。在学习过程中,希望能时刻警醒自己,做到不自见、不自是、不自伐、不自矜。
第5章,作业执行解析
如水的大数据,正是把自己置身名利之外,一切以解决实际问题为核心。研究Spark的作业执行,是把握大数据解决实际问题的关键。本章通过对Spark组件、RDD图、DAG图的讲解,基于Standalone和YARN的Spark架构的分析,以及Spark 事件流的分析,通过构建运行时环境、应用程序转换DAG图、调度执行DAG图、销毁运行时环境完成整个作业执行生命周期。
第6章,Spark SQL与DataFrame
Spark一栈式解决方案中,最常用、最简单、信而美的部分就是Spark SQL;无论你是技术大神,还是“小鲜肉”;学习和研究Spark,都应该从接触Spark SQL开始,一起把SparkSQL当成征服大数据必须超越的目标。
本章重点讲解Spark SQL概述,包括发展、架构、特点、性能等一系列知识;以及SparkSQL的DataFrame编程抽象,从DataFrame与RDD的区别,创建DataFrame, DataFrame 操作,以及RDD转化成DataFrame几个方面进行了说明;随后对DataFrame的数据源,从结构化数据(Parquet文件、JSON文件)、Hive表,以及通过JDBC连接外部数据源进行了归纳,最后补充了分布式SQL Engine和性能调优的知识。
第7章,深入了解Spark Streaming
如何才能有弹性地学习,那就从掌握大数据的实时处理开始。考虑具体实现,如果使用MapReduce框架,实时性将无法得到保证;而如果采用Storm或者S4等流式处理框架,虽然保证了实时性,但实现的复杂度大大提高。Spark Streaming在两者之间找到了一个平衡点,能够以准实时的方式容易地实现较为复杂的数据处理。
本章重点探讨大数据处理中基于实时数据流的数据处理,从DStream编程模型开始,针对DStream的基本输人源和高级输人源,以及DStream的转换和输出进行了详细讲解,在此基础上,又分别对性能调优和容错处理进行了说明,最后以一个案例对本章知识进行总结。
第8章,Spark ML lib与机器学习
大数据处理之机器学习,是实现传统机器学习算法到快速机器学习算法跨越的开始,也是我们实现自身跨越的起点。当前,各种分布式计算平台纷纷推出了各式各样的机器学习实现库,如Hadoop平台上的Mahout, Spark 平台上的机器学习框架MLlib等。无疑,Spark 的MLib受益于Spark基于内存迭代的分布式计算特性,而成为快速机器学习算法平台中极为出色的实现。
本章首先对机器学习相关概念进行简要介绍,然后对Spark MLlib的构成及其支持的常见机器学习问题进行详细描述,并通过具体的理论和实例对MLlib的优势之处进行扩展分析。除了SparkMLlib,还对SparkML库的主要概念、算法及实例进行说明。Spark的ML库基于DataFrame提供高性能API,并针对机器学习算法标准化,将多种算法结合到流水线上来,使机器学习编程更加容易,更加高效。
第9章,GraphX图计算框架与应用
言之易而为之难,学习大数据之图计算,就是从“浊”中找出“静”的规律,达到“清”的境界;从“安”中找出“动”,达到“生”的状态。
本章重点介绍Spark平台中的GraphX图计算框架、GraphX编程相关图操作和图算法,以及针对不同的应用场景进行图计算应用实践。
第10章,SparkR (R on Spark)
如果说我们通过多年的学习积累,明白了很多概念和道理,达到了“有"的境界,那么如何对“有"进-一步挖掘,达到“无”的境界,最终达到“有"“无"相生,相须为用,这是我们的追求。无疑,大数据之SparkR,为“有"挖掘“无”提供了一种尝试。
随着Spark版本的更新,最终SparkR将会和Spark ML共同构建出Spark在机器学习领域的优势地位。本章从SparkR讲起,描述R语育和Spark之间的关系,展示如何安装及运行SparkR,以及一些常用案例,希望能够起到抛砖引玉的效果。
第11章,大数据分析系统
如何探究数据本质,基于大数据的统计分析、机器学习、数据挖掘都是探寻之旅必不可少的环节。针对大数据分析而言,数据存储、数据采集、数据清洗、统计分析,是其必不可少的部分。本章基于智能终端日志,重点讲解如何构建大数据分析系统,对应用架构进行讲解,以及简单的代码实现,希望可以起到抛砖引玉的效果。
从Spark 1.3 开始,Spark 将SchemaRDD统一成DataFrame进行处理,参考业务实现代码时,请自行按照DataFrame进行理解,具体可以参考第6章。
第12章,系统资源分析平台
对于大多数互联网企业来说,与大数据分析岗位相比,大数据运维显得微不足道,孰不知,合理地利用资源,节约也是一种价值。大数据运维必须掌握的一-件基本技能是,构建系统监控环境,对系统环境、业务进程状态、业务应用情况进行监控。本章重点讲解如何构建基于大数据平台的系统资源查询平台,对应用架构进行解析,并进行简单的代码实现,希望可以起到抛砖引玉的效果。
第13章,在Spark.上训练LR模型
Spark是基于MapReduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是,Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce算法。
例如,搜索广告是搜索引擎公司的主要收入来源,当前的收费模式是按用户点击广告的次数收费,而广告位的个数是有限的。我们可以采用逻辑回归( Logistic Regression, LR)模型来预测用户行为,提高广告点击率,从而提高公司的收益。由于广告数据的庞大,我们可以使用Spark平台训练逻辑回归模型。
本章基于Spark平台,重点介绍MLlib机器学习库中的LR源码部分,以及如何对大数据进行LR模型训练,并检验模型的准确性。
第14章,获取二级邻居关系图
对于大部分社交关系来说,只获得好友的信息是远远不够的,只有获得好友的好友的信息进行推荐,才能更好地扩展用户的朋友圈。例如,秘密App中,好友的好友的秘密,传播的范围更广,信息量更丰富。
Spark GraphX模型应用于用户网络的社区发现、用户影响力、能量传递、标签传播等,可以提升用户的黏性和活跃度;而应用到推荐领域的标签推理、人群划分、年龄段预测、商品交易时序跳转,则可以提升推荐的丰富度和准确性。本章重点讲解GiraphX的PageRank算法,并基于PageRank算法实现用户的好友的好友的推荐。二跳邻居的计算GraphX没有给出现成的接口,需要自己设计和开发。
第15章,调度管理
如何对Spark调度进行有效管理,是深人认识Spark的重点,也是把握大数据时代的关键,本章重点从Spark应用程序间的调度和Spark应用程序中的调度讲起,然后讲解调度器的核心调度池,以及Job任务的调度流程,最后对调度模块进行了解读,希望对读者学习Spark有所帮助。
第16章,存储管理
做大数据,存储是基础,只有打下坚实、深厚的基础,才能在大数据时代高歌猛进。大数据之存储管理是我们学习Spark实战的基础性工作的开始,但远远不是结束。如何保证数据存储的安全性、完整性、-致性,值得我们深入研究。
第17章,监控管理
当今社会,流传着各种大数据的故事,如何才能分辨真伪?在大寒的季节,以及霜雪降临之时,不畏严寒,淡定地应对困境,利用好大数据之利器,保持松柏-一样 茂盛的势头。有效利用监控是其中最好的方式,有了监控,便可以在困境到来之时及时响应,将损失降到最低。本章重点讲解Spark相关的监控。
第18章,性能调优
大数据时代,如何才能按照自然规律办事情,做到像天地- -样有伟大的功德,像春夏秋冬一样有分明的规律,必须在实践中逐步对性能进行优化。而有时候,仅仅遵照规律也是不够的,还需要我们细微的调整,才能达到预期的平衡。
本章从文件的优化、序列化数据、缓存等内容讲起,希望能够窥一斑而知全貌,起到引导作用。
第19章,Spark-jobserver实践
无疑,Spark-jobserver 就是致力于更好地管理Job的工具,Job 生命周期虽短,但是我们可以了解更多。本章将重点讲解什么是Spark-jobserver,如何创建Sparkjobserver项目,以及典型使用场景。
第20章,Spark Tachyon实战
大数据的思路,一切围绕数据,充分发挥数据的价值。
Tachyon系统专注提升计算框架与数据交互的效率,减少作业之间内存共享开销,减少作业自身内存开销,为跨计算框架数据交互提供更好的内存共享,合乎数据之道。
本章重点讲述Tachyon分布式文件系统,比较了HDFS和Tachyon两种分布式文件系统的区别,对Tachyon的设计原理和特性进行了说明;并通过部署、API、 在Spark.上使用和大家一起进行Tachyon人门实践;作为补充,还对容错机制进行了分析。
现在可以开启你的Tachyon之旅,在大数据的疆域驰骋,或许能带来超乎想象的效率体验。
由于内容过多,小编就不在此多做介绍啦,需要本【Spark核心技术与高级应用】技术文档的小伙伴,可以转发关注小编,++++++ V x ①⑧①③③⑤③②⑨⑦ 就可以获取了!
阅读本书的可能受益:
●爱好者一 可加深对大数据生 态环境发展趋势的理解,爱上大数据和Spark,开启日后探究之旅。
●大数据开发人员一 理解原理 、编程思想、应用实现与技术优缺点。
●大数据运维人 员一了 解Spark框架、编程思想与应用情况,保障运行环境稳定与资源的合理利用。
●大数据科学家 与算法研究者一深入理解原理 与应用场景,降低学习成本,开启通往高阶之路的大门。