【问题标题】:Are the data nodes in an HDFS the same as the executor nodes in a spark cluster?HDFS 中的数据节点是否与 Spark 集群中的执行程序节点相同?
【发布时间】:2023-03-07 17:12:02
【问题描述】:

我正在学习 Apache Spark 和 HDFS。尽管我对一件事感到困惑,但我大部分都了解它们。我的问题是:HDFS 中的数据节点是否与 Spark 集群中的执行程序节点相同?换句话说,HDFS 中的节点是对它们包含的数据进行操作,还是将来自 HDFS 中的数据节点的数据发送到操作数据的 spark 集群中的 executors 节点?如果您希望我澄清任何事情,请告诉我!任何帮助将非常感激!

谢谢,

泰勒

【问题讨论】:

    标签: apache-spark hadoop mapreduce hdfs


    【解决方案1】:

    我总是先从独立的角度思考这些概念,然后再从集群的角度思考这些概念。

    考虑到单台机器(你也将在本地模式下运行 Spark),DataNodeNameNode 只是支持 HDFS 抽象设计的软件(即 NameNode 存储文件树、文件元数据等,而DataNode 存储实际数据块。)。 driverexecutors 是 Spark 中的概念,在本地模式下,Spark 应用程序由一个 driver process 和一组 executor process 组成,其中在您的个人计算机上作为线程运行。

    【讨论】:

      【解决方案2】:

      仅当 DataNode 也运行 NodeManager 时。 HDFS 只处理数据。 YARN 处理计算。 YARN 的 ResourceManager 将计算资源分配给 NodeManager,因为显而易见的原因,这些资源与 DataNode 位于同一位置。

      YARN 和 Spark 尝试将执行程序移动到具有 Spark 正在处理的数据的 DataNodes/NodeManagers(数据局部性),但这更多是一种优化,而不是硬性要求。特别是由于大多数现代数据中心都有 10GB 以太网背板,因此将数据移动到备用节点的成本比以前通过网络移动数据的成本要低。

      【讨论】:

        【解决方案3】:

        如果您的 Spark 集群使用 yarn 的 master 运行,那么是的,您的 Spark 执行程序将运行在 Hadoop 集群中存储数据的相同节点上。

        事实上,将计算转移到数据,而不是将数据转移到计算,是提高分布式计算性能的关键方法,因为将序列化任务转移到节点比转移 GB 数据便宜得多到任务。

        【讨论】:

        • DataNodes 不处理计算。 NodeManager 可以。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-06
        • 1970-01-01
        相关资源
        最近更新 更多