hbase snappy 安装_hbase 支持snappy压缩 | 墨荷琼林官网-连载教程

本文详细介绍了如何在Hadoop 2.8.5上启用Snappy压缩,包括安装Snappy库、编译Hadoop源码、重新安装Hadoop集群,并解决可能遇到的问题,如protobuf版本不匹配、缺少依赖库等。
摘要由CSDN通过智能技术生成

hbase支持snappy, lz4, bizp2,lzo,zstd等各种压缩。

hbase要支持上面各种压缩算法,要hdfs底层支持压缩才可以。hadoop 2.8.5 默认支持 GZ , snappy, lz4, bzip2四种压缩算法。 hadoop2.9.x 增加zstd。 本文思路根据官方文档 NativeLibraries来操作的。 大致思路是先把snappy的c++ lib库安装好,然后在重新编译hadoop 源代码,用编译生成的hadoop来重新安装集群。

前言

安装完hadoop以后发现 hadoop 的native库都没有关联上。

hadoop checknative -a

hadoop: false

zlib: false

snappy: false

lz4: false

bzip2: false

openssl: false

原因主要是我直接下载了hadoop官网已经编译好的二进制库安装的hadoop集群。很多native 库没有关联上。下面讲解重新编译hadoop源码安装hadoop过程。

安装前准备

注意编译hadoop源码的机器和最终安装hadoop集群的机器可以不是一台。但是编译hadoop源码机器的的lib库地址要和正式hadoop集群的lib库的地址一致(比如在编译hadoop源码机器的snappy的lib地址要和安装hadoop集群的机器的地址一致等)

1. centos6/aliyunos6

2. 确保安装JDK并配置JAVA_HOME的机器

安装教程见JDK安装教程, 配置环境变量不熟悉的可以自行查找资料。

3. 下载maven 3

这个直接在maven官网下载 解压缩就行,不用配置任何额外的环境变量。

4. yum install 需要的库

这些库大部分之编译的时候需要的,运行时候基本用不上,如果再启动hadoop的过程中真的遇到问题,那么可以再安装集群上也安装一些这些依赖。

yum install -y gcc c++

yum install gcc-c++

yum install -y autoconf

yum install -y automake

yum install -y libtool

yum install -y cmake

5. 安装protobuf 2.5.0

每个版本的hadoop依赖的protobuf版本都不一样,要想找到当前版本依赖protobuf的版本,那么可以

grep -R "protobuf" ./*

注意hadoop2.8.5编译的时候 依赖的protobuf版本只能是 2.5.0。否则会报

on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 2.6.1', expected version is '2.5.0'

错误。 如果版本不一样可以找到 protobuf2.6.1的安装目录然后执行下面命令删除历史版本。

./make clean

安装protobuf教程见 安装protobuf教程

6. 安装snappy lib

wget https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz

tar -zxvf snappy-1.1.3.tar.gz

cd snappy-1.1.3

./configure

make

make install

# 默认安装目录

ls /usr/local/lib | grep sna

7. 下载hadoop-2.8.5源码

编译hadoop源码

/opt/wzapp/install/apache-maven-3.6.0/bin/mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy -Drequire.hadoop -Drequire.lz4 -Drequire.bzip2 -Drequire.zlib

时间大概要20分钟

重新安装hadoop集群

把hadoop-2.8.5-src/hadoop-dist/target/hadoop-2.8.5 这个目录压缩然后拷贝到集群各个节点,然后用老的配置文件覆盖过来。重启集群。

hadoop checknative -a

hadoop: true /opt/app/hadoop-2.8.5/lib/native/libhadoop.so

zlib: true /lib64/libz.so.1

snappy: true /usr/local/lib/libsnappy.so.1

lz4: true revision:10301

bzip2: true /lib64/libbz2.so.1

openssl: true /usr/local/ssl/lib/libcrypto.so

hbase 支持 snappy

# 注意Linux-amd64-64 目录需要自己创建

cp $HADOOP_HOME/lib/native $HBASE_HOME/lib/native/Linux-amd64-64 中

# 把 snappy 拷贝到 $HBASE_HOME/lib/native/Linux-amd64-64 中

cp /usr/local/lib/libsnappy* $HBASE_HOME/lib/native/Linux-amd64-64

# 修改 hbase-env.sh

export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/

#启动hbase cluster

create 'snappy-test', NAME=> 'cf', COMPRESSION => 'snappy'

create 'gz-test', NAME=> 'cf', COMPRESSION => 'GZ'

create 'lz4-test' , NAME=> 'cf', COMPRESSION => 'lz4'

操作过程中如果遇到如下问题可以参考如下解决方法:

zlibc, bzip2, openssl 没装

安装 zlibc( ubuntu叫做 zlib1g zlib1g-dev)

http://www.zlib.net/

wget https://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz

tar -zxvf zlib-1.2.11.tar.gz

cd /opt/moudles/Zlib/zlib-1.2.11/

./configure

make && make install

ll /usr/local/lib

bzip2

yum install lzo-devel zlib-devel bzip2

sudo yum install ncurses-devel gcc gcc-c++

wget https://jaist.dl.sourceforge.net/project/bzip2/bzip2-1.0.6.tar.gz

tar -zxvf bzip2-1.0.6.tar.gz

cd bzip2-1.0.6/

make -f Makefile-libbz2_so

make && make install

openssl lib

yum install openssl-devel

wget https://www.openssl.org/source/openssl-1.1.0j.tar.gz

tar -zxvf openssl-1.1.0j.tar.gz

cd openssl-1.1.0j

./config --prefix=/usr/local/

./config -t

make

make install

openssl version

protobuf 没安装问题

[protoc, --version] failed: java.io.IOException: Cannot run program "protoc": error=2, No such file or directory

安装protobuf, 方法见 protobuf安装

protobuf 版本不对

on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 2.6.1', expected version is '2.5.0'

如果版本不一样可以找到 protobuf2.6.1的安装目录然后执行下面命令删除历史版本。

./make clean

安装protobuf教程见 安装protobuf教程

automake 没安装

[ERROR] Failed to execute goal org.codehaus.mojo:make-maven-plugin:1.0-beta-1:autoreconf (compile) on project hadoop-common: autoreconf command returned an exit value != 0. Aborting build; see debug output for more information. ->

yum install autocong

yum install automake

yum install libtool

zlib没安装

configure: error: Zlib headers were not found... native-hadoop library needs zlib to build. Please install the requisite zlib development package.

yum install --reinstall zlibc zlib1g zlib1g-dev

IOException: Compression algorithm 'snappy' previously failed test

IOException: Compression algorithm 'snappy' previously failed test

这个问题分两步排查

执行 hadoop checknative -a, 看下是否hadoop的native lib完全配置(重点看snappy是否支持),如果不支持重回本文前面步骤,安装snappy

如果hadoop支持snappy,但是创建hbase表的时候不支持snappy,那么就简单了, 把snappy的 linux lib文件拷贝到 hbase lib/native/Linux-amd64-64 中,然后配合hbase的lib目录包含上面目录就ok了。

# 把 snappy 拷贝到 $HBASE_HOME/lib/native/Linux-amd64-64 中

cp /usr/local/lib/libsnappy* $HBASE_HOME/lib/native/Linux-amd64-64

# 修改 hbase-env.sh

export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值