sparkrdd机制实现模型

author author     2022-09-14     469

关键词:

RDD渊源

弹性分布式数据集(RDD)。它是MapReduce模型一种简单的扩展和延伸。RDD为了实现迭代、交互性和流查询等功能,须要保证RDD具备在并行计算阶段之间能够高效地数据共享的功能特性。RDD运用高效的数据共享概念和相似于MapReduce的操作方式,使得全部的计算工作能够有效地运行,并能够在当前特定的系统中获得关键性的优化。

RDD是一种有容错机制的特殊集合,能够分布在集群的节点上,以函数式编操作集合的方式。进行各种并行操作。能够将RDD理解为一个具有容错机制的特殊集合,它提供了一种仅仅读、仅仅能由已存在的RDD变换而来的共享内存,然后将全部数据都载入到内存中,方便进行多次重用。

a. 它是分布式的,能够分布在多台机器上,进行计算。


b. 它是弹性的。计算过程中内存不够时它会和磁盘进行数据交换。


c. 这些限制能够极大的减少自己主动容错开销
d. 实质是一种更为通用的迭代并行计算框架,用户能够显式的控制计算的中间结果,然后将其自由运用于之后的计算。

RDD是一个能够避免复制的容错分布式存储概念。取而代之。每个RDD都会记住由构建它的那些操作所构成的一个图,相似于批处理计算模型。能够有效地又一次计算因故障丢失的数据。

因为创建RDD的操作是相对粗粒度的,即单一的操作应用于很多数据元素,该技巧比通过网络复制数据更高效。RDD非常好地运用于当前广泛的数据并行算法和处理模型中,全部的这些对多个任务使用同一种操作。

RDD机制实现的模型

RDD 机制实现了多类模型。包含多个现有的集群编程模型和之前模型所没有支持的新应用。

在这些模型中。RDD机制不仅在性能方面能够和之前系统相匹配,在其它方面,他们也能增加现有的系统所缺少的新特性,比方容错性。straggler容忍和弹性。我们讨论下面四类模型。

迭代式算法

一种眼下已经开发的针对特定系统最常见的的工作模式是迭代算法,比方应用于图处理。数值优化,以及机器学习中的算法。

RDD能够支持广泛类型的各种模型,包含Pregel。像HaLoop和Twister这类的迭代式MapReduce模型。以及确定版本号的GraphLab和PowerGraph模型。

关系查询

在MapReduce集群中的首要需求中的一类是运行SQL查询,长期运行或多个小时的批量计算任务和即时查询。

这促进了非常多在商业集群中应用的并行数据库系统的发展。
MapReduce相比并行数据库在交互式查询有非常大的缺陷。比如MapReduce的容错机制模型,而我们发现通过在RDD操作中实现非常多经常使用的数据库引擎的特性(比方,列处理),这样能够达到相当可观的性能。

MapReduce

RDD通过提供MapReduce的一个超集。能够高效地运行MapReduce程序,相同也能够指向比方DryadLINQ这样常见的机遇DAG数据流的应用。

流式数据处理

Spark与定制化系统最大的差别是Spark也使用RDD实现了流式处理。

流式数据处理已经在数据库和系统领域进行了非常长时间研究。可是实现大规模流式数据处理仍然是一项挑战。

当前的模型并没有处理在大规模集群中频繁出现的straggler的问题,同一时候对故障恢复的方式也非常有限。须要大量的复制或浪费非常长的恢复时间。

特别是。当前的系统是基于一种持续操作的模型,这就须要长时间的有状态的操作处理每个到达的记录。为了恢复一个丢失的节点,当前的系统须要保存每个操作符的两个副本,或通过一系列耗费大量开销的串行处理来对上游的数据进行重放。
Spark提出了一个新的模型。离散数据流(D-Streams),来解决这种问题。对使用长期状态处理的过程进行替换。D-Streams 把流式计算的运行当做一系列短而确定性的批量计算的序列,将状态保存在RDD里。

D-Stream模型通过依据相关RDD的依赖关系图进行并行化恢复,就能达到高速的故障恢复,这样不须要通过复制。另外。它通过猜測(Speculative)来支持对straggler迁移运行,比如,对那些慢任务运行经过猜測的备份副本。虽然D-Stream将计算转换为很多不相关联的jobs来运行从而增加了部分延迟,然而我们证明了D-Stream能够被达到次秒级延时的实现。这样能够达到曾经系统单个节点的性能,并能线性扩展到100个节点。

D-Stream 的强恢复特性让他们成为了第一个处理大规模集群特性的流式处理模型。而且他们基于RDD的实现使得应用能够有效的整合批处理和交互式查询。

小结

Spark将这些模型整合到一起。RDD还能支持一些现有系统不能表示的新的应用。比如,很多数据流应用程序还须要增加历史数据的信息;通过使用 RDD 能够在同一程序中同一时候使用批处理和流式处理。这样来实如今全部模型中数据共享和容错恢复。相同的。流式应用的操作者经常须要在数据流的状态上运行即时查询;在D-Stream中的RDD能够如静态数据形式进行查询。

我们使用一些在线机器学习和视频分析的实际应用来说明了这些用例。更一般的说,每个批处理应用经常须要整合多个处理类型:比方。一个应用可能须要使用SQL提取一个数据集,在数据集上训练一个机器学习模型,之后对这个模型进行查询。因为计算的大部分时间花在系统之间共享数据的分布式文件系统的I/O开销上,因此使用当前多个系统组合而成的工作流的效率非常的低下。使用一个基于RDD机制的系统。这些计算能够在同一个引擎中紧接着运行,而不须要额外的I/O。

转载请注明作者Jason Ding及其出处
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
Github博客主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354进入我的博客主页

sparkrdd

SparkRDD1、课程目标1、掌握RDD的原理2、熟练使用RDD的算子来完成计算任务3、掌握RDD的宽窄依赖4、掌握RDD的缓存机制5、掌握划分stage2、RDD的概述1、什么是RDDRDD(ResilientDistributedDataset)叫做弹性分布式数据集,是Spark中最基本的数... 查看详情

广播机制的cs模型实现

广播机制的cs模型实现如下:  首先可以使用ifconfig命令查看自己所在网段的广播地址server.c1#include<stdio.h>2#include<unistd.h>3#include<stdlib.h>4#include<strings.h>5#include<string.h>6#include<sys/socke 查看详情

linux线程实现机制分析linux线程实现机制分析linux线程模型的比较:linuxthreads和nptl(代码片段)

Linux线程实现机制分析Linux线程实现机制分析 Linux线程模型的比较:LinuxThreads和NPTLhttp://www.ibm.com/developerworks/cn/linux/kernel/l-thread/ 自从多线程编程的概念出现在Linux中以来,Linux多线应用的发展总是与两个问题脱不开干系:... 查看详情

sparkrdd转换为dataframe

#构造caseclass,利用反射机制隐式转换scala>importspark.implicits._scala>valrdd=sc.textFile("input/textdata.txt")scala>caseclassPerson(id:Int,name:String)scala>valdf=rdd.map(_.split(",")).map(x=>Perso 查看详情

sparkrdd详解

  RDD(ResilientDistributedDataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作... 查看详情

探索concurrenthashmap高并发性的实现机制

...型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制。由于ConcurrentHashMap的源代码实现依赖于Java内存模型,所以阅读本文需要读者了解Java内存模型。同时,ConcurrentHashMap的源代码会涉及到散列算法和链表数据结构,所以... 查看详情

sparkrdd算子实战(代码片段)

[TOC]Spark算子概述RDD:弹性分布式数据集,是一种特殊集合、支持多种来源、有容错机制、可以被缓存、支持并行操作,一个RDD代表多个分区里的数据集。RDD有两种操作算子:Transformation(转换):Transformation属于延迟计算,当一... 查看详情

sparkrdd详细介绍(代码片段)

  RDD(ResilentDistributedDatasets)俗称弹性分布式数据集,是Spark底层的分布式存储的数据结构,可以说是Spark的核心, SparkAPI的所有操作都是基于RDD的.有容错机制并可以被并行操作的元素集合,具有只读、分区、容错、高效、无需... 查看详情

探索concurrenthashmap高并发性的实现机制(代码片段)

...型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制。由于ConcurrentHashMap的源代码实现依赖于Java内存模型,所以阅读本文需要读者了解Java内存模型。同时,ConcurrentHashMap的源代码会涉及到散列算法和链表数据结构,所以... 查看详情

关于《注意力模型--attention注意力机制》的学习

关于《注意力模型--Attention注意力机制》的学习 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程。在github上找到一份基于keras框架实现的可运行的注意模型代码:Atten... 查看详情

sparkrdd论文详解spark编程接口(代码片段)

...结构和参考文献请见1000个问题搞定大数据技术体系目录SparkRDD论文详解(一)摘要和介绍SparkRDD论文详解(二)RDDsSparkRDD论文详解(三)Spark编程接口SparkRDD论文详解(四)表达RDDsSparkRDD论文详解ÿ... 查看详情

RMI如何实现轮询机制?

】RMI如何实现轮询机制?【英文标题】:HowPollingmechanismcanberealizedwithRMI?【发布时间】:2010-10-0215:42:28【问题描述】:按照我为具有RMI服务器回调的多用户/网络回合制游戏创建的设计/架构,我尝试创建一个分布式动画,其中我的... 查看详情

spark基础学习笔记22:sparkrdd案例分析

文章目录零、本讲学习目标一、案例分析:SparkRDD实现单词计数(一)案例概述(二)实现步骤1、新建Maven管理的Spark项目2、添加Scala和Spark依赖3、创建WordCount对象4、对于程序代码进行解析5、将Spark项目编译和... 查看详情

spark深入学习03sparkrdd的蛮荒世界

...很抽象,很难懂;但是这是spark的核心概念,因此有必要sparkrdd的知识点,用最简单、浅显易懂的词汇描述。不想用学术话的语言来阐述RDD是什么,用简单、容易理解的方式来描述。    一、什么是RDD,RDD出现的背... 查看详情

分段机制(个人理解)

     分段机制可用于实现多种系统设计。这些设计范围从使用分段机制的最小功能来保护程序的平坦模型,到使用分段机制创建一个可同时可靠地运行多个程序(或任务)的具有稳固操作环境的多段模型。 ... 查看详情

chatgpt中的attention机制详解

...种常用的聊天机器人模型,它的核心技术之一就是Attention机制。本文将详细介绍ChatGPT中的Attention机制,包括原理、实现方法以及代码示例。原理Attention机制是一种可以使模型“重点关注”输入序列中某些部分的机制。在自然语... 查看详情

kvm实现机制

转载地址:http://blog.csdn.net/yearn520/article/details/64610471.    概述1.1.    KVM简介KVM是一个基于Linux内核的虚拟机,它属于完全虚拟化范畴,从Linux-2.6.20开始被包含在Linux内核中。KVM基于x86硬件虚拟化技术,它的运行... 查看详情

transformer模型入门详解及代码实现(代码片段)

...前言一.什么是Transformer二.Encoder的组成1.输入部分2.注意力机制2.1注意力机制的含义2.2在TRM中的实现3.前馈神经网络3.1前馈神经网络,BP算法,BP神经网络的区别:3.2Encoder中的前馈神经网络4Encoder流程详解三.Decoder的组成3... 查看详情