[完]Spark 基础知识

Spark相比Hadoop具有更快的运行速度,使用内存计算减少IO开销,提供易用的编程接口和丰富的技术栈。Spark生态系统包括Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件,适用于大数据处理的多种场景。Spark运行框架基于RDD和DAG,通过Stage调度执行任务,具有高效容错性和数据本地性优化。Spark SQL作为数据仓库组件,支持SQL查询并与Hive兼容。Spark Streaming提供实时流数据处理能力,使用DStream抽象处理数据流。
摘要由CSDN通过智能技术生成

为了使程序运行更快,Spark提供了内存计算,减少了迭代计算时的IO开销;为了使编程更容易,Spark使用简练、优雅的Scala语言编写,基于Scala提供了交互式编程体验。与Hadoop相比,Spark使用十分之一的计算资源,可获得比Hadoop快3倍的速度。

一、Spark与Hadoop

Spark特点:

  • 运行速度快:采用DAG(Directed Acyclic Graph,有向无环图)执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MR快上百倍,基于磁盘的速度也能快十倍。
  • 容易使用:支持Scala、Java、Python和R语言进行编程。
  • 通用性:提供完整而强大的技术栈,包括SQL查询,流失计算、机器学习和图算法组件。
  • 运行模式多样:可运行于独立的集群模式中、Hadoop中、也可运行在Amazon EC2云环境中,可访问HDFS、Cassandra、HBase、Hive等数据源。

Scala是一种现代的多范式编程语言,集成了面向对象和函数式语言的特性;从小脚本到建立大系统的编程任务均可胜任;运行在JVM上,兼容Java程序,能融合到Hadoop生态圈;具有强大的并发性,支持分布式系统。

Hadoop缺点:

  • 表达能力有限。计算都要转换成Map和Reduce操作,难以描述复杂的数据处理过程。
  • 磁盘IO开销大。每次执行都需从磁盘读数据,计算过程中,需要将中间结果写入磁盘。
  • 延迟高。一次计算分解成一些列按顺序执行的MR任务,任务间衔接涉及IO开销,产生较高延迟,且一个任务完成前,其他任务无法开始。难胜任复杂、多阶段计算任务。

Spark与Hadoop相比:

  • 其计算模式也属于MR,但不局限与此,还提供多种数据集操作类型(RDD操作),编程模型更加灵活;
  • Spark提供内存计算,中间结果放在内存中,IO开销,延迟低,拥有更高地迭代运算效率;
  • 基于DAG任务调度执行机制,由于MR迭代执行机制。
  • 使用Hadoop需要编写不少相对底层的代码,而Spark提供高层次、简洁的API。
  • Spark主要替代Hadoop中的MR,而不能完全替代Hadoop,它很好地融入了Hadoop生态圈,可借助于YARN实现资源调度管理,借助HDFS实现分布式存储。
  • Hadoop可使用廉价、异构的机器实现分布式存储和计算,而Spark对硬件(内存、CPU)要求稍高。

二、Spark生态系统

Spark的设计遵循“一个软件栈满足不同应用场景”的理念。其生态系统主要包含Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件。

  • Spark Core:包含了Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等。Spark建立在统一的抽象RDD之上,使其可以基本一致的方式应对不同的大数据处理场景。通常所说的Apache Spark,就是指Spark Core;
  • Spark SQL:它允许开发人员直接处理RDD,也可查询Hive、HBase等外部数据源。它的一个重要特点是能够统一处理关系表和RDD,使开发人员使用SQL命令进行查询,并进行复杂的数据分析;
  • Spark Streaming:支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流式计算分解成一系列短小的批处理作业。支持多种数据输入源,如Kafka、Flume、和TCP套接字。
  • MLlib(机器学习):提供常用的机器学习算法,含聚类、分类、回归、协同过滤。
  • GraphX(图计算):是Spark中用于图计算的API,可认为是Pregel在Spark上的重写和优化。

表 Spark应用场景

应用场景 时间跨度 其他框架 Spark生态系统中的组件
复杂的批量数据处理 小时级 MapReduce、Hive Spark
基于历史数据的交互式查询 分钟级、秒级 Impala、Dremel、Drill Spark SQL
基于实时数据流的数据处理 毫秒级、秒级 Storm、S4 Spark Streaming
基于历史数据的数据挖掘 Mahout MLLib
图结构数据的处理 Pregel、Hama GraphX

三、Spark运行框架

3-1 基本概念

  • RDD:Resillient Distributed DataSet,弹性分布式数据集,是分布式内存的一个抽象概念,提供一种高度受限的共享内存模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值