HDFS数据存储,文件块与spark的分区概念

HDFS中数据以文件块的形式存储在DataNode上,

比如一个1GB的数据文件,会切分成多个128M的文件块,

数据写入存储的时候,每个128M文件块会存放在一个DataNode上,

同时通过机架感知,在最近的两个DataNode节点上分别存放2个副本文件。

ps:极限情况,如果128M文件块的个数超过DataNode的个数,会随机选出DataNode存放多余的文件块,但是一个128M文件块只存储在一个DataNode中,机架感知出最近的两个DataNode存放其副本。

这样spark在读取HDFS数据进行计算的时候,先通过hadoop获取每个文件块所在的DataNode节点位置,然后把每个文件块从各自所处节点的磁盘传输到各自所处节点的RAM中,这样每个节点的RAM中的128M文件块的数据,就构成spark的一个分区数据,交给executor的一个core去计算,每个节点在RAM中只计算该节点上文件块的数据,最后数据汇总生成最终数据。

你可能感兴趣的:(Hadoop,Spark,spark,hdfs,hadoop)