Spark学习(一)Spark介绍

本文介绍了Spark,一个比Hadoop更快、更适用于迭代计算的内存计算框架,详细对比了两者在速度、编程语言、易用性、稳定性和生态系统的差异。Spark包含Spark Core、Spark SQL、Spark Streaming等多个组件,是大数据处理的重要工具,而Hadoop在存储和资源调度方面仍有其价值。Spark与Hadoop的结合成为大数据领域热门技术栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是spark

spark是基于内存计算的大数据并行计算框架,也是hadoop中的mapreduce的替代方案,但和mapreduce又有许多不同。      

Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Spark Streaming用于实时流式计算,Spark MLlib用于机器学习,Spark GraphX用于图计算。
      Spark主要用于大数据的计算,而Hadoop以后主要用于大数据的存储(比如HDFS、Hive、HBase等),以及资源调度(Yarn)。
      Spark+Hadoop的组合,是未来大数据领域最热门的组合,也是最有前景的组合!

二、对比hadoop

1、最明显的一点,spark要比mapreduce快的多,官网的数据是,spark在硬盘上运行要比mapreduce快上十倍以上,而在内存中则是快到百倍,主要原因有以下几点(个人总结,也许不够全面)

  • spark是基于内存计算,而hadoop基于磁盘。很显然spark速度更快且更适合迭代运算。
  • Spark对分散的数据集进行抽样,创新地提出RDD(ResilientDistributedDataset)的概念,所有的统计分析任务被翻译成对RDD的基本操作组成的有向无环图(DAG)。RDD可以被驻留在RAM中,往后的任务可以直接读取RAM中的数据;同时分析DAG中任务之间的依赖性可以把相邻的任务合并,从而减少了大量不准确的结果输出,极大减少了HarddiskI/O,使复杂数据分析任务更高效。从这个推算,如果任务够复杂,Spark比Map/Reduce快一到两倍。
  • mr基于进程,每个task的启动和结束都会开启或关闭进程,耗费了大量的时间。而spark基于线程,每次只有启动excutor的时候会启动进程,task都是在线程中进行。
  • spark采用DAG(有向无环图,后面会介绍),避免了冗余的mr操作。

2、hadoop的底层是java编写的,而spark是用scale编写的,虽然两者都提供了丰富的api可以支持不同的语言,但想深入学习一下spark最好还是使用scale。

3、相比hadoop 的一个mr程序需要写map,reduce,driver等一大堆类和方法,spark程序则要精简的多,拿wordcount来说:

object WordCount {
  
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("WordCount");
    val wordCounts= new SparkContext(conf)
                    .textFile("hdfs://spark1:9000/spark.txt", 1)
                    .flatMap { line => line.split(" ") }   
                    .map { word => (word, 1) }   
                    .reduceByKey { _ + _ }
                    .foreach(wordCount => println(wordCount._1 + " appeared " + wordCount._2 + " times."))  
  }
  
}

只需两行代码(虽然第二行略长了一些),就完成了一个wordCount,要知道写一个mr的wordcount得多麻烦。而这也是因为spark的RDD对许多操作进行了抽象,使得我们更方便使用。

4、相比hadoop,spark较为不稳定,由于大量数据被缓存在内存中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Reduce。也是因为数据存在内存中的原因,当数据量过大超出内存空间时会产生非常可怕的后果。所以在处理大量数据方面还是使用hadoop较为合理

三、生态系统

(参考自:https://blog.youkuaiyun.com/zhang123456456/article/details/78207184

Spark生态圈也称为BDAS(伯克利数据分析栈),是伯克利APMLab实验室打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成来展现大数据应用的一个平台。伯克利AMPLab运用大数据、云计算、通信等各种资源以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。该生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。

Spark生态圈以Spark Core为核心,从HDFS、Amazon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值