假设我们在HDFS上有一个有3个块(每个64mb)的文件。当我们使用具有3个分区的相同文件创建RDD时,群集上的每个节点(假设群集具有3个数据节点)将具有重复的文件内容(来自hdfs的一个块和RDD的分区)
答案 0 :(得分:0)
在HDFS块中随机分布(默认情况下,如果放置文件的客户端不是群集的一部分),那么除非你有副本3,否则你不能确定每个节点都有1个块。在这种情况下,每个块将被放置在三个节点中。
关于Spark,默认情况下,Spark会尝试从靠近它的节点将数据读入RDD,并尝试在整个群集中传播rdd分区。
您的假设并非总是如此,您必须考虑使用副本放置策略,Spark执行器等进行HDFS块分发。但是,如果您在HDFS中有副本3并且您有一个包含3个工作线程的Spark群集,那将是真的。群集中的每个节点中都有一个。