Spark(一)初识Spark

  1. Spark定义:
    1. SparkApache的一个顶级项目。它是一种快速的、轻量级、基于内存、分布式迭代计算的大数据处理框架。
  2. Spark起源与发展史:
    1. Spark最初由美国加州伯克利大学(UCBerkeley)的AMP(Algorithms,Machines and People)实验室与2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。2003年加入Apache孵化器项目后的到迅猛的发展,如今已成为Apache的顶级项目。
  3. Spark优点:
    1. 处理速度快:Spark使用了先进的DAG(Directed Acycli Graph)有向无环图执行引擎,以支持循环数据流与内存计算。它在内存中处理数据的速度相较于MapReduce快大约100倍,它在磁盘中处理数据的速度相较于MapReduce快大约10倍。
    2. 易于使用:可以用多种语言来编写,如JavaScalaPythonR、SQL。它提供了80多种高级特性用于交互式并行计算。但是它的用Scala编写的。
    3. 通用性:可以用于组合SQL,流式计算和一些复杂的分析。Spark提供了很多的类库,包括SQLDataFrames、用于机器学习的MlibGraphXSpark流式计算,你可以在一个应用程序中无缝的组合使用这些类库。
    4. 可以运行在多个地方:Spark可以运行在多个地方,例如他可以运行在Hadoop的Yarn上、Apache Mesos上、Kubernetes上、standalone或云上。它可以访问多个数据源,例如访问HDFSCassandraHBaseHive和数百个其他数据源中的数据。
  4. Spark的部署的三种方式:
    1. Standalone(独立模式):它是一个简单的独立部署模式,可以手动启动一个独立的集群。还可以在一台机器上运行,大多数是用于开发测试。
    2. Apache MesosSpark可以在Apache Mesos管理的硬件集群上运行。在Mesos中部署Spark的优点包括:Spark和其他框架之间的动态分区,Spark的多个实例之间的可伸缩分区
    3. Hadoop Yarn:运行在Yarn上,不需要在独立安装Spark集群,Spark的任务所需的资源交由Yarn来调度。
  5. Spark组件:

    这里写图片描述

    1. Spark Core:Spark的核心组件,所有功能都是构建在它之上。Spark包含了最基本的最核心的功能,其中包含内存计算、任务调度、部署模式、故障恢复、存储管理等。Spark建立在RDD之上,使其可以利用一致的方式来对应不同的数据进行数据分析。
    2. Spark SQL:在Spark Core之上的引入的数据集抽象,支持结构化和半结构化数据,并且提供了DataFrame,和DataSet高级特性。它支持开发人用利用SQL来操作RDD。它也可以使用HIVE、Hbase等外部数据源作为数据支撑来进行复杂的数据分析。
    3. SparkStreaming:准实时流式计算,支持可容错,高吞吐的准实时流式计算,其核心思想就是将数据分成时间单位的小批量的数据处理单元进行处理。它可以与Kafka、Flume等集成。
    4. MLib:在Spark基于内存的一个分布式机器学习的框架
    5. GraphX:基于Spark之上的分布式的图处理框架
  6. Spark与Hadoop的MapReduce对比:
    1. Hadoop虽然已成为大数据里不可改变的标准,但是它也存在一些缺陷,特别是MapReduce计算模型,它的数据处理的延迟高、速度慢、只能进行离线的数据分心等。不能胜任快速,实时的数据分析需求。那么Spark的出现了弥补了MapReduce的缺陷。
    2. Hadoop的MapReduce存在的缺陷
      1. 表达能力有限:MapReduce的编程模型分为Map和Reduce,这样的模型不能适用于所有场景,难以描述比较复杂的数据库过程。
      2. IO开销大:由于程序每次都需要在磁盘中读取数据、而且Map阶段处理后的结果需要写到磁盘中,Reduce需要在磁盘中再次读取Map处理后的数据,那么这样以来对磁盘的IO开销过大。
      3. 延迟高:由于一个任务需要分解成多个MapReduce去执行,而且每个MapReduce对IO开销比较大,并且这几个MapReduce是串行计算的,一个执行完成以后另一个才可以开始执行,那么这样以来一个任务从开始到结束会消耗很多的时间。
      4. 代码量过多:由于MapReduce是一个编程模型,它分为Map和Reduce,那么我们在开发过程中就需要对Map和Reduce分别进行编写,如果一个任务拆分出多个MapReduce,那么代码量会很多很多。
    3. Spark相较于MapReduce优点:
      1. Spark的模式也属于MapReduce,但是不局限于Map和Reduce,它借鉴了MapReduce的优点,屏蔽了MapReduce的缺点。
      2. Spark是基于内存计算的,它的处理的中间结果存储在内存中,大大减少了IO的开销,这样就加快了计算速度,提高了效率。
      3. Spark是基于DVG机制进行迭代计算的,它优于MapReduce的迭代计算。
      4. Spark提供了更加简洁、高效、功能强大的API,减少了大量的代码量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值