微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark一Spark介绍

一、Spark的介绍

发展前景:

1、目前许多领域的应用数据爆炸式增长,与前所未有的数据收集规模;例如:电子商务、社交网络、计算机生物、自媒体、公安交通、运营商等等。
2、大规模数据处理和分析系统越来越流行和重要。具备良好特性如通用性、容错性、高性能的大数据处理引擎是当前最受欢迎的。
3、较成熟的大数据计算框架MapReduce、Storm、Flink等都已近存在,与之相比Spark是更加通用的、快速的、性能较优秀的大数据处理系统。

官网介绍:

http://spark.apache.org
1、Spark 是一种用于处理大量级别的数据的统一的分析引擎

在这里插入图片描述

2、Spark使用了DGA调度程序、查询优化程序和物理执行引擎,为批处理和流处理数据实现了高性能;官方图中 spark的计算速度是mr的100倍。
3、Spark 优于 mapreduce 的计算速度,官方对比:

在这里插入图片描述

4、Spark提供了80多个高级运算符,并且支持 java、scala、Python,R,sql 等的API ,能简单快速的使用spark构建并发程序。

在这里插入图片描述

5、Spark可以运行在任何地方,(Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud.);并且Spark支持很多的数据源。

在这里插入图片描述

6、Spark运行在Hadoop yarn 上,或者单节点模式运行;Spark支持HDFS、Hive、HBase,等几百种数据源。

补充介绍:
  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的是spark core, spark sql, spark streaming, MLlib, GraphX
  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 举报,一经查实,本站将立刻删除。

相关推荐