2015-03-30 40 views
5

Amazon EMR kullanarak bir Wikipedia article view dataset incelemeye çalışıyorum. Bu veri seti, üç aylık bir dönem boyunca sayfa görüntüleme istatistiklerini içermektedir (1 Ocak 2011 - 31 Mart 2011). Makaleyi o zamandaki en çok görüntülemeyle bulmaya çalışıyorum. İşte kullanıyorum kodu:AWS EMR Adım oluşturulduğu iş başarısız oldu

public class mostViews { 

public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 

    private final static IntWritable views = new IntWritable(1); 
    private Text article = new Text(); 

    public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 

     String line = value.toString(); 

     String[] words = line.split(" "); 
     article.set(words[1]); 
     views.set(Integer.parseInt(words[2])); 
     output.collect(article, views); 
    } 
} 

public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { 

    public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 

     int sum = 0; 

     while (values.hasNext()) 
     { 
      sum += values.next().get(); 
     } 
     output.collect(key, new IntWritable(sum)); 
    } 
} 

public static void main(String[] args) throws Exception { 
    JobConf conf = new JobConf(mostViews.class); 
    conf.setJobName("wordcount"); 

    conf.setOutputKeyClass(Text.class); 
    conf.setOutputValueClass(IntWritable.class); 

    conf.setMapperClass(Map.class); 
    conf.setCombinerClass(Reduce.class); 
    conf.setReducerClass(Reduce.class); 

    conf.setInputFormat(TextInputFormat.class); 
    conf.setOutputFormat(TextOutputFormat.class); 

    FileInputFormat.setInputPaths(conf, new Path(args[0])); 
    FileOutputFormat.setOutputPath(conf, new Path(args[1])); 

    JobClient.runJob(conf); 
} 
} 

kod kendisi çalışır, ancak ben bir küme oluşturmak ve özel bir kavanoz eklediğinizde, bunun bazen başarısız ama işe yarıyor diğer zamanlarda. Tüm veri kümesinin girdi olarak kullanılması başarısız olmasına neden olur, ancak bir ay boyunca, örneğin Ocak, tamamlar. tüm veri kümesi kullanıldığında çalıştırdıktan sonra, ben 'kontrolör' günlük dosyasına baktım ve alakalı olduğunu düşünüyorum bu, hangi bulundu:

2015-03-10T11:50:12.437Z INFO Synchronously wait child process to complete :  hadoop jar /mnt/var/lib/hadoop/steps/s-22ZUAWNM... 
2015-03-10T12:05:10.505Z INFO Process still running 
2015-03-10T12:20:12.573Z INFO Process still running 
2015-03-10T12:35:14.642Z INFO Process still running 
2015-03-10T12:50:16.711Z INFO Process still running 
2015-03-10T13:05:18.779Z INFO Process still running 
2015-03-10T13:20:20.848Z INFO Process still running 
2015-03-10T13:35:22.916Z INFO Process still running 
2015-03-10T13:50:24.986Z INFO Process still running 
2015-03-10T14:05:27.056Z INFO Process still running 
2015-03-10T14:20:29.126Z INFO Process still running 
2015-03-10T14:35:31.196Z INFO Process still running 
2015-03-10T14:50:33.266Z INFO Process still running 
2015-03-10T15:05:35.337Z INFO Process still running 
2015-03-10T15:11:37.366Z INFO waitProcessCompletion ended with exit code 1 :  hadoop jar /mnt/var/lib/hadoop/steps/s-22ZUAWNM... 
2015-03-10T15:11:40.064Z INFO Step created jobs: job_1425988140328_0001 
2015-03-10T15:11:50.072Z WARN Step failed as jobs it created failed.  Ids:job_1425988140328_0001 

kimse sorunun ne ve bunu düzeltmek için ne yapabilirim bana söyleyebilir misiniz? Bir ay boyunca çalıştığı ama iki ya da üç ay boyunca çalışmadığı gerçeği, veri setinin çok büyük olabileceğini düşünmeme rağmen emin değilim. Hala bu Hadoop/EMR şeyinde yeniyim, böylece bıraktığım herhangi bir bilgi varsa bana haber verin. Herhangi bir yardım veya tavsiye büyük ölçüde takdir edilecektir.

Şimdiden teşekkürler!

+0

Çözümü bulamadınız mı? –

+0

Tam olarak değil, veri kümesinin boyutunu küçültmüştüm ve işe yaramış görünüyordu. Yine de bunun neden ilk başta olduğu hakkında hiçbir fikrim yok. – spoon

cevap

0

Bu hatalar genellikle HDFS (EMR düğümündeki sabit diskler) veya Bellek üzerinde yer kalmadıysa gerçekleşir. İkincisi ben çalışırdım "/ mnt/var/lib/Hadoop/adım/s-22ZUAWNM ..."

:

Birincisi, mesajı yönlendirecek günlükleri okumaya çalışarak başlayacak Daha büyük bir EMR (daha fazla disk ve RAM veya daha fazla çekirdek örneği olan EC2 örnekleri) oluşturun.