`
weitao1026
  • 浏览: 993867 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop或者hbase集群添加数据压缩的能力

阅读更多

在DT大数据时代,海量数据的存储和分析是一个巨大的挑战,给我们的hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩我们不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行效率,hadoop已经自带支持一些比较常用的压缩,如gz,bz等,使用hadoop checknative -a命令可以查看你的hadoop支持几种压缩格式:

Java代码 复制代码 收藏代码
  1. 15/12/30 14:51:11 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native  
  2. 15/12/30 14:51:11 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library  
  3. Native library checking:  
  4. hadoop:  true /ROOT/server/hadoop/lib/native/libhadoop.so  
  5. zlib:    true /lib64/libz.so.1  
  6. snappy:  true /ROOT/server/hadoop/lib/native/libsnappy.so.1  
  7. lz4:     true revision:99  
  8. bzip2:   true /lib64/libbz2.so.1  
  9. openssl: true /usr/lib64/libcrypto.so  
15/12/30 14:51:11 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
15/12/30 14:51:11 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop:  true /ROOT/server/hadoop/lib/native/libhadoop.so
zlib:    true /lib64/libz.so.1
snappy:  true /ROOT/server/hadoop/lib/native/libsnappy.so.1
lz4:     true revision:99
bzip2:   true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so



当今大多数的互联网公司对于hadoop压缩的选型,通常是Snappy和LZO,两者都有不错的压缩比和解压速度,关于具体的对比,请参考此篇文章:http://www.cnblogs.com/zhengrunjian/p/4527165.html
本篇主要介绍在Hbase中使用snappy压缩,如果你的hadoop已经安装了snappy,那么接下来就会非常简单了,如果你的hadoop集群还不支持snappy压缩,那么也没关系,请参考散仙以前的文章:http://qindongliang.iteye.com/blog/2222145

版本介绍:
Apache Hadoop2.7.1
Apache Hbase0.98.12

安装测试步骤如下:
(1)给hadoop集群正确安装snappy压缩
(2)拷贝hadoop/lib下的native下的所有so文件和hadoop-snappy-0.0.1-SNAPSHOT.jar到hbase/lib下面
(3)如果有多台机器,每台机器都要拷贝分发
(4)拷贝完成后,重启hbase集群
(5)执行命令验证snappy是否验证成功,如果打印succes,即安装成功

Java代码 复制代码 收藏代码
  1. [webmaster@Hadoop-0-187 logs]$ hbase org.apache.hadoop.hbase.util.CompressionTest /user/webmaster/word/in/tt2  snappy                   
  2. 2015-12-30 15:14:11,460 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available  
  3. SLF4J: Class path contains multiple SLF4J bindings.  
  4. SLF4J: Found binding in [jar:file:/ROOT/server/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]  
  5. SLF4J: Found binding in [jar:file:/ROOT/server/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]  
  6. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.  
  7. 2015-12-30 15:14:12,607 INFO  [main] util.ChecksumType: Checksum using org.apache.hadoop.util.PureJavaCrc32  
  8. 2015-12-30 15:14:12,609 INFO  [main] util.ChecksumType: Checksum can use org.apache.hadoop.util.PureJavaCrc32C  
  9. 2015-12-30 15:14:12,916 INFO  [main] compress.CodecPool: Got brand-new compressor [.snappy]  
  10. 2015-12-30 15:14:12,923 INFO  [main] compress.CodecPool: Got brand-new compressor [.snappy]  
  11. 2015-12-30 15:14:12,932 ERROR [main] hbase.KeyValue: Unexpected getShortMidpointKey result, fakeKey:testkey, firstKeyInBlock:testkey  
  12. 2015-12-30 15:14:13,218 INFO  [main] compress.CodecPool: Got brand-new decompressor [.snappy]  
  13. SUCCESS  
[webmaster@Hadoop-0-187 logs]$ hbase org.apache.hadoop.hbase.util.CompressionTest /user/webmaster/word/in/tt2  snappy                 
2015-12-30 15:14:11,460 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/ROOT/server/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/ROOT/server/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
2015-12-30 15:14:12,607 INFO  [main] util.ChecksumType: Checksum using org.apache.hadoop.util.PureJavaCrc32
2015-12-30 15:14:12,609 INFO  [main] util.ChecksumType: Checksum can use org.apache.hadoop.util.PureJavaCrc32C
2015-12-30 15:14:12,916 INFO  [main] compress.CodecPool: Got brand-new compressor [.snappy]
2015-12-30 15:14:12,923 INFO  [main] compress.CodecPool: Got brand-new compressor [.snappy]
2015-12-30 15:14:12,932 ERROR [main] hbase.KeyValue: Unexpected getShortMidpointKey result, fakeKey:testkey, firstKeyInBlock:testkey
2015-12-30 15:14:13,218 INFO  [main] compress.CodecPool: Got brand-new decompressor [.snappy]
SUCCESS




确认成功后,执行hbase shell命令行,采用下面的几个命令,建2个表,一个指定snappy压缩,另外一个不启动压缩,最后插入几十条数据对比结果。


Java代码 复制代码 收藏代码
  1. //创建一个表,指定snappy压缩  
  2. create 'tsnappy', { NAME => 'f', COMPRESSION => 'snappy'}  
  3. //创建一个表,不启动压缩  
  4. create 'nosnappy', { NAME => 'f'}  
  5. //查看表描述  
  6. describe 'tsnappy'  
  7. //put一条数据  
  8. put 'tsnappy''row1''f:col1''value'  
  9. //统计hbase表数据  
  10. count 'tsnappy'  
  11. //查看数据  
  12.  scan 'tsnappy'  
  13. truncate 'tsnappy' 清空表里面的数据  
  14. //修改已有的表为snappy压缩  
  15. alter apData,{NAME=>'cf1',COMPRESSION=>'snappy'}  
  16. //禁用表  
  17. disable 'my_table'  
  18. //修改支持压缩  
  19. alter 'my_table', {NAME => 'my_column_family', COMPRESSION => 'snappy'}  
  20. //激活表  
  21. enable 'my_table'  
//创建一个表,指定snappy压缩
create 'tsnappy', { NAME => 'f', COMPRESSION => 'snappy'}
//创建一个表,不启动压缩
create 'nosnappy', { NAME => 'f'}
//查看表描述
describe 'tsnappy'
//put一条数据
put 'tsnappy', 'row1', 'f:col1', 'value'
//统计hbase表数据
count 'tsnappy'
//查看数据
 scan 'tsnappy'
truncate 'tsnappy' 清空表里面的数据
//修改已有的表为snappy压缩
alter apData,{NAME=>'cf1',COMPRESSION=>'snappy'}
//禁用表
disable 'my_table'
//修改支持压缩
alter 'my_table', {NAME => 'my_column_family', COMPRESSION => 'snappy'}
//激活表
enable 'my_table'



然后插入50行数据,一个字段,内容大概4M,附件里面有Hbase操作的Java类,插入数据完整后,执行命令:
hadoop fs -du -s -h /hbase/data/default/*对比查看开启压缩和不开启压缩索占的存储空间,大约为1:9,当然这也和自己的存储的数据有关系,总体来说,还是不错的。


 

分享到:
评论

相关推荐

    HBase集群配置SNAPPY压缩

    大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...

    Hadoop权威指南 中文版

     ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理  ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性  ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop  ·使用高级查询语言...

    Hadoop集群上Snappy压缩算法的安装配置

    离线hadoop集群下,snappy在hbase中的安装配置步骤

    手把手教你搭建分布式Hadoop集群视频教程(视频+讲义+笔记+软件+配置)

    05_搭建分布式HBase集群 06_SQOOP安装及导入数据到HBase表 07_HBase Backup Masters配置、启动、测试 08_HBase 压缩配置测试 09_分布式集群搭建:大数据框架回顾说明 10_分布式集群搭建:集群环境说明及基本...

    中文版Hadoop权威指南

    本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。  什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是...

    Hadoop: The Definitive Guide

    ·熟悉Hadoop的数据和IlO构件,用于压缩、数据集成、序列化和持久处理 ·洞悉编~MapReduce实际应用时的常见陷阱和高级特性 ·设计、构建和管理一个专用的Hadoop集群或在云上运行Hadoop ·使用高级查询语言Pig来处理...

    Hadoop 权威指南(中文版)

     ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理  ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性  ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop  ·使用高级查询...

    Hadoop权威指南 第二版(中文版)

     本书是Hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行Hadoop集群。 目录 第1章 初识Hadoop  数据!数据!  数据存储与分析  与其他系统相比  关系型数据库管理系统...

    Hadoop权威指南(中文版)2015上传.rar

    使用Hadoop分析数据 map阶段和reduce阶段 横向扩展 合并函数 运行一个分布式的MapReduce作业 Hadoop的Streaming Ruby版本 Python版本 Hadoop Pipes 编译运行 第3章 Hadoop分布式文件系统 HDFS的设计 HDFS的概念 数据...

    Hadoop实战中文版

    《Hadoop实战》作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是谷歌实现云计算的重要基石。《Hadoop实战》分为3个部分,深入浅出地...

    Hadoop权威指南

    设计、构建和管理专用的Hadoop集群——或者在云中运行Hadoop;使用Sqoop从关系型数据库载入数据到HDFS;使用Pig查询语言进行大规模数据处理;使用Hadoop的数据仓库系统Hive分析数据集;利用HBase处理结构化和半结构...

    HADOOP权威指南 第3版 PDF电子书下载 带目录书签 完整版.z01

    设计、构建和管理专用的Hadoop集群——或者在云中运行Hadoop;使用Sqoop从关系型数据库载入数据到HDFS;使用Pig查询语言进行大规模数据处理;使用Hadoop的数据仓库系统Hive分析数据集;利用HBase处理结构化和半结构...

    Hadoop实战中文版.PDF

    2011年10月版次:1.1开本:16开装帧:平装字数:417千字页数:253页内容简介编辑作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是...

    Hadoop实战(第2版)

    技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出Hadoop 2.3.1 将数据导入本地文件系统技术点8 自动复制HDFS 中的文件...

    Hadoop实战(陆嘉恒)译

    map侧过滤后在reduce侧联结5.3 创建一个Bloom filter5.3.1 Bloom filter做了什么5.3.2 实现一个Bloom filter5.3.3 Hadoop 0.20 以上版本的Bloom filter5.4 温故知新5.5 小结5.6 更多资源第6 章 编程实践6.1 开发...

    Hadoop实战

    1699.3.2 配置集群类型 1699.4 在EC2上运行MapReduce程序 1719.4.1 将代码转移到Hadoop集群上 1719.4.2 访问Hadoop集群上的数据 1729.5 清空和关闭EC2实例 1759.6 Amazon Elastic MapReduce和其他AWS服务 1769.6.1 ...

    大数据开发的技巧总结以及入门教程知识点总结.docx

    数据压缩:熟悉Snappy、Gzip等数据压缩算法,在存储和传输中节省空间。 数据安全:实施数据加密、访问控制、隐私保护等安全措施。 数据分析:具备基本的数据挖掘和统计学知识,会使用Mahout、MLlib等机器学习库。 ...

    2017最新大数据架构师精英课程

    133_hbase的bulkload命令实现hbase集群之间数据的传输2 D6 d; F6 S8 x+ I/ I0 B0 @ 134_hive同hbase集成,统计hbase数据表信息% Q/ R! Z1 J3 J) k+ H! {6 D# M 135_使用TableInputFormat进行MR编程! m& C6 B/ v6 N" ...

    4399大数据笔试题.pdf

    通常情况下kafka的瓶颈不是cpu或者磁盘,⽽是⽹络带宽,所以⽣产者可以对数据进⾏压缩。 9.ZooKeeper的⾓⾊是什么? 答案: Leader ⾓⾊ Leader 服务器是整个zookeeper 集群的核⼼,主要的⼯作任务有两项: 事物...

Global site tag (gtag.js) - Google Analytics