【问题标题】:Running commands on Hadoop using Java Runtime.exec()使用 Java Runtime.exec() 在 Hadoop 上运行命令
【发布时间】:2012-11-06 00:06:54
【问题描述】:

有一个名为“cufflinks”的程序运行如下:

cufflinks -o <output-dir>  <input-file>

此程序将 1 个文件作为输入,并在“输出目录”中生成 4 个文件作为输出。

我正在尝试使用映射器类中的 Runtime.exec() 在 Hadoop 集群上运行相同的程序。我正在设置

output-dir=/some/path/on/HDFS

我期待这 4 个文件将在 HDFS 上生成为 o/p。但是,事实并非如此,HDFS 上的 o/p 目录不包含这 4 个文件中的任何一个。

然后我尝试设置

输出目录=/tmp/output/

它成功了。

谁能建议为什么它不能在 HDFS 上运行?我需要做什么才能使其在 HDFS 上运行?

谢谢。

【问题讨论】:

    标签: hadoop mapreduce hdfs


    【解决方案1】:

    问题是袖扣程序应该使用 HDFS API 内部在 HDFS 中创建文件,而不是常规文件操作。

    【讨论】:

    • 嗯,这就是问题所在。但是,我的印象是,一旦您在 Hadoop 上使用 Runtime.exec() 运行程序,Hadoop 框架会将 HDFS 视为常规文件系统,并将像在常规文件系统上一样在 HDFS 上创建文件。那么,没有办法吗?
    • HDFS 是分布式文件系统,而 NTFS/FAT/EXT* 不是,每个系统都有不同的 API 与它们交互。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2019-06-25
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多