【问题标题】:Does node with mapr client need to have an access to the files I want to copy with distcp?带有 mapr 客户端的节点是否需要访问我要使用 distcp 复制的文件?
【发布时间】:2023-04-07 05:04:02
【问题描述】:

情况:
节点 0:已安装 mapr 客户端,不是集群的一部分,未安装外部资源
节点 1 到 10:安装了 mapr NodeManager 的 mapr 集群节点。每个节点都在/mnt/resource/下挂载了外部资源

如果我在 1 到 10 的任何节点上执行此代码 - 它可以工作: hadoop distcp file:///mnt/resource/file maprfs:///tmp

当我在节点 0 上执行相同的代码时,我得到一个错误:

20/11/24 14:08:24 ERROR tools.DistCp: Invalid input: org.apache.hadoop.tools.CopyListing$InvalidInputException: file:///mnt/resource/file doesn't exist

我的预期是:节点 0 只是调用 YARN 来管理 distcp 命令。但看起来 distcp 试图直接从节点 0 访问 /mnt/resource/file

我想要实现的是在 docker 容器中执行 distcp 命令,但不想将 /mnt/resource 目录挂载到容器中。

我也尝试过使用disctp -f 选项并在列表中提供带有/mnt/resource/file 的文件,但结果是一样的。

你知道如何执行它吗?或解决方法?

【问题讨论】:

    标签: mapr distcp


    【解决方案1】:

    到目前为止,最简单的做法是首先将数据放入 mapr 文件系统(现在简称为 HPE Ezmeral Data Fabric)。

    在许多情况下,这样的任务完全没有意义。

    第二个简单的事情,如果任务在某种程度上不适合这样的解决方案,就是简单地在容器中挂载 /mnt/resource 和 /mapr(通常挂载非常快)并使用 cp 或 rsync。对于高达数百 MB 的文件,这通常比 distcp 快。即使它在技术上并不快,但通常更容易,适度的速度差异并不重要。显然,这种方法通过一台机器汇集所有数据,因此它确实有速度限制。

    第三,distcp 通常应该像您期望的那样工作(也就是说,我非常希望它可以在任何运行 Hadoop 的机器上执行)。然而,陷阱有很多机会。例如,您的节点 0 可能认为它是 1 的集群,并且根本没有将程序发送到集群执行。另一方面,distcp 中可能有一个代码路径,它假定它可以在调用节点上进行参数检查,以确定执行是否成功。你可以检查 Yarn 队列等来弄清楚到底发生了什么。

    我还应该指出,如果您有支持,您可以随时 ping 支持团队。那些喜欢帮助用户的人。他们甚至帮助我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2010-11-12
      相关资源
      最近更新 更多