代码之家  ›  专栏  ›  技术社区  ›  Surender Raja

纱线如何在集群模式下了解Apache spark中的数据位置

  •  5
  • Surender Raja  · 技术社区  · 6 年前

    假设有一个Spark作业要读取一个名为records的文件。并执行一些转换和一个操作(将处理后的输出写入HDFS)。作业将提交到纱线簇模式

    还假设记录。txt是一个128MB的文件,它的一个HDFS复制块也在节点1中

    假设正在分配的纱线是节点1内的执行器。

    纱线如何在输入数据所在的节点中准确地分配执行器?

    他告诉纱线,其中一个复制的HDFS记录块。txt在节点1中可用?

    Spark应用程序如何找到数据本地化?它是由在应用程序主程序中运行的驱动程序完成的吗?

    纱线知道数据位置吗?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Alper t. Turker    6 年前

    这里的基本问题是:

    纱线知道数据位置吗?

    YARN“知道”应用程序告诉它什么,并且它了解集群的结构(拓扑)。当应用程序发出资源请求时,它可以包括特定的 局部性约束 ,这可能会在分配资源时得到满足,也可能不会得到满足。

    如果无法指定约束,则YARN(或任何其他集群管理器)将根据其对集群拓扑的了解,尝试提供最佳的替代匹配。

    那么应用程序如何“知道” ?

    如果应用程序使用支持某种形式的数据位置的输入源(文件系统或其他),它可以查询相应的目录(如果是HDFS,则为namenode),以获取它想要访问的数据块的位置。

    从广义上讲,Spark RDD可以定义 preferredLocations ,具体取决于 RDD 集群管理器的实现,稍后可以转化为资源约束(不一定是纱线)。