zoukankan      html  css  js  c++  java
  • RDD模型

    Spark是Berkeley大学AMP(stands for Algorithms, Machines, and People)实验室开发的一个项目。它是一个基于RDD(Resilient Distributed Datasets)模型,能够支持计算MapReduce模式的作业,主要用于迭代计算和交互式数据计算等中间结果可重用的分布式计算框架。Spark 将数据缓存在内存中从而减少数据的访问延迟。

    1. RDD

    RDD,即可伸缩的分布式数据集合,管理数据缓存和数据重用,采用分析日志方式支持数据容错,提供了粗粒度的事务处理接口(map,filter,join)。RDD 对数据记录进行分区存储,本身是只读的。RDD 的数据来源:1) 稳定的存储介质;2) 其它的RDD存储的数据。RDD对程序员开发了两种操作:数据存储和分区。RDD本身不做物理储存,通过保存足够的信息去实际的储存中计算出RDD,可以将RDD视为松散的虚拟内存[1]

    2. RDD v.s. DSM

    RDD相比于DSM(共享内存)有如下的不同

    Aspect RDDS DSM
    Reads Coarse- or fine-grained Fine-grained
    Writes Coarese-grained Fine-grained
    Consistency Trivial (immutable) Up to app / runtime
    Fault recovery Frine-grained and low-overhead using lineage Requires checkpoints and program rollback
    Straggler mitigation Possible using backup tasks Difficult
    Work placement Automatic based on data locality Up to app
    Behavior if not enough RAM Similar to existing data flow systems Poor perfermance 

    3. 共享变量[2]

    当Spark并发运行一个函数时,它是以多个的task,在不同的结点上运行,它传递每一个变量的一个拷贝,到每一个独立task使用到的函数中,因此这些变量并非共享的。然而有时候,我们需要在任务中能够被共享的变量,或者在任务与驱动程序之间共享。Spark支持两种类型的共享变量:

         广播变量:      可以在内存的所有结点中被访问,用于缓存变量(只读)

         累加器:         只能用来做加法的变量,例如计数和求和

    4. Spark编程模型

    Spark 使用 Scala 语言编写,分布式事务管理使用Mesos,并支持HDFS文件系统,是一个轻量级的框架。其0.5版有1,4000行代码。

    spark code开发者编写 Driver 控制集群中的 worker。一个Driver定义了一个或多个RDD,并能够记录RDD之间的进化关系。worker是一个长进行,将存储了RDD分区存储在内存中执行操作。RDD数据集上定义了两种操作[3]:action 和 transformation。action,即在数据集上执行计算,并向driver返回一个值;transformation,即从已有数据集创建新的数据集。

    xxx
  • 相关阅读:
    C# 函数
    截取字符串 超长 用冒号显示
    免费的webservice接口
    Visual Studio 2010扩展让JS与CSS实现折叠
    两个div同时滚动
    cn_office_professional_plus_2010_x86_515 安装激活方法解决方案64bit
    Info.plist配置相关文件访问权限
    iOS 同一个View识别单击和双击手势
    WKWebView简单使用
    TabBar背景颜色设置
  • 原文地址:https://www.cnblogs.com/valder/p/2658090.html
Copyright © 2011-2022 走看看