HBase使用snappy压缩

芒果4个月前技术文章128

安装编译环境依赖
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'


相关文章

寻找CPU使用率高进程方法

寻找CPU使用率高进程方法

背景节点报CPU使用率高,需要定位是什么进程占用CPU使用率高。CPU使用率持续较高在对应节点使用 “top”命令,然后键盘输入“P”,即按照CPU使用率排序进程。执行ps -ef | grep &l...

HBase导出表和备份表操作

HBase导出表和备份表操作

HBase提供了几种导出数据的方式,包括使用HBase自带的工具和使用HBase的API。本文主要是讲的使用HBase自带的工具进行导出首先我们创建一个表 插入一些数据hbase shelllistc...

Debezium抽取SQL Server同步kafka

Debezium抽取SQL Server同步kafka

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

深度解读|云掣《云运维服务白皮书》全方位解析!

深度解读|云掣《云运维服务白皮书》全方位解析!

如今全球各行各业纷纷进行数字化变革,为适应数字经济环境下企业生存发展和市场变化的需要,企业选择进行主动的、系统性、整体性的数字化转型升级。大数据、云计算、人工智能、区块链等新一代信息通信技术为企业的数...

hive创建hbase映射表

hive创建hbase映射表

hbase创建表,导入数据/opt/app/hbase-2.1.0/bin/hbase shell查看已有表,创建新表,查看表结构listcreate 'student', 'info', 'scor...

nginx配置反向代理某个url

nginx配置反向代理某个url

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

发表评论    

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