Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,是一种快速、通用、可扩展的大数据分析引擎,是一种与 Hadoop 相似的开源集群计算环境。
2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。
目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、SparkStreaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
apache spark和apache store的区别是什么?他们各自适用于什么样的应用场景?这是stackoverflow上的一个问题,这里整理简要版回答如下:
apache spark是基于内存的分布式数据分析平台,旨在解决快速批处理分析任务、迭代机器学习任务、交互查询以及图处理任务。其最主要的特点在于,spark使用了rdd或者说弹性分布式数据集。 rdd非常适合用于计算的流水线式并行操作。rdd的不变性(immutable)保证,使其具有很好的容错能力。如果您感兴趣的是更快地执行hadoop mapreduce作业,spark是一个很好的选项(虽然必须考虑内存要求)。spark相对于hadoop mr来说,除了性能优势之外,还有大量丰富的api,这使得分布式编程更高效。
spark架构图如下,总体结构非常简洁,没什么需要多说的,这里对spark的几个细节补充解读如下:
每个spark应用程序有自己的执行进程,进程以多线程的方式执行同一个应用的不同任务(tasks)。
因为不同的spark应用是不同进程,所以无论是在driver端还是executor端,不同用程序都是互相隔离的,在没有集群外存储的情况下,应用之间不能共享数据。
spark对底层集群管理器是不可知的。通常能做集群进程管理的容器,都可以管理spark程序。例如mesos / yarn这样的集群管理也可以用于spark。当前在各大互谅网公司比较常用的就是基于yarn的spark。
driver端必须在整个应用的生命周期内存在,并且是可寻址(固定在某个机器或者说ip上),因为executor都要跟driver建立连接并通讯。
由于是driver端来负责任务的调度(指应用具体操作的输入输出控制,区别于yarn的集群管理),所以driver端最好跟executor端最好在同一个局域网(比如同一个机房),从而避免远距离通信。实时上driver端即使不做大的返回集合collect的话,如果任务分片(partitions)很多,也会有大量通信开销。
Apache Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件,非常短小精悍。
Apache Spark的5大优势:
1.更高的性能,因为数据被加载到集群主机的分布式内存中。数据可以被快速的转换迭代,并缓存用以后续的频繁访问需求。很多对Spark感兴趣的朋友可能也会听过这样一句话——在数据全部加载到内存的情况下,Spark可以比Hadoop快100倍,在内存不够存放所有数据的情况下快Hadoop 10倍。
2.通过建立在Java、Scala、Python、SQL(应对交互式查询)的标准API以方便各行各业使用,同时还含有大量开箱即用的机器学习库。
3.与现有Hadoop v1 (SIMR) 和2.x (YARN) 生态兼容,因此机构可以进行无缝迁移。
4.方便下载和安装。方便的shell(REPL: Read-Eval-Print-Loop)可以对API进行交互式的学习。
5.借助高等级的架构提高生产力,从而可以讲精力放到计算上。
同时,Apache Spark由Scala实现,代码非常简洁。
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....