Spark中的数据本地性

分布式数据并行环境下,保持数据的本地性是非常重要的内容,事关分布式系统性能高下。

概念:

block : HDFS的物理空间概念,固定大小,最小是64M,可以是128,256 。。也就是说单个文件大于block的大小,肯定会被切分,被切分的数目大概是:比如文件是250M,block是64M,就会被分为4个block,64+64+64+58,最后一个block没有满,一个block只能有一个文件的内容,加上每个block一般有3个副本存在,那么这个文件在HDFS集群就有12个block分布,可能分布在datanode1,2,3,4  可能分布在datanode4,5,6,7 所以并不是所有的datanode都有这个文件的block

最理想的情况,我们希望一个文件的所有block在一个datanode上面都可以找到,这样可以在读数据的时候避免网络传输

partition: spark的计算数据概念,是RDD的最小单位,它的大小不是固定的,一般是根据集群的计算能力,以及block的数量来决定的,也就是说partition的个数我们是可以自己指定的

worker:spark计算集群中,非master节点,它的分布也是在某些node上面

rack:数据中心由一堆堆的rack组成,一个rack由多个datanode组成,在rack中的datanode可以看做本地数据,因为网络比较好

所以有data的node不一定上面有worker,同样有worker的node上面不一定有合适的数据,这样问题就抽象成为,如何让读取HDFS的时候,spark整体开销最小,这就是本地性的问题

因为上面3个block的数据不一样,所以我们在选择worker(h)的时候,要考虑哪个是最佳计算worker

考虑rack的网络本地性,h4 h3 h1 h2 h5 h6 h7 h8

不考虑rack的网络本地性,h1 h4 h5 h6 h2 h3 h7 h8

选出了计算节点的顺序,就可以告诉spark的partition(RDD),然后在h上启动executor/tasker,然后读取数据,h从哪个节点获得block呢?block的几个副本离h的远近不同,网络开销不一样

时间: 2024-10-14 06:09:06

Spark中的数据本地性的相关文章

Spark数据本地性

1.文件系统本地性 第一次运行时数据不在内存中,需要从HDFS上取,任务最好运行在数据所在的节点上: 2.内存本地性 第二次运行,数据已经在内存中,所有任务最好运行在该数据所在内存的节点上: 3.LRU置换 如果数据只缓存在内存中而并没有缓存到磁盘上,此时数据被置换出内存,则从HDFS上读取: 如果数据不仅缓存到内存而且还缓存到磁盘上,此时数据被置换出内存,则从磁盘上直接读取: BlockManage.scala putBlockInfo.synchronized { var marked =

Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式 3.Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载 4.Chrome扩展开发之四——Gmail API的简单介绍 5.Chrome扩展开发之五——OAuth2的理解 6.Chrome扩展开发之六——GmailAssist核心功能的实现(包括Gmail API的使用中的

Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用

默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读 本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读,如file:///home/user/spark/README.md ‍ 网上很多例子,包括官网的例子,都是用textFile来加载一个文件创建RDD,类似sc.textFile("hdfs://n1:8020/user/hdfs

TaskScheduler内幕天机:Spark shell案例,TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解

TaskSchedulerBackend与SchedulerBackend FIFO与FAIR两种调度模式 Task数据本地性资源的分配 一.TaskScheduler运行过程(Spark-shell角度) 1.启动Spark-shell 当我们spark-shell本身的时候命令终端返回来的主要是ClientEndpoint和SparkDeploySchedulerBakcend.这是因为此时还没有任何应用程序Job的触发,这是启动Application本身而已,所以主要就是实例化SparkC

第三十六课 Spark之TaskScheduler Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详

</pre></h2><div><p>本节课内容:</p><p>1.     TaskSchedulerBackend与SchedulerBackend</p><p>2.     FIFO与FAIR两种调度模式</p><p>3.     Task数据本地性资源的分配</p></div><h3>一.Scheduler运行过程(Spark-shell角度)

Tachyon在Spark中的作用(Tachyon: Reliable, Memory Speed Storage for Cluster Computing Frameworks 论文阅读翻译)

摘要: Tachyon是一种分布式文件系统,能够借助集群计算框架使得数据以内存的速度进行共享.当今的缓存技术优化了read过程,可是,write过程由于须要容错机制,就须要通过网络或者是磁盘进行复制操作.Tachyon通过将"血统"技术引入到存储层进而消除了这个瓶颈.创建一个长期的以"血统机制"为基础的存储系统的关键挑战是失败情况发生的时候及时地进行数据恢复.Tachyon通过引入一种检查点的算法来解决问题,这样的方法保证了恢复过程的有限开销以及通过资源调度器下进行

Spark中的矩阵乘法分析

前言: 矩阵乘法在数据挖掘/机器学习中是常用的计算步骤,并且在大数据计算中,shuffle过程是不可避免的,矩阵乘法的不同计算方式shuffle的数据量都不相同.通过对矩阵乘法不同计算方式的深入学习,希望能够对大数据算法实现的shuffle过程优化有所启发.网上有很多分布式矩阵乘法相关的文章和论文,但是鲜有对Spark中分布式矩阵乘法的分析.本文针对Spark中分布式矩阵乘法的实现进行必要的说明讨论. 分布式矩阵乘法原理: 矩阵乘法计算可以分为内积法和外积法.根据实现颗粒度的不同,也可以分为普通

Spark:大数据的电花火石!

什么是Spark?可能你很多年前就使用过Spark,反正当年我四六级单词都是用的星火系列,没错,星火系列的洋名就是Spark. 当然这里说的Spark指的是Apache Spark,Apache Spark?is a fast and general engine for large-scale data processing: 一种快速通用可扩展的数据分析引擎.如果想要搞清楚Spark是什么,那么我们需要知道它解决了什么问题,还有是怎么解决这些问题的. Spark解决了什么问题? 在这里不得不

[转载] Spark:大数据的“电光石火”

转载自http://www.csdn.net/article/2013-07-08/2816149 Spark已正式申请加入Apache孵化器,从灵机一闪的实验室“电火花”成长为大数据技术平台中异军突起的新锐.本文主要讲述Spark的设计思想.Spark如其名,展现了大数据不常见的“电光石火”.具体特点概括为“轻.快.灵和巧”. 轻:Spark 0.6核心代码有2万行,Hadoop 1.0为9万行,2.0为22万行.一方面,感谢Scala语言的简洁和丰富表达力:另一方面,Spark很好地利用了H