Spark概述

目录

一、Spark的产生背景

二、什么是Spark

三、Spark的特点

四、Spark重要版本的发布(待完善)


一、Spark的产生背景

1)MapReduce的局限性

  • 计算性能不是很好,MR的Task都是进程级别的,运行在JVM中,JVM的启动和销毁会消耗比较多资源
  • 不适合交互式/多迭代计算,因为中间数据落地次数较多,会产生较多的磁盘IO、序列化、网络IO频繁
  • 不适合流式处理
  • 编程繁琐,要实现Map、Reduce、Job。

2)各种计算框架各自为战

如果业务场景既有离线处理、又有实时处理,需要搭建使用多套框架,导致学习、维护都比较麻。

因此诞生了像Spark、Flink这样的批流一体框架,一个框架可以处理N多不同的业务场景。

二、什么是Spark

通过Spark的产生背景,应该初步知道了Spark是做大数据的离线和实时处理。再对比与MR的局限性,我们应该猜到Spark编程应该更简洁,计算性能更好,适合交互式/多迭代计算。

看一下官网(http://spark.apache.org/)的介绍:

Apache Spark™ is a unified analytics engine for large-scale data processing.

Spark用于海量数据处理的通用引擎

三、Spark的特点

1) 运算速度快

  • In-Memory:数据缓存在内存,相比于MR的落地磁盘,读写速度更快,而且Spark中间数据落地少
  • DAG: 使用DAG调度,Spark的两个动作transformation和action操作,只有当遇到action才会真正执行作业
  • Thread Model:task是线程级别的,相比于MR进程级别更加轻量级
  • 优化:延迟调度,让计算跟着数据走,而不是让数据跟着计算走==>移动计算

2) 使用简单

  • 提供了80多个高级API,方便快读编程
  • 提供交互式命令行,方便快读测试
  • 支持多种语言,例如Java、Scala、Python、R、SQL
  • 可以直接访问不同的数据源,例如JSON、CSV、ORC、Parquet、JDBC、Hive

3) 通用性

  • one stack to rule them all:一栈式解决方案
  • Spark可以用于离线处理、实时处理、机器学习、图计算

4) 部署灵活

  • 本身提供了Standlone模式,需要事先启动Spark相关服务
  • 也可以运行在Hadoop YARN、Mesos、Kubernets

四、Spark重要版本的发布(待完善)

  • 14年2月
  1. 成为顶级项目
  • Spark1.0
  1. 引入Spark SQL
  • Spark1.3
  1. 新增DataFrame API
  2. 新增Data Source V1
  • Spark1.5
  1. 引入"钨丝"计划:通过对几个底层框架的优化进一步提高Spark的性能
  • Spark1.6
  1. 新增Dataset API
  • Spark2.0 16年
  1. DataFrame和Dataset的统一
  2. 引入SparkSession,提供了一个统一的入口(SQLContext和HiveContext)
  • Spark2.3.0
  1. Data Source V2
  • 3.0做了哪些更新
  1. 动态分区修剪(Dynamic Partition Pruning),运行时过滤掉无用数据,提高性能
  2. 自适应查询执行(Adaptive Query Execution)
  3. 加速器感知调度(Accelerator-aware Scheduling),将内置支持 GPU 调度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值