Amit

You may also need to check whether the native library you are using includes
Snappy or not. 

 

For example, when you compile from source and the libsnappy.so is not found
then snappy support is not included as part of the native library for Hadoop
(for force it to fail if libsnappy is not found the require.snappy flag is
required).

 

A quick test could be this:

 

htf@german:~/hadoop/lib/native$ nm libhadoop.so  | grep -i snappy

0000000000005e10 T
Java_org_apache_hadoop_io_compress_snappy_SnappyCompressor_compressBytesDire
ct

0000000000005db0 T
Java_org_apache_hadoop_io_compress_snappy_SnappyCompressor_getLibraryName

0000000000006200 T
Java_org_apache_hadoop_io_compress_snappy_SnappyCompressor_initIDs

0000000000006450 T
Java_org_apache_hadoop_io_compress_snappy_SnappyDecompressor_decompressBytes
Direct

0000000000006860 T
Java_org_apache_hadoop_io_compress_snappy_SnappyDecompressor_initIDs

000000000000d030 T
Java_org_apache_hadoop_util_NativeCodeLoader_buildSupportsSnappy

0000000000215958 b SnappyCompressor_clazz

0000000000215970 b SnappyCompressor_compressedDirectBuf

0000000000215978 b SnappyCompressor_directBufferSize

0000000000215960 b SnappyCompressor_uncompressedDirectBuf

0000000000215968 b SnappyCompressor_uncompressedDirectBufLen

0000000000215988 b SnappyDecompressor_clazz

0000000000215990 b SnappyDecompressor_compressedDirectBuf

0000000000215998 b SnappyDecompressor_compressedDirectBufLen

00000000002159a8 b SnappyDecompressor_directBufferSize

00000000002159a0 b SnappyDecompressor_uncompressedDirectBuf

0000000000215980 b dlsym_snappy_compress

00000000002159b0 b dlsym_snappy_uncompress

 

If you don't see any snappy-related objects in the library, then it hasn't
been compiled with Snappy support. 

 

Note the info I give you is based on recent Hadoop releases (like 2.2.0),
but something similar should apply for your release.

 

Regards

.g

 

From: bharath vissapragada [mailto:bharathvissapragada1...@gmail.com] 
Sent: Thursday, January 02, 2014 5:56 AM
To: User
Subject: Re: Setting up Snappy compression in Hadoop

 

Your natives should be in LD_LIBRARY_PATH or java.library.path for hadoop to
pick them up. You can try adding export HADOOP_OPTS=$HADOOP_OPTS
-Djava.library.path=<Path to your natives lib> to hadoop-env.sh in TTs and
clients/gateways and restart TTs and give it another try. The reason its
working for Hbase is you are manually pointing HBASE_LIBRARY_PATH to the
natives. My guess is they are in a wrong location.

 

On Thu, Jan 2, 2014 at 5:07 PM, Amit Sela <am...@infolinks.com> wrote:

I did everything mentioned in the link Ted mentioned, and the test actually
works, but using Snappy for MapReduce map output compression still fails
with "native snappy library not available".

 

On Wed, Jan 1, 2014 at 6:37 PM, bharath vissapragada
<bharathvissapragada1...@gmail.com> wrote:

Did you build it for your platform? You can do an "ldd" on the .so file to
check if the dependent libs are present. Also make sure you placed it in the
right directory for your platform (Linux-amd64-64 or Linux-i386-32)

 

On Wed, Jan 1, 2014 at 10:02 PM, Ted Yu <yuzhih...@gmail.com> wrote:

Please take a look at http://hbase.apache.org/book.html#snappy.compression

 

Cheers

 

On Wed, Jan 1, 2014 at 8:05 AM, Amit Sela <am...@infolinks.com> wrote:

Hi all, 

 

I'm running on Hadoop 1.0.4 and I'd like to use Snappy for map output
compression.

I'm adding the configurations:

 

configuration.setBoolean("mapred.compress.map.output", true);

configuration.set("mapred.map.output.compression.codec",
"org.apache.hadoop.io.compress.SnappyCodec");

 

And I've added libsnappy.so.1 to $HADOOP_HOME/lib/native/Linux-amd64-64/

 

Still, all map tasks fail with "native snappy library not available".

 

Could anyone elaborate on how to install Snappy for Hadoop ?

 

Thanks, 

 

Amit.

 

 

 

 

Reply via email to