【问题标题】:Hadoop Yarn write to local file systemHadoop Yarn 写入本地文件系统
【发布时间】:2018-01-28 20:40:44
【问题描述】:

我有一个场景,我使用 Hadoop 处理 1000 个小文件。然后将 Hadoop 作业的输出用作非 Hadoop 算法的输入。在当前的工作流程中,数据被读取、转换为序列文件、处理和生成的小文件然后以序列文件的形式输出到 HDFS。但是,非 Hadoop 算法无法理解 Sequence File。因此,我编写了另一个简单的 Hadoop 作业来从序列文件中读取结果文件的数据,并创建可供非 Hadoop 算法使用的最终小文件。

这里的问题是,对于最后的工作,我必须从 HDFS 读取序列文件并写入每个节点的本地文件系统以由非 Hadoop 算法处理。我尝试将输出路径设置为 file:///<local-fs-path> 并使用 Hadoop LocalFileSystem 类。但是,这样做只会将最终结果输出到 namenode 的本地文件系统。

只是为了完成图片,我用 Yarn 设置了 10 个节点的 Hadoop。 Hadoop Yarn模式有没有办法从HDFS读取数据并将结果写入每个处理节点的本地文件系统?

谢谢

【问题讨论】:

  • 您可以挂载 NFS 驱动器...如果您只是需要收集所有结果,我看不到写入本地数据节点的好处。此外,hadoop 在处理数千个小文件时表现不佳,所以您确定您使用的是正确的进程吗?
  • 不幸的是,项目要求如前所述。尽管有很多文件,但使用 Hadoop 处理实际上为我们节省了 20 多个小时的工作时间,所以我想说我们对 Hadoop 很好。感谢您推荐 NFS,我们已经考虑过了。

标签: java hadoop hdfs hadoop-yarn


【解决方案1】:

不是真的。虽然您可以写信给LocalFileSystem,但您不能要求 YARN 在所有节点上运行您的应用程序。此外,根据集群的配置方式,YARN 的节点管理器可能不会在系统的所有节点上运行。

一种可能的解决方法是将转换后的文件保存在 HDFS 中,然后让您的非 Hadoop 进程首先调用 hdfs dfs -copyToLocal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多