here is another example:

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.index.IndexWriter;
import org.apache.lucene.store.Lock;
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);
            fs.lock(new Path(index, IndexWriter.WRITE_LOCK_NAME), false);
            System.out.println("locked");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

it brings this exception:
org.apache.hadoop.ipc.RemoteException: java.io.IOException: Failure when
trying to obtain lock on /user/nutch/test_index/write.lock
        at org.apache.hadoop.dfs.NameNode.obtainLock(NameNode.java:441)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:340)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:566)

        at org.apache.hadoop.ipc.Client.call(Client.java:470)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:165)
        at org.apache.hadoop.dfs.$Proxy0.obtainLock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(
RetryInvocationHandler.java:82)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(
RetryInvocationHandler.java:59)
        at org.apache.hadoop.dfs.$Proxy0.obtainLock(Unknown Source)
        at org.apache.hadoop.dfs.DFSClient.lock(DFSClient.java:478)
        at
org.apache.hadoop.dfs.DistributedFileSystem$RawDistributedFileSystem.lock(
DistributedFileSystem.java:195)
        at org.apache.hadoop.fs.ChecksumFileSystem.lock(
ChecksumFileSystem.java:550)
        at test.Test.main(Test.java:31)


any clues?


On 7/27/07, Des Sant <[EMAIL PROTECTED]> wrote:
>
> 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:
> >>
> >>
> > Lock
> @hdfs://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