Hi all,

I got stuck trying to enable the LZO compression on a table. I installed 
the native-lzo library on each tablet server (sudo apt-get install 
liblzo2-dev) and set the compression codecs libraries in the Hadoop 
core-site.xml:
<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.GzipCodec,
      org.apache.hadoop.io.compress.DefaultCodec,
      org.apache.hadoop.io.compress.BZip2Codec,
      com.hadoop.compression.lzo.LzoCodec,
      com.hadoop.compression.lzo.LzopCodec
  </value>
</property>
<property>
  <name>io.compression.codec.lzo.class</name>
  <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

 I also added the path to the library to the general.classpaths property 
of accumulo-site.xml: 
<property>
      <name>general.classpaths</name>
      <value>
        ....
 /usr/hdp/current/hadoop-client/lib/hadoop-lzo-0.6.0.2.5.0.0-1245.jar,
 
/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64/libgplcompression.so,
                /lib/x86_64-linux-gnu/liblzo2.so.2
        </value>
</property>

I tested that the lzo library is working correctly compressing a file via 
a MapReduce Job, but when I asked Accumulo to compact the table on which I 
enabled the LZO compression I got this error on each tablet server:
MajC Unexpected exception, extent = 1z;???????????<;???????????.
        java.lang.RuntimeException: native-lzo library not available
                at 
com.hadoop.compression.lzo.LzoCodec.getCompressorType(LzoCodec.java:155)
                at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:150)
                at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:165)
                at 
org.apache.accumulo.core.file.rfile.bcfile.Compression$Algorithm.getCompressor(Compression.java:502)
                at 
org.apache.accumulo.core.file.rfile.bcfile.BCFile$Writer$WBlockState.<init>(BCFile.java:192)
                at 
org.apache.accumulo.core.file.rfile.bcfile.BCFile$Writer.prepareDataBlock(BCFile.java:487)
                at 
org.apache.accumulo.core.file.blockfile.impl.CachableBlockFile$Writer.prepareDataBlock(CachableBlockFile.java:89)
                at 
org.apache.accumulo.core.file.rfile.RFile$LocalityGroupWriter.append(RFile.java:429)
                at 
org.apache.accumulo.core.file.rfile.RFile$Writer.append(RFile.java:596)
                at 
org.apache.accumulo.core.file.BloomFilterLayer$Writer.append(BloomFilterLayer.java:141)
                at 
org.apache.accumulo.tserver.tablet.Compactor.compactLocalityGroup(Compactor.java:367)
                at 
org.apache.accumulo.tserver.tablet.Compactor.call(Compactor.java:223)
                at 
org.apache.accumulo.tserver.tablet.Tablet._majorCompact(Tablet.java:1850)
                at 
org.apache.accumulo.tserver.tablet.Tablet.majorCompact(Tablet.java:1967)
                at 
org.apache.accumulo.tserver.tablet.CompactionRunner.run(CompactionRunner.java:44)
                at 
org.apache.htrace.wrappers.TraceRunnable.run(TraceRunnable.java:57)
                at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at 
org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.java:35)
                at java.lang.Thread.run(Thread.java:745)
What am I missing?
Thanks

Regards,
Max


Reply via email to