浅谈Spark的RDD、部署模式

这篇具有很好参考价值的文章主要介绍了浅谈Spark的RDD、部署模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、RDD

Spark RDD(弹性分布式数据集),弹性是指Spark可以通过重新计算来自动重建丢失的分区。
从本质上讲,RDD 是数据元素的不可变分布式集合,跨集群中的节点进行分区,可以与提供转换和操作的低级 API 并行操作。

Spark RDD 相关操作:官方文档

1. 为什么 Spark 中需要 RDD?

RDD 解决了 MapReduce 在数据共享方面的缺点。当重用数据进行计算时,MapReduce 需要写入外部存储(HDFS、Cassandra、HBase 等)。作业之间的读写过程会消耗大量内存。

此外,由于复制、序列化和磁盘使用量的增加,任务之间的数据共享速度很慢。

浅谈Spark的RDD、部署模式,Spark,spark,大数据,分布式

RDD 旨在通过利用内存计算操作存储来减少外部存储系统的使用。这种方法将任务之间的数据交换速度提高了 10 到 100 倍。

处理大量数据时,速度至关重要。Spark RDD 使训练机器学习算法和处理大量数据进行分析变得更加容易。

2. Spark RDD 操作

RDD 提供两种操作类型:

1.转换是对 RDD 进行的操作,从而创建 RDD。RDD的transformation操作是延迟计算的,只在遇到action时才真正进行计算。

2.action是不会导致 RDD 创建并提供一些其他值的操作。

浅谈Spark的RDD、部署模式,Spark,spark,大数据,分布式

2、RDD 持久化

Spark 中一个很重要的能力是将数据持久化(或称为缓存),在多个操作间都可以访问这些持久化的数据。当持久化一个 RDD 时,每个节点的其它分区都可以使用 RDD 在内存中进行计算,在该数据上的其他 action 操作将直接使用内存中的数据。这样会让以后的 action 操作计算速度加快(通常运行速度会加速 10 倍)。缓存是迭代算法和快速的交互式使用的重要工具。

RDD 可以使用 persist() 方法或 cache() 方法进行持久化。数据将会在第一次 action 操作时进行计算,并缓存在节点的内存中。Spark 的缓存具有容错机制,如果一个缓存的 RDD 的某个分区丢失了,Spark 将按照原来的计算过程,自动重新计算并进行缓存。

在 shuffle 操作中(例如 reduceByKey),即便是用户没有调用 persist 方法,Spark 也会自动缓存部分中间数据。这么做的目的是,在 shuffle 的过程中某个节点运行失败时,不需要重新计算所有的输入数据。如果用户想多次使用某个 RDD,强烈推荐在该 RDD 上调用 persist 方法。

3、RDD的cache和persist的区别

cache()调用的persist(),是使用默认存储级别的快捷设置方法
看一下源码

/**
 * Persist this RDD with the default storage level (`MEMORY_ONLY`).
 */
def cache(): this.type = persist()

/**
 * Persist this RDD with the default storage level (`MEMORY_ONLY`).
*/
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)

通过源码可以看出cache()是persist()的简化方式,调用persist的无参版本,也就是调用persist(StorageLevel.MEMORY_ONLY),cache只有一个默认的缓存级别MEMORY_ONLY,即将数据持久化到内存中,而persist可以通过传递一个 StorageLevel 对象来设置缓存的存储级别。

二、执行器和集群管理器

本地模式 使用本地模式,有一个executor和driver运行在同一个JVM中,该模式一般是测试或小规模作业。这种模式主URL为local(一个线程)、local[n](n个线程)、local[*](每个内核一个线程)

standalone模式 运行了一个master和多个workder。当spark应用启动时,master要求worker代表应用启动多个executor线程。

YARN模式 YARN是Hadoop中的资源管理器。该模式优于独立模式集群管理器,因为考虑了在集群上运行的其他应用(MapReduce作业)的资源需求,并统筹实施调度策略。独立模式对集群资源采取静态分配方法,不能随时适应其他应用变化需求。

三、运行在YARN上的Spark

为了在YARN上运行,Spark提供了两种部署模式:YARN客户端模式和YARN集群模式。YARN客户端模式的driver在客户端运行,YARN集群模式的driver在YARN的application master集群上运行。

对于spark-shell必须使用YARN客户端模式,使用该模式,任何调试输出都是立即可见的。

另一方面,YARN集群模式适用生成作业,因为整个应用在集群上运行。如果application master出现故障,YARN可以尝试重新运行该应用。

在Spark on Yarn上,Driver会和AppMaster通信,资源的申请由AppMaster来完成,而任务的调度和执行则由Driver完成,Driver会通过与AppMaster通信来让Executor的执行具体的任务。

1. YARN客户端模式

在YARN客户端模式下,当driver构建新的SparkContext实例便启动了与Yarn的交互。该context向ResourceManager提交一个Yarn应用,ResourceManager启动NodeManager上的Yarn容器,运行一个application master。

ExecutorLauncher向ResourceManager申请资源来启动Yarn容器的executor。每个executor在启动时都会连接回sc,并注册自身。

2. YARN集群模式

对于YARN客户端模式和YARN集群模式的唯一区别在于,YARN客户端模式的Driver运行在本地,而AppMaster运行在YARN一个节点上,他们之间进行远程通信,AppMaster只负责资源申请和释放(当然还有DelegationToken的刷新),然后等待Driver的完成。

而YARN集群模式的Driver则运行在AppMaster所在的container里,Driver和AppMaster是同一个进程的两个不同线程,它们之间也会进行通信,AppMaster同样等待Driver的完成,从而释放资源。文章来源地址https://www.toymoban.com/news/detail-662959.html

参考链接

  1. 从源码角度看Spark on yarn client & cluster模式的本质区别
  2. Hadoop权威指南

到了这里,关于浅谈Spark的RDD、部署模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据学习06-Spark分布式集群部署

    配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改主机名 vi /etc/hostname 做好IP映射 vim /etc/hosts 关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld 配置SSH免密登录 ssh-keygen -t rsa 下载Scala安装包 配置环境变量 添加如下配置 使环境生效 验证 Spark官网 解压 上

    2024年02月10日
    浏览(68)
  • 大数据开源框架环境搭建(七)——Spark完全分布式集群的安装部署

    前言:七八九用于Spark的编程实验 大数据开源框架之基于Spark的气象数据处理与分析_木子一个Lee的博客-CSDN博客_spark舆情分析 目录 实验环境: 实验步骤: 一、解压 二、配置环境变量:  三、修改配置文件  1.修改spark-env.sh配置文件: 2.修改配置文件slaves: 3.分发配置文件:

    2024年02月11日
    浏览(51)
  • Spark单机伪分布式环境搭建、完全分布式环境搭建、Spark-on-yarn模式搭建

    搭建Spark需要先配置好scala环境。三种Spark环境搭建互不关联,都是从零开始搭建。 如果将文章中的配置文件修改内容复制粘贴的话,所有配置文件添加的内容后面的注释记得删除,可能会报错。保险一点删除最好。 上传安装包解压并重命名 rz上传 如果没有安装rz可以使用命

    2024年02月06日
    浏览(79)
  • Hadoop(伪分布式)+Spark(local模式)搭建Hadoop和Spark组合环境

    环境 使用 Ubuntu 14.04 64位 作为系统环境(Ubuntu 12.04,Ubuntu16.04 也行,32位、64位均可),请自行安装系统。 Hadoop版本 : Hadoop 2.7.4 创建hadoop用户 如果你安装 Ubuntu 的时候不是用的 \\\"hadoop\\\" 用户,那么需要增加一个名为 hadoop 的用户。 首先按 ctrl+alt+t 打开终端窗口,输入如下命令创

    2023年04月08日
    浏览(70)
  • 分布式内存计算Spark环境部署与分布式内存计算Flink环境部署

    目录 分布式内存计算Spark环境部署 1.  简介 2.  安装 2.1【node1执行】下载并解压 2.2【node1执行】修改配置文件名称 2.3【node1执行】修改配置文件,spark-env.sh 2.4 【node1执行】修改配置文件,slaves 2.5【node1执行】分发 2.6【node2、node3执行】设置软链接 2.7【node1执行】启动Spark集群

    2024年02月08日
    浏览(73)
  • 【头歌实训】Spark 完全分布式的安装和部署

    掌握 Standalone 分布式集群搭建。 我们已经掌握了 Spark 单机版安装,那么分布式集群怎么搭建呢? 接下来我们学习 Standalone 分布式集群搭建。 课程视频 如果你需要在本地配置 Spark 完全分布式环境,可以通过查看课程视频来学习。 课程视频《克隆虚拟机与配置网络》 课程视

    2024年02月04日
    浏览(50)
  • 【头歌实训】Spark 完全分布式的安装和部署(新)

    第1关: Standalone 分布式集群搭建 任务描述 掌握 Standalone 分布式集群搭建。 相关知识 我们已经掌握了 Spark 单机版安装,那么分布式集群怎么搭建呢? 接下来我们学习 Standalone 分布式集群搭建。 课程视频 如果你需要在本地配置 Spark 完全分布式环境,可以通过查看课程视频来

    2024年02月03日
    浏览(102)
  • Spark弹性分布式数据集

    1. Spark RDD是什么 RDD(Resilient Distributed Dataset,弹性分布式数据集)是一个不可变的分布式对象集合,是Spark中最基本的数据抽象。在代码中RDD是一个抽象类,代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 每个RDD都被分为多个分区,这些分区运行在集群中

    2024年02月13日
    浏览(56)
  • 云计算与大数据第16章 分布式内存计算平台Spark习题

    1、Spark是Hadoop生态(  B  )组件的替代方案。 A. Hadoop     B. MapReduce        C. Yarn             D.HDFS 2、以下(  D  )不是Spark的主要组件。 A. Driver      B. SparkContext       C. ClusterManager D. ResourceManager 3、Spark中的Executor是(  A  )。 A.执行器      B.主节

    2024年02月14日
    浏览(116)
  • 分布式计算中的大数据处理:Hadoop与Spark的性能优化

    大数据处理是现代计算机科学的一个重要领域,它涉及到处理海量数据的技术和方法。随着互联网的发展,数据的规模不断增长,传统的计算方法已经无法满足需求。因此,分布式计算技术逐渐成为了主流。 Hadoop和Spark是目前最为流行的分布式计算框架之一,它们都提供了高

    2024年01月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包