一、Spark的介绍
发展前景:
1、目前许多领域的应用数据爆炸式增长,与前所未有的数据收集规模;例如:电子商务、社交网络、计算机生物、自媒体、公安交通、运营商等等。
2、大规模数据处理和分析系统越来越流行和重要。具备良好特性如通用性、容错性、高性能的大数据处理引擎是当前最受欢迎的。
3、较成熟的大数据计算框架MapReduce、Storm、Flink等都已近存在,与之相比Spark是更加通用的、快速的、性能较优秀的大数据处理系统。
官网介绍:
http://spark.apache.org
1、Spark 是一种用于处理大量级别的数据的统一的分析引擎
3、Spark 优于 mapreduce 的计算速度,官方对比:
补充介绍:
1、Spark 是有scala语言编写的,scala是一种多范式编程语言,主要是为了兼容java的面向对象思想和面向函数编程的思想。这为Spark提供了交互式编程与相比于java代码更加简介的编程方式;
2、Spark 对比于MapReduce,spark是包含流处理的批处理计算框架,mr 是批处理计算框架;
3、Spark 优先使用内存,做个作业之间,Spark使用内存进行数据存储与过度,而MapReduce是需要shuffer数据到磁盘的。
4、Spark 具备了包括Map 和Reduce之外的其他多个算子,Spark可以更加方便的处理数据。
复杂的多个作业对比:
Hadoop : 磁盘 -> mapper -> reduce -> 磁盘 -> mapper -> reduce -> 磁盘
spark :磁盘 -> spark算子 -> 内存 -> spark算子 -> 磁盘
Spark是可以替代mr的一种计算引擎
但是spark使用中会产生内存过多而导致内存不够用而导致job执行失败。所以spark优于mr的计算速度,但是spark不能取代mr
二、Spark的组成
Spark的内容构成:
Spark 拥有一系列的依赖,支持包括sql,DataFrames,机器学习的MLib,图计算的GraphX,流处理的Spark Streaming
spark core提供了spark的基础和核心功能
其他的功能都是在spark core 的基础上进行扩展的
spark sql 是spark用来操作结构化数据的组件。通过spark sql, 可以使用sql 或者 HQL (Hive 方言版 sql)进行数据查询。
spark streaming 是spark平台针对实时数据进行流式计算的组件,提供了丰富的流式处理API
spark MLlib 提供了丰富的机器学习算法库,不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。
spark GraphX 是spark面向图计算提供的框架与算法库
Spark的计算架构:
大数据应用场景:
1、复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间
2、基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间
3、基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间
Spark的架构和Hadoop生态的架构类似,为主从架构
driver 运行spark程序的main函数,向Cluster Manager申请资源 和提交要运行的程序。
Cluster Manage 控制整个集群,监控worker,在yarn的模式下做资源管理器。
Executor 是在节点上执行任务的执行器。并执行由driver创建的SparkContext分发的任务。
三、Spark优缺点
spark对比MapReduce:
优点:
1、spark更加易于使用:spark提供包含map、reduce的80多个高级简单操作符,提供除java外Python、R、scala等语言的API。
2、spark比MapReduce更快:spark基于内存的计算,将计算时的中间结果缓存在内存中,减少shuffer构成的磁盘io与任务启动时间。
3、spark更加通用的计算支持:spark是支持批处理、交互式、迭代、批处理的集成系统;复杂的DAG执行引擎与高级API与工具。
4、spark具有灵活的运行支持:可以独立运行于单节点,运行在yarn或其他共享集群,可以部署和运行在云上;且支持各种数据源的访问。
缺点:
1、spark大量的资源消耗:spark在运行任务时需要大量的内存资源消耗,在多个RDD需要缓存时,需要更多的内存资源,经常内存溢出。
2、spark的学习难度更大:spark比MapReduce的编程模型更加复杂,需要花费更多的时间和精力去学习和熟悉API。
3、spark难以控制每个细粒度任务资源,而MapReduce允许用户为单独的map task和reduce task设置不同的资源,这样将利于大作业平稳运行
PS:Spark脱胎于MapReduce,且具备可以代替MapReduce的能力,并比MapReduce速度更快,通用性更强,功能更完善等等。但是Spark不能完全的代替MapReduce,在具体实际业务计算中需要考虑具体使用的场景。
文章仅为个人观点,欢迎评论与指正;
部分观点引用下文,侵权联系QQ:1445319214;
https://blog.csdn.net/weixin_39910711/article/details/89404218
https://blog.csdn.net/wyz0516071128/article/details/81219342
https://zhuanlan.zhihu.com/p/339540459
https://zhuanlan.zhihu.com/p/107690575
https://blog.csdn.net/qq_45710900/article/details/102448887
https://blog.csdn.net/kxiaozhuk/article/details/82699175
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。