在hadoop2.X集群中安装压缩工具snappy(主要用于hbase)
2017-02-25 00:38
441 查看
在hadoop集群中snappy是一种比较好的压缩工具,相对gzip压缩速度和解压速度有很大的优势,而且相对节省cpu资源,但压缩率不及gzip。在此不讨论孰优孰劣,各有各的用途。
在hadoop2.X中最好使用源码编译生成snappy的so文件,如果使用其它已编译好的so文件,可能会报出
在此,hadoop集群采用的版本是
若安装多个版本的jdk,请将上述的/usr/java/default软链接至java7的目录
验证安装
hadoop-2.6.0-cdh5.9.0-src.tar.gz(下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.9.0-src.tar.gz,也可下载二进制包,内包含src源码:
snappy1.1.1.tar.gz(下载地址:http://pkgs.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.1.tar.gz/8887e3b7253b22a31f5486bca3cbc1c2/snappy-1.1.1.tar.gz)
protobuf-2.5.0.tar.gz(下载地址:https://github.com/google/protobuf/releases/tag/v2.5.0 建议选择2.5.0版本,不支持最新版本)
查看snappy是否安装完成
验证安装
如上通过mvn安装,不过通过此安装方法会从官方下载相关所需文件,时间漫长,我大概花了20小时左右,目前由于对mvn工具不是很熟悉,尝试多种方法均未提升下载速度(包括修改下载源,也许修改方式有误,报错找不到相关包)
编译成功后,snappy的so文件会生成在如下目录:
将此目录下的文件拷贝到hadoop集群中的hadoop下的lib/native目录和hbase下的lib/native/Linux-amd64-64目录下,没有则新建,各节点均需拷贝。
修改配置文件:
重启hadoop和hbase。
测试是否安装成功
上述的hostname一般要改为namenode的hostname。
此时,若修改hbase中表压缩为snappy,会将此表进入RIT状态,并无法自动恢复,原因在于,hbase(版本1.2)默认关闭压缩状态(关于此,官方文档有所介绍),须在配置文件中开启:
重启hbase。
如上hadoop集群的snappy算是基本安装ok。
在hadoop2.X中最好使用源码编译生成snappy的so文件,如果使用其它已编译好的so文件,可能会报出
not support错误,以下便是hadoop2.X编译生成snappy的so文件的步骤:
在此,hadoop集群采用的版本是
hadoop-2.6.0-cdh5.9.0,系统是
centos7.2。
安装前提:
java 7(使用java 8会报一个错误)java安装并配置PATH
# rpm -ivh jdk-7uXXX-linux-x64.rpm #XXX为版本号 # cat /etc/profile #....................... export JAVA_HOME=/usr/java/default export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH:$JRE_HOME/lib
若安装多个版本的jdk,请将上述的/usr/java/default软链接至java7的目录
验证安装
# source /etc/profile # java -version java version "1.7.0_XXX" Java(TM) SE Runtime Environment (build 1.7.X_XXX-XXX) Java HotSpot(TM) 64-Bit Server VM (build XXX.XXX-XXX, mixed mode)
yum安装部分基础软件
yum -y install gcc gcc-c++ libtool cmake maven zlib-devel
解压安装基础包
下载如下压缩包:hadoop-2.6.0-cdh5.9.0-src.tar.gz(下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.9.0-src.tar.gz,也可下载二进制包,内包含src源码:
hadoop-2.6.0-cdh5.9.0-tar.gz)
snappy1.1.1.tar.gz(下载地址:http://pkgs.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.1.tar.gz/8887e3b7253b22a31f5486bca3cbc1c2/snappy-1.1.1.tar.gz)
protobuf-2.5.0.tar.gz(下载地址:https://github.com/google/protobuf/releases/tag/v2.5.0 建议选择2.5.0版本,不支持最新版本)
安装snappy
# tar xf snappy-1.1.1.tar.gz # cd snappy-1.1.1 # ./configure # make && make install
查看snappy是否安装完成
# ll /usr/local/lib/ | grep snappy
安装protobuf
# tar xf protobuf-2.5.0.tar.gz # cd protobuf-2.5.0 # ./configure # make && make install
验证安装
# protoc --version libprotoc 2.5.0
编译生成hadoop-native-Libraries(包括snappy)
# tar xf hadoop-2.6.0-cdh5.9.0-src.tar.gz # cd hadoop-2.6.0-cdh5.9.0 # mvn package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy
如上通过mvn安装,不过通过此安装方法会从官方下载相关所需文件,时间漫长,我大概花了20小时左右,目前由于对mvn工具不是很熟悉,尝试多种方法均未提升下载速度(包括修改下载源,也许修改方式有误,报错找不到相关包)
编译成功后,snappy的so文件会生成在如下目录:
hadoop-2.6.0-cdh5.9.0/hadoop-dist/target/hadoop-2.6.0-cdh5.9.0/lib/native
将此目录下的文件拷贝到hadoop集群中的hadoop下的lib/native目录和hbase下的lib/native/Linux-amd64-64目录下,没有则新建,各节点均需拷贝。
修改配置文件:
$ cat core-site.xml <property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property>
重启hadoop和hbase。
测试是否安装成功
$ hadoop checknative -a hadoop: true ...../hadoop-2.6.0-cdh5.9.0/lib/native/libhadoop.so zlib: true /usr/local/lib/libz.so.1 snappy: true ...../hadoop-2.6.0-cdh5.9.0/lib/native/libsnappy.so.1 lz4: true revision:10301 bzip2: false openssl: true /lib64/libcrypto.so $ hbase org.apache.hadoop.hbase.util.CompressionTest /tmp/crq snappy .................................................... SUCCESS $ hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://hostname/tmp/crq snappy .................................................... SUCCESS
上述的hostname一般要改为namenode的hostname。
此时,若修改hbase中表压缩为snappy,会将此表进入RIT状态,并无法自动恢复,原因在于,hbase(版本1.2)默认关闭压缩状态(关于此,官方文档有所介绍),须在配置文件中开启:
$ cat hbase-site.xml <property> <name>hbase.block.data.cachecompressed</name> <value>true</value> </property>
重启hbase。
在hbase中使用snappy
建表时加入snappy
$ echo "create 'snappyTest',{NAME=>'f',COMPRESSION => 'SNAPPY'} " | hbase shell
修改表压缩工具
$ echo "disable 'snappyTest2'" | hbase shell #禁用表 $ echo "desc 'snappyTest2'" | hbase shell #查看表结构 $ echo "alter 'snappyTest2',{NAME=>'f',COMPRESSION => 'SNAPPY'} " | hbase shell #压缩修改为snappy $ echo "enable 'snappyTest2'" | hbase shell #使用该表 $ echo "major_compact 'snappyTest2'" | hbase shell #最好使该表的region compact一次
如上hadoop集群的snappy算是基本安装ok。
结语
通过今天的简单测试压缩率能达到25%左右,虽然不及gzip等压缩工具,但由于其考虑了cpu资源利用率和压缩,解压数率,这个压缩率还是令人满意的,至少我挺满足了。相关文章推荐
- hadoop2.X集群上Hbase的安装
- 【原创】hadoop集群监控工具ambari安装
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop-Linux集群批量部署管理工具parallel-ssh(PSSH)的安装与使用
- hadoop1.2.1+zookeeper-3.4.5+hbase-0.94.1集群安装
- centos集群上安装ganglia-3.6.0监控hadoop-2.2.0和hbase-0.96.0
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop集群监测工具——ganglia安装实例
- hadoop集群监控工具Apache Ambari安装配置教程
- 【Hadoop/Hbase】centos上安装并设置Snappy/LZO压缩方式
- hadoop1.2.1+zookeeper-3.4.5+hbase-0.94.1集群安装
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop集群监测工具——ganglia安装实例
- HADOOP__HBASE集群安装(自带ZOOKEEPER)
- Hadoop压缩-SNAPPY算法安装
- hadoop集群监控工具ambari安装
- Hadoop HBase 配置 安装 Snappy 终极教程
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- hadoop1.2.1+zookeeper-3.4.5+hbase-0.94.1集群安装过程详解
- hadoop2.2.0 hbase0.96 安装snappy