在spark中,我们可以直接从HDFS加载数据,RDD的分区数将等于文件的分区数。 HDFS因保留重复的文件块而闻名,所以问题是如何解决这个问题以及如何管理RDD分区。
如果我在提问时出错了,请纠正我。
答案 0 :(得分:1)
您希望将计算带入数据,因此根据任务的执行位置(哪个物理节点将保留持久数据),您将使用最近的可用副本(相同的机架等)或根据位置执行调度数据可用。该部分由YARN调度程序处理。
答案 1 :(得分:0)
正如您可以从spark用户指南中查看,您可以设置一些有关数据位置的配置(从spark 1.6用户指南http://spark.apache.org/docs/latest/configuration.html中提取):
<强> spark.locality.wait 强>
默认值:3s
在放弃并在较少本地节点上启动数据本地任务之前等待多长时间才能启动数据本地任务。将使用相同的等待来逐步执行多个位置级别(进程本地,节点本地,机架本地,然后是任何)。也可以通过设置spark.locality.wait.node等来自定义每个级别的等待时间。如果您的任务很长并且看到位置不佳,则应该增加此设置,但默认情况通常很有效。
<强> spark.locality.wait.node 强>
默认值:spark.locality.wait
自定义位置等待节点位置。例如,您可以将其设置为0以跳过节点位置并立即搜索机架位置(如果您的群集具有机架信息)。
<强> spark.locality.wait.process 强>
默认:spark.locality.wait
自定义位置等待进程位置。这会影响尝试访问特定执行程序进程中的缓存数据的任务。
spark.locality.wait.rack
默认:spark.locality.wait
自定义本地等待机架位置