我有一个使用hadoop处理1000个小文件的场景。然后将hadoop作业的输出用作非hadoop算法的输入。在当前的工作流中,数据被读取、转换为序列文件、处理和生成的小文件然后以序列文件的形式输出到hdfs。然而,非hadoop算法不能理解序列文件。因此,我编写了另一个简单的hadoop作业,从sequence文件中读取结果文件的数据,并创建最终的小文件,这些文件可以由非hadoop算法使用。
这里需要注意的是,对于最后一个作业,我必须从hdfs中读取序列文件,然后写入每个节点的本地文件系统,以便由非hadoop算法进行处理。我试着将输出路径设置为 file:///<local-fs-path>
使用hadoop LocalFileSystem
班级。但是,这样做只会将最终结果输出到namenode的本地文件系统。
为了完成这幅图,我用yarn设置了10个节点的hadoop。在hadoop yarn模式下,是否有方法从hdfs读取数据并将结果写入每个处理节点的本地文件系统?
谢谢
1条答案
按热度按时间bz4sfanl1#
不是真的。你可以写信给
LocalFileSystem
,您不能要求yarn在所有节点上运行应用程序。另外,根据集群的配置方式,yarn的节点管理器可能不会在系统的所有节点上运行。一种可能的解决方法是将转换的文件保存在hdfs中,然后首先调用非hadoop进程
hdfs dfs -copyToLocal
.