Spqrk是一个快速、通用的计算引擎
Spark的特点:
1.速度快,与MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上.Spqrk实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流
2.使用简单.Spark支持Scala、Java、Python、R的API,还支持超过80种高级算法,使用户可以快速构建不同的应用.而且Spark支持交互式的Python和Scala的Shell,key非常方便地在这些shell种使用spqrk集群来验证解决问题的方法
3.通用.Spark提供了统一的解决方案.spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLiln)和图计算(GraphX).这些不同类型的处理都可以在同一个应用中无缝使用.Spark统一的解决方案非常具有吸引力,企业想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本
4.兼容好.Spark可以非常方便的与其他开源产品进行融合.Spark可以使用YARN、Mesos作为它的资源管理和调度器;可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等.这对于部署Hadoop集群的用户特别重要,因此不需要做任何数据迁移就可以使用Spark的强大处理能力.Spark也可以不依赖与第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易的部署和使用Spark.此外,spark还提供了在EC2上部署Standalone的Spark集群的工具
Spark是一个分布式计算引擎,由Scala语言编写的计算机框架,基于内存的快速,通用,可扩展的大数据分析引擎
Spark为什么比MapReduce快:
1.Spark积极使用内存.MR框架中的一个job包括一个map阶段(一个或多个maptask)和一个reduce阶段(一个或多个reduce Task).如果业务处理逻辑复杂,此时
此时需要将多个 job 组合起来;然而前一个job的计算结果必须写到HDFS,才能交给 后一个job。这样一个复杂的运算,在MR框架中会发生很多次写入、读取操作;
Spark框架可以把多个map reduce task组合在一起连续执行,中间的计算结果不需 要落地;
2.多进程模型(MR)vs多线程模型(Spark)
MR框架中的的Map Task和Reduce Task是进程级别的,而Spark Task是基于线程模型的。MR框架中的 map task、
reduce task都是 jvm 进程,每次启动都需要重新申请资源,消耗了不必要的时间。 Spark则是通过复用线程池中的线程来减少启动、关闭task所需要的系统开销。
Spark集群部署模式
Spark支持3种集群部署模式: Standalone、Yarn、 Mesos;
1.Standalone模式
2.Spark on Yarn 模式
3.Spark On Mesos模式
4:粗粒度模式:每个应用程序的运行环境由一个Dirver和 若干个Executor组成,其中,每个Executor占用若干资源,内部可运行多个Task。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过 程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。
5:细粒度模式:鉴于粗粒度模式会造成大量资源浪费, Spark On Mesos还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,核心思想是按需分配。
相关术语
Application 用户提交的spark应用程序,由集群中的一个driver 和 许多 executor 组成
Application jar 一个包含spark应用程序的jar,jar不应该包含 Spark 或 Hadoop 的 jar,这些jar应该在运行时添加
Driver program 运行应用程序的main(),并创建SparkContext(Spark应用程 序)
Cluster manager 管理集群资源的服务,如standalone, Mesos,Yarn
Deploy mode 区分 driver 进程在何处运行。在 Cluster 模式下,在集群内部运 行 Driver。 在 Client 模式下, Driver 在集群外部运行
Worker node 运行应用程序的工作节点
Executor 运行应用程序 Task 和保存数据,每个应用程序都有自己的
executors,并且各个executor相互独立
Task executors应用程序的最小运行单元
Job 在用户程序中,每次调用Action函数都会产生一个新的job,也就是说每个 Action 生成一个job
Stage 一个 job 被分解为多个 stage,每个 stage 是一系列 Task 的集合
| MapReduce | Spark |
| 数据存储结构:磁盘HDFS文件系 统的split | 使用内存构建弹性分布式数据集RDD对数 据进行运算和cache |
| 编程范式: Map + Reduce 仅提供两个操作,表达力欠缺 | 提供了丰富的操作,使数据处理逻辑的代 码非常简短 |
| 计算中间结果落到磁盘, IO及序列 化、反序列化代价大 | 计算中间结果在内存中,维护存取速度比 磁盘高几个数量级 |
| Task以进程的方式维护,需要数秒 时间才能启动任务 | Task以线程的方式维护对于小数据集读取 能够达到亚秒级的延迟 |
Spark是一个由Scala编写的分布式计算框架,提供统一解决方案,适用于批处理、交互式查询、实时流处理、机器学习和图计算。Spark速度比MapReduce快,因为它积极使用内存并采用多线程模型。它可以与多种开源产品融合,如YARN和Mesos,并有Standalone部署模式。Spark的应用包括多阶段计算,其任务执行更高效,避免了MapReduce中频繁的磁盘I/O。
681

被折叠的 条评论
为什么被折叠?



