rdd的内存数据

dvtswwa3  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(352)

我一直在使用spark,我很好奇RDD到底是如何工作的。我知道rdd是指向数据的指针。如果我试图为hdfs文件创建rdd,我知道rdd将是hdfs文件上实际数据的指针。
我不明白的是数据存储在内存中的位置。当任务被发送到工作节点时,特定分区的数据是否存储在该工作节点的内存中?如果是这样,当rdd分区存储在工作节点1的内存中,但工作节点2必须为rdd的同一分区计算任务时,会发生什么情况?辅助节点2是否与辅助节点1通信以获取分区的数据并将其存储在自己的内存中?

yizd12fk

yizd12fk1#

原则上,任务被划分为多个执行器,每个执行器代表自己的独立数据块(例如,来自hdfs文件或文件夹)。任务的数据被加载到该执行器的本地内存中。可以在同一个任务上链接多个转换。
但是,如果转换需要从多个执行器中提取数据,则将创建一组新的任务,并且先前任务的结果将被洗牌并重新分布到多个执行器中。例如,许多*bykey转换都会通过hdfs来洗牌整个数据,以便执行者可以执行第二组任务。随机数据的次数和值对spark的性能至关重要。

相关问题