簡體   English   中英

Hadoop 1.2.1-使用分布式緩存

[英]Hadoop 1.2.1 - using Distributed Cache

我已經開發了使用分布式緩存的Hadoop應用程序。 我使用Hadoop 2.9.0。 在獨立和偽分布式模式下,一切正常。

司機:

public class MyApp extends Configured implements Tool{
public static void main(String[] args) throws Exception{
        if(args.length < 2) {
            System.err.println("Usage: Myapp -files cache.txt <inputpath> <outputpath>");

        System.exit(-1);
    }

    int res = ToolRunner.run(new Configuration(), new IDS(), args);
    System.exit(res);

...

映射器:

public class IDSMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
@Override
    protected void setup(Context context) throws IOException {
        BufferedReader bfr = new BufferedReader(new FileReader(new File("cache.txt")));

開始: sudo bin/hadoop jar MyApp.jar -files cache.txt /input /output

現在,我需要測量實際Hadoop集群上的執行時間。 不幸的是,我可以使用Hadoop集群以及Hadoop 1.2.1版本。 因此,我創建了一個新的Eclipse項目,引用了相應的Hadoop 1.2.1 jar文件,並且一切都可以在獨立模式下正常運行。 但是,嘗試讀取分布式緩存文件時,使用Hadoop 1.2.1的偽分布式模式會失敗,並在Mapper類(設置方法)中出現FileNotFoundException。

我必須在Hadoop 1.2.1中以其他方式處理分布式緩存文件嗎?

問題出在運行方法中。 我使用了不帶參數的Job.getInstance方法,我應該這樣使用:

Job job = Job.getInstance(getConf());

我仍然不知道為什么Hadoop 2.9.0僅適用於:

Job job = Job.getInstance();

但是getConf解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM