【发布时间】:2016-10-21 08:18:10
【问题描述】:
伙计们,我是 Spark 的新手,学习了 Spark 的一些基本概念。虽然我现在对partition、stage、tasks、transformation等概念有了一些了解,但我发现将这些概念或点连接起来对我来说有点困难。
假设文件有 4 行(每行占用 64MB,因此默认情况下与每个分区的大小相同),我有一个主节点和 4 个从节点。
val input = spark.textFile("hdfs://...log.txt")
#whatever transformation here
val splitedLines = input.map(line => line.split(" "))
.map(words => (words(0), 1))
.reduceByKey{(a,b) => a + b}
我想知道主节点和从节点会发生什么?
这是我的理解,如果我错了,请纠正我。 当我启动上下文SparkContext时,每个worker根据这个帖子启动一个executorWhat is a task in Spark? How does the Spark worker execute the jar file?
然后应用会被推送到从节点
4 个从节点中的每一个会从文件中读取一行吗?如果是这样,那意味着在每个从节点上,都会生成一个RDD?然后将基于RDD生成DAG,并构建阶段并识别任务。在这种情况下,每个从节点都有一个 RDD 和一个分区来保存 RDD。
或者,主节点是否会读取整个文件并构建RDD,然后是DAG,然后是stage,然后只将任务推送到从节点,然后从节点将只处理map,filter或reduceByKey等任务.但是如果是这样的话,从节点将如何读取文件呢?文件或 RDD 是如何在 slave 之间分配的?
我正在寻找的是逐步了解流程并了解每个步骤发生在主节点还是从节点上?
感谢您的宝贵时间。 干杯
【问题讨论】:
标签: apache-spark