Spark - 它如何在节点周围分发数据?

2024-03-12

Spark如何将数据分发给worker?

工作人员是从数据源读取数据,还是驱动程序读取数据并将其发送给工作人员?当一个工作人员需要另一个工作人员中的数据时,他们是否直接进行通信?

Thanks!


如果您使用分布式输入法,例如SparkContext.textFile https://spark.apache.org/docs/1.6.2/api/java/org/apache/spark/SparkContext.html#textFile(java.lang.String,%20int)然后工作人员直接从您的数据源读取(或者如果您从工作人员任务代码内部显式打开 HDFS 文件,那么当然这些也会发生在工作人员身上)。

如果您在主驱动程序上手动读取数据,然后使用SparkContext.parallelize,那么您的驱动程序确实会向您的工作人员发送数据。

工作人员之间的数据依赖关系通常称为shuffle https://cwiki.apache.org/confluence/display/SPARK/Shuffle+Internals;这种类型的工人之间的通信在很多方面都是大多数大数据处理系统的核心,正是因为它很难高效可靠地进行。从概念上讲,您或多或少可以将其视为“直接通信”,但根据数据依赖性的处理方式,幕后可能会发生更多事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark - 它如何在节点周围分发数据? 的相关文章

随机推荐