-1
今天我在兩個節點的hadoop上運行了一個作業。我的程序在地圖100%後掛起,減少無法運行。 返回的信息是:減少後無法運行地圖100%
14/01/15 20:30:49 INFO input.FileInputFormat: Total input paths to process : 25
14/01/15 20:30:49 INFO util.NativeCodeLoader: Loaded the native-hadoop library
14/01/15 20:30:49 WARN snappy.LoadSnappy: Snappy native library not loaded
14/01/15 20:30:51 INFO mapred.JobClient: Running job: job_201401152029_0001
14/01/15 20:30:52 INFO mapred.JobClient: map 0% reduce 0%
14/01/15 20:30:58 INFO mapred.JobClient: map 7% reduce 0%
14/01/15 20:31:01 INFO mapred.JobClient: map 15% reduce 0%
14/01/15 20:31:22 INFO mapred.JobClient: map 100% reduce 0%
我的源代碼是:
PollingImage.java:
package imagePolling;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.*;
import org.apache.hadoop.mapreduce.lib.output.*;
import org.apache.hadoop.util.*;
public class PollingImage extends Configured implements Tool{
public int run(String[] args) throws Exception{
Job job = new Job(getConf());
job.setJarByClass(PollingImage.class);
job.setJobName("polling_image");
job.setMapperClass(PollingMapper.class);
job.setReducerClass(PollingReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
//job.setNumReduceTasks(0);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.setInputPaths(job,new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
boolean success = job.waitForCompletion(true);
return success?0:1;
}
public static void main(String[] args) {
try{
int ret = ToolRunner.run(new PollingImage(), args);
System.exit(ret);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
PollingMapper.java:
package imagePolling;
import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.*;
public class PollingMapper extends Mapper<LongWritable, Text, Text, Text> {
private Text nameKey=new Text();
public void map(LongWritable key,Text value,Context ctx) throws IOException,InterruptedException {
Path filePath=((FileSplit)ctx.getInputSplit()).getPath();
String name=filePath.getName().replaceAll(".txt", "");
nameKey = new Text(name);
ctx.write(nameKey, value);
}
}
PollingReducer.java:
package imagePolling;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.Reducer;
public class PollingReducer extends Reducer<Text, Text, Text, Text> {
@Override
public void reduce(Text key,Iterable<Text> values,Context ctx) throws IOException,InterruptedException {
Text v=new Text("a fool");
ctx.write(key, v);
}
}
我已經閱讀了logs.It只是顯示地圖已經完成,沒有任何關於減少。
這些不是日誌幫助很大,你會在jobtracker頁面找到更多有用的日誌。通常jobtracker位於主節點上:http:// hadoop-master:50030/jobtracker.jsp – wlk