"/>
侧边栏壁纸
博主头像
PySuper 博主等级

千里之行,始于足下

  • 累计撰写 218 篇文章
  • 累计创建 15 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Spark 基础入门

PySuper
2022-03-10 / 0 评论 / 0 点赞 / 35 阅读 / 0 字
温馨提示:
本文最后更新于2024-05-28,若内容或图片失效,请留言反馈。 所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

基本概念

分布式内存计算的统一分析引擎,特点是对任意类型的数据进行自定义计算

RDD:分布式内存抽象,使程序员能在大规模集群中做内存计算,并有一定的容错

  • 速度快
    • 可以将中间处理结果数据存储到内存中(内存迭代计算)
    • 提供了丰富的算子(API),可以做到复杂任务在一个Spark程序中完成
  • 易于使用
  • 通用性强
Spark
- 运行方式多
Spark

应用场景

Hadoop Spark
类型 基础平台,包含计算、存储、调度 春计算工具(分布式)
场景 海量数据批处理(磁盘迭代计算) 海量数据的批处理(内存迭代计算、交互式计算),流计算
价格 对机器要求低、便宜 对内存有要求、相对较贵
编程范式 Map + Reduce,API 较为底层,算法适应性差 RDD组成DAG有向无环图,API较为顶层,方便使用
数据存储 MapReduce中间结果在HDFS磁盘上,延迟大 RDD中间运算结果在内存上,延迟小
运行方式 Task以进程方式维护,任务启动慢 Task以线程方式维护,任务启动快,可批量创建提高并行能力

尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop

  • 许多计算工具仍基于MR架构,比如非常成熟的Hive
  • Spark仅做计算,而Hadoop生态圈不仅有计算(MR)也有存储(HDFS)和资源管理调度(YARN)

Hadoop的基于进程的计算和Spark基于线程方式优缺点?

Hadoop中的MR中每个map/reduce task都是一个java进程方式运行,好处在于进程之间是互相独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之间不方便共享数据,执行效率比较低。

比如多个map task读取不同数据源文件需要将数据源加载到每个map task中,造成重复加载和浪费内存。

而基于线程的方式计算是为了数据共享和提高执行效率,Spark采用了线程的最小的执行单位,但缺点是线程之间会有资源竞争

框架模块

Spark
  • Spark Core
    • Spark的核心,Spark核心功能均由Spark Core模块提供,是Spark运行的基础
    • Spark Core以RDD为数据抽象,提供Python、Java、Scala、R语言的API
    • 可以编程进行海量离线数据批处理计算
  • SparkSQL
    • 基于SparkCore之上,提供结构化数据的处理模块
    • SparkSQL支持以SQL语言对数据进行处理,SparkSQL本身针对离线计算场景
    • 同时基于SparkSQL,StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算
  • SparkStreaming
    • 以SparkCore为基础,提供数据的流式计算功能
  • MLlib
    • 以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等
    • 方便用户以分布式计算的模式进行机器学习计算
  • GraphX
    • 以SparkCore为基础,进行图计算,提供了大量的图计算API
    • 方便用于以分布式计算模式进行图计算

运行模式

Spark
  • 本地模式(单机-- 开发和测试):
    • 一个独立的进程, 通过其内部的多个线程来模拟整个Spark运行时的环境
  • Standalone模式(集群)
    • Spark中的各个角色以独立进程的形式存在,并组成Spark集群环境
  • Hadoop YARN模式(集群)
    • Spark中的各个角色运行在YRAN的容器内部,并组成Spark集群环境
  • Kubernetes模式(容器集群)
    • Spark中的各个角色运行在k8s的容器内部,并组成Spark集群环境
  • 云服务模式(运行在云平台上)

结构角色(重点)

Spark

YARN

  • 资源管理层面
    • 集群资源管理者(Master):ResourceManager
    • 单机资源管理者(Worker):NodeManager
  • 任务计算层面
    • 单任务管理者(Master):ApplicationMaster
    • 单任务执行者(Worker):Task(容器内计算框架的工作角色)

Spark

  • 资源层面
    • Master:集群资源管理(ResourceManager)
    • Worker:单机资源管理(NodeManager)
  • 计算层面
    • Driver:单任务管理者(ApplicationMaster)
    • Executor:单任务执行者(YARN容器内的Task)
Spark

总结

  • Spark解决了什么问题
    • 海量数据的计算,可以进行离线批处理以及实时流计算
  • Spark有哪些模块
    • 核心SparkCore
    • SQL计算(SparkSQL)
    • 流计算(SparkStreaming
    • 图计算(GraphX)
    • 机器学习(MLlib)
  • Spark特点有哪些
    • 速度快
    • 使用简单
    • 通用性强
    • 多种模式运行
  • Spark运行模式
    • 本地模式
    • 集群模式
      • StandAlone
      • YARN
      • K8s
    • 云模式

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区