Hello all,

I'm attempting to index a large internal website with 6.7 m urls and I'm running into a map failure after fetching (for 5+ days):

2009-07-20 07:09:23,316 INFO  fetcher.Fetcher - -activeThreads=0
2009-07-20 07:09:23,806 WARN  mapred.LocalJobRunner - job_local_0005
org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for taskTracker/jobcache/job_local_0005/attempt_local_0005_m_000000_0/output/file.out at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:335) at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:124) at org.apache.hadoop.mapred.MapOutputFile.getOutputFileForWrite(MapOutputFile.java:61) at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1209) at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:867)
       at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:138)

hadoop-site.xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!--
We need LOTS of memory... And we need to disable the gc overhead limit, per this page: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom -->
<property>
 <name>mapred.child.java.opts</name>
 <value>-Xmx4096m -XX:-UseGCOverheadLimit</value>
</property>

</configuration>

nutch-site.xml (excluding http.agent directives for brevity):

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<!-- http.agent properties excluded -->

<property>
 <name>http.timeout</name>
 <value>20000</value>
 <description>The default network timeout, in milliseconds.</description>
</property>

<property>
 <name>fetcher.threads.fetch</name>
 <value>20</value>
 <description>The number of FetcherThreads the fetcher should use.
   This is also determines the maximum number of requests that are
   made at once (each FetcherThread handles one connection).</description>
</property>

<property>
 <name>fetcher.threads.per.host</name>
 <value>20</value>
 <description>This number is the maximum number of threads that
   should be allowed to access a host at one time.</description>
</property>

<property>
 <name>fetcher.server.delay</name>
 <value>0.1</value>
 <description>The number of seconds the fetcher will delay between
  successive requests to the same server.</description>
</property>

</configuration>

Relevant environment variables:
NUTCH_JAVA_HOME=/usr/lib/jvm/jre-1.7.0-icedtea.x86_64
NUTCH_HEAPSIZE=3072
JAVA_HOME=/usr/lib/jvm/jre-1.7.0-icedtea.x86_64

I ran nutch with the following command/cwd:
[/home/fred/nutch-1.0]$ bin/nutch crawl urls_wiki_mirror -dir crawl_wiki_mirror -threads 3 -depth 1

The seed file in urls_wiki_mirror contains 6739469 urls... Those are the only urls I wish to crawl -- hence depth 1. The configuration I have set up allows me to crawl this local server with 3 fetchers at the same time at a rate that it doesn't overwhelm the server.

I'm using defaults for temp directories. Thus, /tmp/hadoop-fred/ is the temp file location. The error message notes the following partial path: taskTracker/jobcache/job_local_0005/attempt_local_0005_m_000000_0/output/file.out

I figure that equates to this full path:
/tmp/hadoop-fred/mapred/local/taskTracker/jobcache/job_local_0005/attempt_local_0005_m_000000_0/output/

The contents of this directory is spill[0-906].out... Nothing else. No file.out. There is 68G of data in this folder (ie. it looks to have downloaded everything i need)... There is 9+ GB of free space on the filesystem -- is it possible this is insufficient?

So, what happened? Is there a way I can recover without re-crawling?

I am running on a Fedora Core 8 virtual machine with two cores, 4 GB memory.

Let me know if any more information is needed...

Thanks,
/FjK

Reply via email to