当前位置: 首页 > article >正文

Spark了解

目录

1 概述

 2 发展

3 Spark和Hadoop

4 Spark核心模块


1 概述

        Apache Spark是一个快速、通用、可扩展的分布式计算系统,最初由加州大学伯克利分校的AMPLab开发。

        Spark可以处理大规模数据处理任务,包括批处理、迭代式算法、交互式查询和流处理等。Spark支持多种编程语言,包括Java、Scala、Python和R等。Spark的核心概念是弹性分布式数据集(Resilient Distributed Dataset,简称RDD),它是一个分布式的内存抽象,可以让开发者在内存中高效地处理数据。

        Spark还提供了许多高级工具,包括Spark SQLSpark StreamingMLlib(机器学习库)GraphX(图处理库),这些工具可以让开发者更方便地处理数据和构建分布式应用程序。

  • Spark 是一种由 Scala 语言开发的快速、通用、可扩展的大数据分析引擎
  • Spark Core 中提供了 Spark 最基础与最核心的功能
  • Spark SQL 是Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。
  • Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。

 2 发展

  • 2009 年,Spark 诞生于伯克利大学的AMPLab 实验室
  • 2010 年,伯克利大学正式开源了 Spark 项目
  • 2013 6 月,Spark 成为了 Apache 基金会下的项目
  • 2014 年 2 月,Spark 以飞快的速度成为了 Apache 的顶级项目
  • 2015 年至今,Spark 变得愈发火爆,大量的国内公司开始重点部署或者使用 Spark

3 Spark和Hadoop

 

Hadoop 的 MR 框架和Spark 框架都是数据处理框架,那么我们在使用时如何选择?

  • Hadoop MapReduce 由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。所以 Spark 应运而生,Spark 就是在传统的MapReduce 计算框架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的RDD 计算模型。

  • 机器学习中 ALS、凸优化梯度下降等。这些都需要基于数据集或者数据集的衍生数据反复查询反复操作。MR 这种模式不太合适,即使多 MR 串行处理,性能和时间也是一个问题。数据的共享依赖于磁盘。另外一种是交互式数据挖掘,MR 显然不擅长。而Spark 所基于的 scala 语言恰恰擅长函数的处理。
  • Spark 是一个分布式数据快速分析项目。它的核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比MapReduce 丰富的模型,可以快速在内存中对数据集进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法。
  • Spark Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数通信是基于内存,而 Hadoop 是基于磁盘。
  • Spark  Task 的启动时间快。Spark 采用 fork 线程的方式,而 Hadoop 采用创建新的进程的方式。
  • Spark 只有在 shuffle 的时候将数据写入磁盘,而 Hadoop 中多个 MR 作业之间的数据交互都要依赖于磁盘交互
  • Spark 的缓存机制比HDFS 的缓存机制高效。

经过上面的比较,可以看出在绝大多数的数据计算场景中,Spark 确实会比 MapReduce 更有优势。但是Spark 是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源不够导致 Job 执行失败,此时,MapReduce 其实是一个更好的选择,所以 Spark 并不能完全替代 MR

4 Spark核心模块

 

  • Spark Core

Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL, Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的

  • Spark SQL

Spark SQL 是Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)来查询数据。

  • Spark Streaming

Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。

  • Spark MLlib

MLlib 是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。

  • Spark GraphX

GraphX 是 Spark 面向图计算提供的框架与算法库。

 


http://www.kler.cn/a/2047.html

相关文章:

  • Docker_常用命令详解
  • leetcode45.跳跃游戏II
  • 中间件 redis安装
  • 解锁BL后的K40降级
  • 内容与资讯API优质清单
  • 通义千问对接FreeSWITCH实现大模型呼叫中心
  • seata服务搭建
  • 图形视图框架QGraphicsScene(场景,概念)
  • Vue中常使用的三种刷新页面的方式
  • 12个 Python 装饰器让代码cleaner
  • Android Lacent Aop 字节编码修复7.1系统Toast问题(WindowManager$BadTokenException)
  • 手动创建数据集(csv文件),用于Pytorch深度学习
  • 【运维】运维常用命令
  • 【Linux】学会这些基本指令来上手Linux吧
  • iOS 紧急通知
  • nodejs篇 express(1)
  • Python 可视化最频繁使用的10大工具
  • RK3588平台开发系列讲解(NPU篇)NPU调试方法
  • LeetCode--缺失的第一个正数(41)和 接雨水(42)
  • Elastic 之 elasticsearch 基本操作
  • 【数据结构】千字深入浅出讲解队列(附原码 | 超详解)
  • 【设计模式】UML、RUP、元素、关系、视图
  • 二分查找法
  • 经典七大比较排序算法 · 下 + 附计数和基数排序
  • 如何用matlab工具箱训练一个SOM神经网络
  • synchronized 加锁 this 和 class 的区别