I kind of read the hadoop 1.1.1 source code for this, it is very strange for me 
now.
>From the error, it looks like runtime JVM cannot find the native method of 
>org/apache/hadoop/io/compress/snappy/SnappyCompressor.compressBytesDirect()I, 
>that my guess from the error message, but from the log, it looks like all the 
>native library, include native-hadoop and native snappy are both loaded, as 
>shown in the failed task log:
2013-10-04 16:33:21,635 INFO org.apache.hadoop.util.NativeCodeLoader: Loaded 
the native-hadoop library2013-10-04 16:33:22,006 INFO 
org.apache.hadoop.util.ProcessTree: setsid exited with exit code 02013-10-04 
16:33:22,020 INFO org.apache.hadoop.mapred.Task:  Using 
ResourceCalculatorPlugin : 
org.apache.hadoop.util.LinuxResourceCalculatorPlugin@282528252013-10-04 
16:33:22,111 INFO org.apache.hadoop.mapred.MapTask: numReduceTasks: 12013-10-04 
16:33:22,116 INFO org.apache.hadoop.mapred.MapTask: io.sort.mb = 2562013-10-04 
16:33:22,168 INFO org.apache.hadoop.mapred.MapTask: data buffer = 
204010960/2550136962013-10-04 16:33:22,168 INFO 
org.apache.hadoop.mapred.MapTask: record buffer = 671088/8388602013-10-04 
16:33:22,342 WARN org.apache.hadoop.io.compress.snappy.LoadSnappy: Snappy 
native library is available2013-10-04 16:33:22,342 INFO 
org.apache.hadoop.io.compress.snappy.LoadSnappy: Snappy native library 
loaded2013-10-04 16:33:44,054 INFO org.apache.hadoop.mapred.MapTask: Starting 
flush of map output2013-10-04 16:33:44,872 WARN 
org.apache.hadoop.io.compress.snappy.SnappyCompressor: 
java.lang.UnsatisfiedLinkError: 
org/apache/hadoop/io/compress/snappy/SnappyCompressor.initIDs()V2013-10-04 
16:33:44,872 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new 
compressor2013-10-04 16:33:44,928 INFO 
org.apache.hadoop.mapred.TaskLogsTruncater: Initializing logs' truncater with 
mapRetainSize=-1 and reduceRetainSize=-12013-10-04 16:33:44,951 INFO 
org.apache.hadoop.io.nativeio.NativeIO: Initialized cache for UID to User 
mapping with a cache timeout of 14400 seconds.2013-10-04 16:33:44,951 INFO 
org.apache.hadoop.io.nativeio.NativeIO: Got UserName yzhang for UID 1000 from 
the native implementation2013-10-04 16:33:44,952 FATAL 
org.apache.hadoop.mapred.Child: Error running child : 
java.lang.UnsatisfiedLinkError: 
org/apache/hadoop/io/compress/snappy/SnappyCompressor.compressBytesDirect()I    
    at 
org.apache.hadoop.io.compress.snappy.SnappyCompressor.compress(SnappyCompressor.java:229)
        at 
org.apache.hadoop.io.compress.BlockCompressorStream.compress(BlockCompressorStream.java:141)
        at 
org.apache.hadoop.io.compress.BlockCompressorStream.finish(BlockCompressorStream.java:135)
        at org.apache.hadoop.mapred.IFile$Writer.close(IFile.java:135)        
at 
org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1450)
        at 
org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1297)       
 at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)        at 
org.apache.hadoop.mapred.MapTask.run(MapTask.java:371)        at 
org.apache.hadoop.mapred.Child$4.run(Child.java:255)        at 
java.security.AccessController.doPrivileged(AccessController.java:310)        
at javax.security.auth.Subject.doAs(Subject.java:573)        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)
        at org.apache.hadoop.mapred.Child.main(Child.java:249)
So is there any way I can check if 
$HADOOP_HOME/lib/native/Linux-amd64-64/libhadoop.so contains the native method 
as expected above?This hadoop 1.1.0 is not compiled by me, but coming from IBM 
biginsight 2.1 as we are evaluating it. I will create a ticket for them, but is 
this kind of strange, as everything loaded shown in the log, but complains 
later about a native method? Any reason can cause this?
Yong
From: [email protected]
To: [email protected]
Subject: enable snappy on hadoop 1.1.1
Date: Fri, 4 Oct 2013 15:44:34 -0400




Hi, 
I am using hadoop 1.1.1. I want to test to see the snappy compression with 
hadoop, but I have some problems to make it work on my Linux environment.
I am using opensuse 12.3 x86_64. 
First, when I tried to enable snappy in hadoop 1.1.1 by:
            conf.setBoolean("mapred.compress.map.output", true);            
conf.set("mapred.output.compression.type", "RECORD");            
conf.set("mapred.map.output.compression.codec", 
"org.apache.hadoop.io.compress.SnappyCodec");
I got the following error in my test MR job:
Exception in thread "main" java.lang.RuntimeException: native snappy library 
not available
So I download the snappy 1.1.0 from https://code.google.com/p/snappy/, compile 
it and install it successfully under /opt/snappy-1.1.0, and then I link the 
/opt/snappy-1.1.0/lib64/libsnappy.so to /user/lib64/libsnappy.so
Now after I restart the hadoop and tried my test MR job again, this time, it 
didn't give me the originally error, but a new error like this:
Error: java.lang.UnsatisfiedLinkError: 
org/apache/hadoop/io/compress/snappy/SnappyCompressor.compressBytesDirect()I    
 at 
org.apache.hadoop.io.compress.snappy.SnappyCompressor.compress(SnappyCompressor.java:229)
    at 
org.apache.hadoop.io.compress.BlockCompressorStream.compress(BlockCompressorStream.java:141)
 at 
org.apache.hadoop.io.compress.BlockCompressorStream.finish(BlockCompressorStream.java:135)
   at org.apache.hadoop.mapred.IFile$Writer.close(IFile.java:135)  at 
org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1450)
     at 
org.apache.hadoop.mapred.MapTask$MapOutputBuffer.access$1800(MapTask.java:852)  
     at 
org.apache.hadoop.mapred.MapTask$MapOutputBuffer$SpillThread.run(MapTask.java:1343)
I wrote a test problem, like hadoop did load the library:
System.loadlibrary("snappy")
it works fine in my test program.
I don't know why at runtime, the Class SnappyCompressor.compressByteDirect() 
gave back that kind of error. From the source code, it looks like a native c 
program from here
https://code.google.com/p/hadoop-snappy/source/browse/trunk/src/main/java/org/apache/hadoop/io/compress/snappy/SnappyCompressor.java
Any idea why this is happening on my environment?
Thanks
Yong                                                                            
  

Reply via email to