●9.1sak概述 9.11Spak简介 9.12 Scala简介 9.13 Spark与 Hadoop的比较 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1 Spark概述 9.1.1 Spark简介 9.1.2 Scala简介 9.1.3 Spark与Hadoop的比较
9.11Spa简介 Spark最初由美国加州伯克利大学( UCBerkeley)的AMP 实验室于2009年开发,是基于内存计算的大数据并行计算 框架,可用于构建大型的、低延迟的数据分析应用程序 2013年 Spark加入 Apache孵化器项目后发展迅猛,如今已 成为 Apache软件基金会最重要的三大分布式计算系统开源 项目之一( Hadoop、 Spark、 storm) spark在2014年打破了 Hadoop保持的基准排序纪录 Spark206个节点/23分钟/100TB数据 Hadoop/2000个节点/72分钟/100TB数据 Spark用十分之一的计算资源,获得了比 Hadoop73倍 的速度 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 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倍 的速度
9.11Spa简介 Spark具有如下几个主要特点: 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算 ·容易使用:支持使用 Scala、Java、 Python和R语言进行编程,可以通过 Spark shel进行交互式编程 通用性: Spark提供了完整而强大的技术栈,包括S①L査询、流式计算 机器学习和图算法组件 ˉ运行模式多样:可运行于独立的集群模式中,可运行于 Hadoop中,也 可运行于 Amazon eo2等云环境中,并且可以访问HDFS、 Cassandra、 HBase、Hive等多种数据源 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.1 Spark简介 Spark具有如下几个主要特点: •运行速度快:使用DAG执行引擎以支持循环数据流与内存计算 •容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过 Spark Shell进行交互式编程 •通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算 、机器学习和图算法组件 •运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也 可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、 HBase、Hive等多种数据源
911a收简介 Spark如今已吸引了国内外各大公司的注意,如腾讯、淘宝、百度、亚马 逊等公司均不同程度地使用了 Spark来构建大数据分析应用,并应用到实 际的生产环境中 Spark Hadoop 2013年7月 2014年1月 2014年7月 2015年 F1月 2015年7月 2016年1月 图16-1谷歌趋势: Spark与 Hadoop对比 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.1 Spark简介 图16-1 谷歌趋势:Spark与Hadoop对比 Spark如今已吸引了国内外各大公司的注意,如腾讯、淘宝、百度、亚马 逊等公司均不同程度地使用了Spark来构建大数据分析应用,并应用到实 际的生产环境中
幽912ca简介 Scala是一门现代的多范式编程语言,运行于Java平台(JⅥM, Java虚拟机),并兼容现有的Java程序 Scala的特性: ˆ Scala具备强大的并发性,支持函数式编程,可以更好地支持分布 式系统 Scala语法简洁,能提供优雅的API Scala兼容Java,运行速度快,且能融合到 Hadoop生态圈中 Scala是 Spark的主要编程语言,但Spak还支持Java、 Python、R 作为编程语言 Scala的优势是提供了REPL( Read-Eval-Print Loop,交互式解释 器),提高程序开发效率 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 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.13Spak与 Hadoop的对比 Hadoop存在如下一些缺点 表达能力有限 磁盘IO开销大 ·延迟高 任务之间的衔接涉及IO开销 在前一个任务执行完成之前,其他任务就无法 开始,难以胜任复杂、多阶段的计算任务 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.3 Spark与Hadoop的对比 Hadoop存在如下一些缺点: •表达能力有限 •磁盘IO开销大 •延迟高 •任务之间的衔接涉及IO开销 •在前一个任务执行完成之前,其他任务就无法 开始,难以胜任复杂、多阶段的计算任务
9.13Spak与 Hadoop的对比 Spak在借鉴 Hadoop MapReduce优点的同时,很好地解决了 MapReduce所面临的问题 相比于 Hadoop map reduce,spak主要具有如下优点: Spark的计算模式也属于 MapReduce,但不局限于Map和 Reduce操作 ,还提供了多种数据集操作类型,编程模型比 Hadoop map reduce更 灵活 spak提供了内存计算,可将中间结果放到内存中,对于迭代运算 效率更高 Spark基于DAG的任务调度执行机制,要优于 Hadoop Map reduce的 迭代执行机制 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.3 Spark与Hadoop的对比 Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了 MapReduce所面临的问题 相比于HadoopMapReduce,Spark主要具有如下优点: •Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作 ,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更 灵活 •Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算 效率更高 Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的 迭代执行机制
9.13Spak与 Hadoop的对比 HDFS 迭代1 迭代2 查询1 结果1 查询2 结果2 (a) Hadoop MapReduce执行流程 读取 存储在 读取 内存中 内存 内存中 迭代1 查询1 内存中 查询2 结果2 图16-2 Hadoop与 Spark的执行流程对比 (b) Spark执行流程 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.3 Spark与Hadoop的对比 迭代1 迭代2 HDFS 读取 HDFS 写入 HDFS 读取 HDFS 写入 ... 查询1 查询2 ... 结果1 结果2 (a) Hadoop MapReduce执行流程 迭代1 迭代2 读取 存储在 内存中 ... 输入 输入 输入 存储在 内存中 读取内存 查询1 查询2 ... 结果1 结果2 输入 存储在 内存中 (b) Spark执行流程 图16-2 Hadoop与Spark的执行流程对比
9.13Spak与 Hadoop的对比 使用 Hadoop进行迭代计算非常耗资源 Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间 结果作运算,避免了从磁盘中频繁读取数据 110 0.9 Hadoop Spark 图16-3 Hadoop与 Spark执行逻辑回归的时间对比 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.1.3 Spark与Hadoop的对比 110 0.9 0 20 40 60 80 100 120 Hadoop Spark 执行时间(s) 图16-3 Hadoop与Spark执行逻辑回归的时间对比 •使用Hadoop进行迭代计算非常耗资源 •Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间 结果作运算,避免了从磁盘中频繁读取数据
●9:2sa生态系统 在实际应用中,大数据处理主要包括以下三个类型 ·复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间 基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间 基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间 当同时存在以上三种场景时,就需要同时部署三种不同的软件 比如: MapReduce/mpaa/ Storm 这样做难免会带来一些问题 ·不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格 式的转换 不同的软件需要不同的开发和维护团队,带来了较高的使用成本 比较难以对同一个集群中的各个系统进行统一的资源协调和分配 《大数据技术原理与应用(第2版 厦门大学计算机科学系 林子雨 ziyulin@xmu. edu
《大数据技术原理与应用(第2版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 9.2 Spark生态系统 在实际应用中,大数据处理主要包括以下三个类型: •复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间 •基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间 •基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间 当同时存在以上三种场景时,就需要同时部署三种不同的软件 •比如: MapReduce / Impala / Storm 这样做难免会带来一些问题: •不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格 式的转换 •不同的软件需要不同的开发和维护团队,带来了较高的使用成本 •比较难以对同一个集群中的各个系统进行统一的资源协调和分配