转载请标明出处:http://blackwing.iteye.com/blog/1943575
之前为HBase增加SNAPPY压缩的一篇文章:http://blackwing.iteye.com/blog/1942037
本以为这样hbase就能使用SNAPPY了,但发现RS的log不停报错:
根据官方教程再做一遍:http://hbase.apache.org/book/snappy.compression.html
还是报错,后来发现差异。服务器安装的是ubuntu 64位版本,在hadoop的lib/native/下是Linux-amd64-64文件夹,而在HBase的lib/native目录下默认却是Linux-i386-32,我就是把hadoop和snappy的native so文件拷贝到Linux-i386-32下。
所以在hbase的lib/natvie下新建Linux-amd64-64,再把hadoop、snappy的so文件拷过来,重启hbase,再创建表:
rs的log正常,跟着写入数据,flush后,看到已经正常压缩,rs log无错误。到此终于完整了整合snappy。
PS:确保HBASE能正确加载codec,可以在hbase-site.xml中配置:
这样设置后,hbase启动就会检查,如果不能正确加载,rs会启动失败,正常启动则说明加载成功,比较保险。
之前为HBase增加SNAPPY压缩的一篇文章:http://blackwing.iteye.com/blog/1942037
本以为这样hbase就能使用SNAPPY了,但发现RS的log不停报错:
IOException: Compression algorithm 'snappy' previously failed test
根据官方教程再做一遍:http://hbase.apache.org/book/snappy.compression.html
还是报错,后来发现差异。服务器安装的是ubuntu 64位版本,在hadoop的lib/native/下是Linux-amd64-64文件夹,而在HBase的lib/native目录下默认却是Linux-i386-32,我就是把hadoop和snappy的native so文件拷贝到Linux-i386-32下。
所以在hbase的lib/natvie下新建Linux-amd64-64,再把hadoop、snappy的so文件拷过来,重启hbase,再创建表:
create 'snappy',{NAME=>'t',COMPRESSION=>'SNAPPY'}
rs的log正常,跟着写入数据,flush后,看到已经正常压缩,rs log无错误。到此终于完整了整合snappy。
PS:确保HBASE能正确加载codec,可以在hbase-site.xml中配置:
<property>
<name>hbase.regionserver.codecs</name>
<value>snappy</value>
</property>
这样设置后,hbase启动就会检查,如果不能正确加载,rs会启动失败,正常启动则说明加载成功,比较保险。