[英]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.