HBase集羣配置SNAPPY壓縮

1 介紹

  • 大數據時代,海量數據的存儲和分析是一個巨大的挑戰,給hadoop或者hbase集羣添加數據壓縮的能力,是必不可少的,通過壓縮不但能節約磁盤空間,而且也能節省集羣間網絡帶寬的損耗,從而間接提高了集羣任務的整體執行效率,hadoop已經自帶支持一些比較常用的壓縮,如gz,bz等,使用hadoop checknative -a命令可以查看hadoop支持的幾種壓縮格式。
  • 主流的HBase壓縮方式有LZO和Snappy,Snappy的壓縮比會稍微優於LZO,具體的對比,可參考這篇文章:http://www.cnblogs.com/zhengrunjian/p/4527165.html
  • Snappy是一個壓縮/解壓庫。它不針對最大壓縮,它的目標是非常高的速度和合理的壓縮。Snappy壓縮速度爲250mb /s以上,不需要彙編代碼。
  • 需要注意的是,Snappy是需要單獨下載並編譯安裝配置的。
軟件名稱 版本
Hadoop 2.7.7
HBase 1.2.9
jdk 1.8.0
maven 3.5.4
SNAPPY 1.1.3
protobuf 2.5.0

2 環境準備

2.1 安裝編譯環境依賴

yum install -y automake autoconf gcc-c++ cmake libedit libtool openssl-devel ncurses-devel

2.2 安裝maven

yum install wget -y
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
tar xvf apache-maven-3.5.4-bin.tar.gz -C /opt/
ln -s /opt/apache-maven-3.5.4 /opt/apps/maven

2.3 配置環境變量

vi /etc/profile

export MAVEN_HOME=/opt/apps/maven
export PATH=$PATH:$MAVEN_HOME/bin

#環境變量生效
source /etc/profile

3 安裝SNAPPY

wget https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.3.tar.gz/7358c82f133dc77798e4c2062a749b73/snappy-1.1.3.tar.gz
tar xvf snappy-1.1.3.tar.gz -C /opt/
cd /opt/snappy-1.1.3
./configure
make
make install
#卸載命令 make uninstall

忽視如下打印信息,不造成影響
make[1]: Leaving directory `/opt/apps/snappy-1.1.3’

  • 驗證安裝完成
ll /usr/local/lib/ | grep snappy
  • 如下所示安裝成功
    在這裏插入圖片描述

4 安裝protobuf

wget http://sourceforge.net/projects/protobuf/files/protobuf-2.5.0.tar.gz/download -O protobuf-2.5.0.tar.gz
tar xvf protobuf-2.5.0.tar.gz -C /opt/
cd /opt/protobuf-2.5.0/
./autogen.sh
./configure
make
make install

忽視如下打印信息,不造成影響
make[1]: Leaving directory `/opt/apps/snappy-1.1.3’

  • 驗證安裝完成
protoc --version

5 Hadoop Snappy 源碼編譯

編譯過程較長

  • 編譯之前先修改maven下載鏡像
vi /opt/apps/maven/conf/settings.xml

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>       
    </mirror>
</mirrors>
  • 下載編譯hadoop源碼
wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/hadoop-2.7.7-src.tar.gz
tar xvf hadoop-2.7.7-src.tar.gz -C /opt/
cd /opt/hadoop-2.7.7-src
export MAVEN_OPTS="-Xms256m -Xmx512m"
mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-common -Drequire.snappy -X
#若重新編譯
#mvn clean package -Pdist,native -DskipTests -Dtar -rf :hadoop-common -Drequire.snappy -X
  • 查看編譯結果
[root@hdc-data4 hadoop-2.7.2-src]# ls hadoop-dist/target/hadoop-2.7.2/lib/native/
libhadoop.a libhadooppipes.a libhadoop.so libhadoop.so.1.0.0 libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0

6 Hadoop 安裝配置 Snappy

  • 將編譯結果 hadoop-dist/target/hadoop-2.7.7/lib/native/下的所有文件拷貝到hadoop安裝目錄下lib/native/
cp -r /opt/hadoop-2.7.7-src/hadoop-dist/target/hadoop-2.7.7/lib/native/* /opt/apps/hadoop/lib/native/
  • 修改core-site.xml,添加
<!-- 用於壓縮/解壓的CompressionCodec列表,多種算法使用逗號分隔的類名  -->
<property> 
    <name>io.compression.codecs</name> 
    <value>org.apache.hadoop.io.compress.SnappyCodec</value> 
</property>
  • 修改yarn-site.xml , 添加
<!-- 壓縮MapReduce作業的輸出 -->
<property>
    <name>mapreduce.map.output.compress</name>
    <value>true</value>
</property>
<!-- 指定壓縮算法的類名 -->
<property>
    <name>mapred.map.output.compress.codec</name>
    <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
  • 將修改的配置同步到集羣
scp -r /opt/apps/hadoop/lib/native/* root@hdc-data5:/opt/apps/hadoop/lib/native/
scp -r /opt/apps/hadoop/lib/native/* root@hdc-data6:/opt/apps/hadoop/lib/native/
scp -r /opt/apps/hadoop/etc/hadoop/core-site.xml root@hdc-data5:/opt/apps/hadoop/etc/hadoop/
scp -r /opt/apps/hadoop/etc/hadoop/core-site.xml root@hdc-data6:/opt/apps/hadoop/etc/hadoop/
scp -r /opt/apps/hadoop/etc/hadoop/yarn-site.xml root@hdc-data5:/opt/apps/hadoop/etc/hadoop/
scp -r /opt/apps/hadoop/etc/hadoop/yarn-site.xml root@hdc-data6:/opt/apps/hadoop/etc/hadoop/
  • 驗證
hadoop checknative -a

7 HBase 配置 Snappy

mkdir -p /opt/apps/hbase/lib/native/Linux-amd64-64
cp -r /opt/apps/hadoop/lib/native/* /opt/apps/hbase/lib/native/Linux-amd64-64/
  • 修改 hbase-env.sh,添加
  • 同步配置到HBASE集羣
  • 重啓服務及測試
touch /tmp/a
hbase org.apache.hadoop.hbase.util.CompressionTest /tmp/a snappy
bin/hbase shell
create 'tsnappy',{ NAME => 'f', COMPRESSION => 'snappy'}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章