HBase使用snappy压缩

芒果11个月前技术文章480

安装编译环境依赖
yum install -y automake autoconf gcc-c++ cmake libedit libtool openssl-devel ncurses-devel
安装maven(本地这种模式可以忽略)
yum install maven
首先安装snappy
每个节点下载snappy源码包 并解压了
cd /opt
wget https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.3.tar.gz/7358c82f133dc77798e4c2062a749b73/snappy-1.1.3.tar.gz
tar -zxvf snappy-1.1.3.tar.gz
编译并安装snappy
cd snappy-1.1.3
./configure
make
sudo make install
验证安装完成
ll /usr/local/lib/ | grep snappy

945640B9-A26B-4535-8222-09740EF8401B.png
编译安装默认是安装到/usr/local/lib下的,拷贝到/usr/lib64下
sudo cp -dr /usr/local/lib/* /usr/lib64
安装HADOOP-SNAPPY
安装hadoop-snappy需要一系列的依赖
sudo yum -y install gcc c++ autoconf automake libtool
安装
git clone https://github.com/electrum/hadoop-snappy.git
cd hadoop-snappy && mvn package

1FD6792A-F081-410B-BE83-BD899C5EF221.png

B6EDA2E0-4375-4A79-A143-AC0516A91E57.png

Hadoop配置snappy 添加snappy本地库到 $HADOOP_HOME/lib/native/ 目录下
cp -dr /usr/local/lib/* /opt/app/hadoop-3.3.1/lib/native
将hadoop-snappy-0.0.1-SNAPSHOT.jar拷贝到 $HADOOP_HOME/lib、snappy的library拷贝到$HADOOP_HOME/lib/native/目录下即可
cp -r /opt/hadoop-snappy/target/hadoop-snappy-0.0.1-SNAPSHOT.jar $HADOOP_HOME/lib
cp /opt/hadoop-snappy/target/hadoop-snappy-0.0.1-SNAPSHOT-tar/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/
在每个节点上,编辑Hadoop的配置文件core-site.xml,添加以下内容:
<property>
    <name>io.compression.codecs</name>
        <value>
                org.apache.hadoop.io.compress.GzipCodec,
                org.apache.hadoop.io.compress.DefaultCodec,
                org.apache.hadoop.io.compress.BZip2Codec,
                org.apache.hadoop.io.compress.SnappyCodec
        </value>
</property>
<property>
  <name>io.compression.codec.snappy.native</name>
  <value>true</value>
</property>
29497880-0F16-45BD-84A7-F88F2E9DA789.png
添加配置到mapred-site.xml
<!-- 这个参数设为true启用压缩 -->
<property>
      <name>mapreduce.output.fileoutputformat.compress</name>
      <value>true</value>
</property>
<property>
      <name>mapreduce.map.output.compress</name>      
      <value>true</value>    
</property>
<!-- 使用编解码器 -->
<property>
      <name>mapreduce.output.fileoutputformat.compress.codec</name>
      <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
C71D5581-9FAD-4113-A4AA-5A02A6E999F9.png
在每个节点上,编辑Hadoop的配置文件hadoop-env.sh,添加以下内容:
配置指定了Hadoop加载本地库的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
E427515E-C07F-435C-BB57-443F5C0A7BBB.png
重启Hadoop
start-all.sh
到此配置snappy完成,下面命令是验证(其中/input是HDFS上的目录,下面随便丢几个文本文件即可。同时/output目录必须是不存在的,否则会失败)
hadoop jar /opt/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output11

image.png

执行若成功,查看/output11目录下的文件即可

hdfs dfs -ls /output11
413749D7-7A24-4D0E-A519-18CE52BAC6E2.png
将hadoop-snappy-0.0.1-SNAPSHOT.jar拷贝到$HBASE_HOME/lib 目录下,同时将$HADOOP_HOME/lib/native软连接到$HBASE_HOME/lib/native/(native目录没有的话创建一个就好了)
cp /opt/hadoop-snappy/target/hadoop-snappy-0.0.1-SNAPSHOT.jar $HBASE_HOME/lib
mkdir -p /opt/app/hbase-2.1.0/lib/native
ln -s /opt/app/hadoop/lib/native /opt/app/hbase-2.1.0/lib/native/Linux-amd64-64
在每个节点上,编辑HBase的配置文件hbase-env.sh,添加以下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/:/usr/local/lib/
export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/:/usr/local/lib/
export CLASSPATH=$CLASSPATH:$HBASE_LIBRARY_PATH
添加配置到hbase-site.xml
<property>
      <name>hbase.regionserver.codecs</name>
      <value>snappy</value>
</property>
重启hbase
start-hbase.sh
49A4E369-263E-4840-9F4F-6CACC0C0AF89.png
验证snappy压缩
在任意一个节点上,进入HBase Shell,使用CompressionTest工具验证snappy支持是否启用,并且本地库是否可以加载。例如:
hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://hadoop1/hbase snappy
在HBase Shell中,创建一个使用snappy压缩的表,并查看表的描述信息。例如:
create 't1', { NAME => 'cf1', COMPRESSION => 'SNAPPY' }
describe 't1'


相关文章

Debezium抽取SQL Server同步kafka

Debezium抽取SQL Server同步kafka

ebezium SQL Server连接器捕获SQL Server数据库模式中发生的行级更改。官方2.0文档:https://debezium.io/documentation/reference/2...

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC:疫情下,第三方云管理服务市场逆势增长!

IDC预测,中国第三方云管理服务在2019年到2023年间将保持54.7%的增长率,2023年市场规模预计达到32.1亿美元。2019年第三方云管理服务市场呈现出如下特点:云管理服务成为众多服务商的战...

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL首先查看csv数据类型创建类似的hive表并导入数据CREATE TABLE data (    province STRING,    code INT,...

nginx配置反向代理某个url

nginx配置反向代理某个url

本文讲的这个漏洞 主要是为了解决漏洞扫描的问题我先介绍下这个漏洞主要是因为访问https://172.16.120.17:18090/ws/v1/cluster/info这个 yarn rest的一个...

kubernetes HPA

kubernetes HPA

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 ReplicaSet、Deployment 或者中的 Pod 数量cat hpa-deploy.yaml a...

Jenkinsfile说明

Jenkinsfile说明

当我们在使用jenkins进行CI/CD的时候,简单的内容我们可以通过jenkins页面来实现配置。但是如果有复杂的需求还是需要通过jenkinsfile来实现jenkinsfile简单介绍Jenki...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。