全部课程
什么是RDD
发布时间: 2023-04-18
RDD,弹性分布式数据集。它是一种数据的集合,它可以被分区,每一个分区分布在不同的集群中节点,从而使得RDD可以被并行处理,RDD提供容错性,它将计算转换一个成一个有向无环图(DAG)的任务集合,方便利用血缘关系进行数据恢复,中间计算结果缓存在内存。
2.1 迭代计算
MapReduce在进行迭代计算的时候,都需要读写磁盘,如果涉及到多个作业流程,那么意味着多次读写HDFS,所以MapReduce在迭代式计算的时候,会进行大量的磁盘I/O操作
RDD: RDD会将计算转换成一个DAG的任务集,每次处理完后的数据缓存到内存中,并且可以作为下一次计算的输入数据,所以只需要一次读写操作,避免了大量的I/O操作
2.2 容错机制
基于YARN的MapReduce的Task执行过程产生异常和和JVM的意外终止,会汇报给Application Master,任务失败一次,并不意味着任务的完全失败,它有重试机制,当达到重试次数限制还没有成功,则认为该任务运行失败
如果ApplicationMaster失败,那么Resource Manager进行失败检测然后重新启动一个新的Container,然后在这个Container中启动新的Application Master进程。对于新创建的Application Master,它能够检测到之前失败的Application Master已经运行完成的任务,因此,新的Application Master无需重头开始已经执行过的任务。
RDD: 有两种容错方式,数据检查点和记录数据的更新。
面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源。
上一篇: Oracle数据库控制台常用命令
下一篇: Java线程的状态