第9章 Spark
第9章 Spark
提纲 91 Sparki概述 92 Spark生态系统 93 Spark运行架构 9. 4 Spark SQL 95 Spark的部署和应用方式 96 Spark编程实践
提纲 • 9.1 Spark概述 • 9.2 Spark生态系统 • 9.3 Spark运行架构 • 9.4 Spark SQL • 9.5 Spark的部署和应用方式 • 9.6 Spark编程实践
9.1 Sparki概述 9.1.1Spak简介 91.2 Scala简介 9.13 Spark与 Hadoop的比较
9.1 Spark概述 9.1.1 Spark简介 9.1.2 Scala简介 9.1.3 Spark与Hadoop的比较
91.1 Spark简介 Spark最初由美国加州伯克利大学( UCBerkeley)的AMP 实验室于2009年开发,是基于内存计算的大数据并行计算 框架,可用于构建大型的、低延迟的数据分析应用程序 2013年 Spark加入 Apache孵化器项目后发展迅猛,如今已 成为 Apache软件基金会最重要的三大分布式计算系统开源 项目之一( Hadoop、 Spark、 Storm) Spark在2014年打破了 Hadoop保持的基准排序纪录 spark/206个节点/23分钟/100TB数据 Hadoop.2000个节点/72分钟/100TB数据 Spark用十分之一的计算资源,获得了比 Hadoop快3倍 的速度
9.1.1 Spark简介 •Spark最初由美国加州伯克利大学(UCBerkeley)的AMP 实验室于2009年开发,是基于内存计算的大数据并行计算 框架,可用于构建大型的、低延迟的数据分析应用程序 •2013年Spark加入Apache孵化器项目后发展迅猛,如今已 成为Apache软件基金会最重要的三大分布式计算系统开源 项目之一(Hadoop、Spark、Storm) •Spark在2014年打破了Hadoop保持的基准排序纪录 •Spark/206个节点/23分钟/100TB数据 •Hadoop/2000个节点/72分钟/100TB数据 •Spark用十分之一的计算资源,获得了比Hadoop快3倍 的速度
91.1 Spark简介 Spark具有如下几个主要特点: 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算 容易使用:支持使用 Scala、Java、 Python和R语言进行编程,可以通过 Spark Shell进行交互式编程 通用性: Spark提供了完整而强大的技术栈,包括SL查询、流式计算 、机器学习和图算法组件 ˉ运行模式多样:可运行于独立的集群模式中,可运行于 Hadoop中,也 可运行于 Amazon ec2等云环境中,并且可以访问HDFS、 Cassandra、 HBase、Hive等多种数据源
9.1.1 Spark简介 Spark具有如下几个主要特点: •运行速度快:使用DAG执行引擎以支持循环数据流与内存计算 •容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过 Spark Shell进行交互式编程 •通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算 、机器学习和图算法组件 •运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也 可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、 HBase、Hive等多种数据源
91.1 Spark简介 Spark如今已吸引了国内外各大公司的注意,如腾讯、淘宝、百度、亚马 逊等公司均不同程度地使用了Spak来构建大数据分析应用,并应用到实 际的生产环境中 op 2013年7月 2014年1月 2014年7月 2015年1月2015年7月 2016年1月 图16-1谷歌趋势:Spak与 Hadoop对比
9.1.1 Spark简介 图16-1 谷歌趋势:Spark与Hadoop对比 Spark如今已吸引了国内外各大公司的注意,如腾讯、淘宝、百度、亚马 逊等公司均不同程度地使用了Spark来构建大数据分析应用,并应用到实 际的生产环境中
9.1.2Scaa简介 Scala是一门现代的多范式编程语言,运行于Java平台(JV Java虚拟机),并兼容现有的Java程序 Scala的特性 Scala具备强大的并发性,支持函数式编程,可以更好地支持分布 式系统 . Scala语法简洁,能提供优雅的APIⅠ Scala兼容Java,运行速度快,且能融合到 Hadoop生态圈中 scaa是 Sparkl的主要编程语言,但 Spark还支持Java、 Python、R 作为编程语言 Scala的优势是提供了REPL(Read-Eval- Print Loop,交互式解释 器),提高程序开发效率
9.1.2 Scala简介 Scala是一门现代的多范式编程语言,运行于Java平台(JVM, Java 虚拟机),并兼容现有的Java程序 Scala的特性: •Scala具备强大的并发性,支持函数式编程,可以更好地支持分布 式系统 •Scala语法简洁,能提供优雅的API Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中 Scala是Spark的主要编程语言,但Spark还支持Java、Python、R 作为编程语言 Scala的优势是提供了REPL(Read-Eval-Print Loop,交互式解释 器),提高程序开发效率
9.1.3Spak与 Hadoop的对比 Hadoop存在如下一些缺点 表达能力有限 磁盘IO开销大 ·延迟高 任务之间的衔接涉及IO开销 在前一个任务执行完成之前,其他任务就无法 开始,难以胜任复杂、多阶段的计算任务
9.1.3 Spark与Hadoop的对比 Hadoop存在如下一些缺点: •表达能力有限 •磁盘IO开销大 •延迟高 •任务之间的衔接涉及IO开销 •在前一个任务执行完成之前,其他任务就无法 开始,难以胜任复杂、多阶段的计算任务
9.1.3Spak与 Hadoop的对比 Spark在借鉴 Hadoop MapReduce优点的同时,很好地解决了 MapReduce所面临的问题 相比于 Hadoop Mapreduce, Spark主要具有如下优点: Spark的计算模式也属于 MapReduce,但不局限于Map和 Reduce操作 ,还提供了多种数据集操作类型,编程模型比 Hadoop Mapreduce更 灵活 Spak提供了内存计算,可将中间结果放到内存中,对于迭代运算 效率更高 Spark基于DAG的任务调度执行机制,要优于 Hadoop MapReduce的 迭代执行机制
9.1.3 Spark与Hadoop的对比 Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了 MapReduce所面临的问题 相比于Hadoop MapReduce,Spark主要具有如下优点: •Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作 ,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更 灵活 •Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算 效率更高 Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的 迭代执行机制
9.1.3Spak与 Hadoop的对比 HDE HDES HDES HDIS 选代1 (a) Hadoop MapReduce执行流程 读取 内存中 内存中 迭代1 迭代2 存储在 内存中 查询2 图16-2 Hadoop与 Spark的执行流程对比 (b) Spark执行流程
9.1.3 Spark与Hadoop的对比 图16-2 Hadoop与Spark的执行流程对比