分布式计算框架-Spark初步理解

本文深入探讨了Spark作为大数据处理领域的高效计算框架,不仅对比了Spark与Hadoop在性能上的优势,还详细阐述了Spark的适用场景、生态系统以及核心概念。Spark通过其独特的设计,统一解决了复杂批量处理、基于历史数据的交互式查询和实时数据流处理的需求,展示了其在不同场景下的强大应用能力。

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

    最开始关注Spark,是在csdn首页上看到一篇文件《Spark核心开发者:性能超Hadoop百倍,算法实现仅有其1/10或1/100》的,看着标题确实感觉比较年逼的。后来稍微研究了一下,其实发现,这个描述有点问题。Spark是一个基于内存的纯计算框架,而hadoop是包括计算框架的mapreduce和分布式存储hdfs,所以应该描述为Spark性能超Hadoop的mapreduce计算性能百倍。当然,这有点扣字眼了。

    Spark只是一个计算框架,它本身并不包括对数据的存储,就像跟实时分布式系统Storm是一样的。它是一个可以基于hadoop的hdfs,也可以基于hbase之上的处理框架,来看看它的框架就明白了:

 

Spark适用场景

目前大数据处理场景有以下几个类型:

  1. 复杂的批量处理(batch data processing),偏重点在于处理海量数据的能力,至于处理速度,不太关注,通常的时间可能是在数十分钟到数小时等
  2. 基于历史数据的交互式查询(interactive query),通常的时间在数十秒到数十分钟之间
  3. 基于实时数据流的数据处理(Streaming data processing),通常在数百毫秒到数秒之间

目前对以上三种场景需求,都有比较成熟的处理框架,第一种可以用hadoop的mapreduce来进行批量海量数据处理,而impala可以进行交互式查询,对于实时流式数据处理,有比较成熟的Storm分布式处理框架。但三者都是比较独立,各自维护一套成本比较高,而Spark的出现,就想统一解决以上三种需求的酷

简单总结一下,Spark场景有以下几个:

  1. Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小
  2. 由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
  3. 数据量不是特别大,但又有统计分析的需求,又有实时需求。
  4. 总的来说Spark的适用面比较广泛且比较通用。

Spark生态系统

  1. Spark Streaming

    Spark流式处理框架,跟twitter的Storm系统类似。
  2. Shark(Hive on Spark)

 

Spark核心概念

  1. Rdd(Resilient Distributed Dataset,弹性分布数据集)

    rdd是Spark对操作对象分布式内存数据的抽象,是计算的基本单元,这个先简单说一下,以后找个时间再好好说说。
  2. Lineage(血统依赖算法)

    加速内存数据加载的一种算法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值