Hi Milind,
thank you for your help,
the piece of code I mentioned is not from reduce task, it is from main-method of my test class. But I tried to run it in main( ) without any map-reduce with speculative execution turned off and the error is still there.

here is another example how you can get the error:

package test;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.JobConf;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Lock;
import org.apache.nutch.analysis.NutchDocumentAnalyzer;
import org.apache.nutch.indexer.FsDirectory;
import org.apache.nutch.util.NutchConfiguration;
import org.apache.nutch.util.NutchJob;

public class Test {

   public static void main(String[] args) {
Path index=new Path("test_index"); Configuration conf = NutchConfiguration.create();
       JobConf job = new NutchJob(conf);
       FileSystem fs=null;
       FsDirectory dir=null;
       try {
           fs = FileSystem.get(job);
           fs.mkdirs(index);
dir = new FsDirectory(fs, index, false, conf);
           /* here: exactly the same what Lucene does */
           Lock lock=dir.makeLock(IndexWriter.WRITE_LOCK_NAME);
           lock.obtain(IndexWriter.WRITE_LOCK_TIMEOUT);
       } catch (IOException e) {
           e.printStackTrace();
} }
}

I get:
java.io.IOException: Lock obtain timed out: [EMAIL PROTECTED]/write.lock
       at org.apache.lucene.store.Lock.obtain(Lock.java:69)
       at test.Test.main(Test.java:22)

It seems to be some incompatibility problem between Lucene and DistributedFileSystem.
Hadoop doesn't support file locks anymore, does it?


Des
Des,

Is speculative execution turned on in your config ? Since your reducer has
side effects (both codes), it should be turned off.

Put the following in hadoop-site.xml:

<property>
  <name>mapred.speculative.execution</name>
  <value>false</value>
  <description>If true, then multiple instances of some map and reduce tasks
               may be executed in parallel.</description>
</property>

- Milind


On 7/27/07 4:36 AM, "DES" <[EMAIL PROTECTED]> wrote:

hello,

I tried nutch with hadoop nightly builds (in hudson #135 and newer) and got
following problem:


java.io.IOException: Lock obtain timed out:

[EMAIL 
PROTECTED]://xxx.xxx.xxx.xxx:9000/user/nutch/crawl/indexes/part-00020/write.loc>
k
at org.apache.lucene.store.Lock.obtain(Lock.java:69)
at org.apache.lucene.index.IndexReader.aquireWriteLock(IndexReader.java:526)

at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:551)
at org.apache.nutch.indexer.DeleteDuplicates.reduce(DeleteDuplicates.java:451)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java
:323)
at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:1763)


I think the reason could be the lucene locks.
I just tried following code and got exactly the same error:

String indexPath="crawl/index";
Path index=new Path(indexPath);
Configuration conf = NutchConfiguration.create();
JobConf job = new NutchJob(conf);
FileSystem fs = FileSystem.get(job);
FsDirectory dir=new FsDirectory(fs, index, false, conf);
IndexReader reader = IndexReader.open(dir);
reader.deleteDocument(0);

can somebody tell me if there is a solution for that? or should I just drop
back to older hadoop version? (e.g. 0.12.x)

thanks

des

--
Milind Bhandarkar
408-349-2136
([EMAIL PROTECTED])



Reply via email to