我只用一个节点然后用4个节点对spark运行一些查询。在火花:4040 UI我看到一些我不理解的东西。例如,在执行具有4个节点的查询并在spark UI中检查结果后,在“input”选项卡中出现2,8gb,因此spark从hadoop读取2,8gb。
在本地模式下只有一个节点的hadoop上的相同查询出现7,3gb,火花从hadoop读取7,3GB。但这个价值不应该相等?例如,shuffle的值在一个节点中保持+ - 相等而不是4.为什么输入值不能保持相等?必须从hdfs读取相同数量的数据,所以我不理解。你知道吗?
单个节点:
答案 0 :(得分:1)
我假设你在谈论工作中的输入标签。它可能是累积存储。请检查执行程序选项卡中的输入。与4节点一样,它将有更多的执行器,数据将被分发。
答案 1 :(得分:1)
输入是您的spark作业正在摄取的数据大小。例如,它可以是您可能已定义的每个地图任务正在使用的数据。
Shuffling意味着在多个Spark阶段之间重新分配数据。 " Shuffle Write"是传输之前所有执行者的所有书面序列化数据的总和(通常在阶段结束时)和#34; Shuffle Read"表示在阶段开始时所有执行程序上读取序列化数据的总和。