基于linux6.x和hadoop2.7.3和hbase1.2.6;
目前hadoop支持4种压缩,优略如下
由于速度快的原因,snappy压缩被应用的更广泛,我们今天在应用中开启
很多博客说要去下载hadoop-snappy源码,然后编译,再添加到hadoop中,这种只适用于0.x版本的hadoop,在1.x以后,hadoop源码已经包含了hadoop-snappy,无需下载了,只不过hadoop的编译文件中没有将该功能编译进去,所以只需要重新编译hadoop,将snappy功能编译即可,不过首先,你的服务器需要安装snappy,所以我们分为两大步操作:安装snappy和编译hadoop
安装snappy
1.安装支持环境yum -y install gcc gcc-c++ autoconf automake libtools
2.下载并解压snappy-1.1.1.tar.gz
进入解压目录,执行
./configure
make && make install
编译完成之后会将snappy相关.so链接库默认安装到/usr/local/lib目录下面(无需操作,自动完成)
编译hadoop
安装支持环境
1.yum -y install cmake zlib-devel ant libssl-dev openssl-devel lzo-devel
2.下载并解压protobuf:https://github.com/google/protobuf
进入目录执行
./configure
make && make install
3.下载并解压firebugs:http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz
4.下载并解压maven:http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
5.配置MAVEN_HOME,FINDBUGS_HOME,PROTOBUF_HOME并导入到PATH
编译hadoop
1.修改maven的镜像设置,地址设置为阿里云镜像地址,这样编译项目下载依赖时会快很多
2.进入hadoop目录,mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
3.编译完成后,jar包在hadoop/hadoop-dist目录下,直接解压使用即可
4.修改hadoop的core-site.xml
<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property>
5.启动hadoop并验证,hadoop checknative -a
hbase的snappy设置
1.进入maven重新编译的目录:cd hadoop/hadoop-dist/target/hadoop-2.7.3/lib/native/
2.将该目录下文件复制到hbase目标目录,hbase-1.2.6/lib/native/Linux-amd64-64,没有该目录就新建
3.将/usr/local/lib下的文件同步到另外的集群机器
至此,hadoop的snappy压缩就完成了,那么hbase里需要配置压缩吗?该版本hbase已经包含了hadoop-snappy包,如果hadoop已经配置了snappy压缩,hbase无需额外配置,直接使用snappy即可
hbase安装好验证压缩:hbase org.apache.hadoop.hbase.util.CompressionTest test1 snappy