在DT大数据时代,海量数据的存储和分析是一个巨大的挑战,给我们的hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩我们不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行效率,hadoop已经自带支持一些比较常用的压缩,如gz,bz等,使用hadoop checknative -a命令可以查看你的hadoop支持几种压缩格式:
- 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
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,即安装成功
- [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
[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压缩,另外一个不启动压缩,最后插入几十条数据对比结果。
- //创建一个表,指定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'
//创建一个表,指定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,当然这也和自己的存储的数据有关系,总体来说,还是不错的。
相关推荐
大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...
·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理 ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性 ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop ·使用高级查询语言...
离线hadoop集群下,snappy在hbase中的安装配置步骤
05_搭建分布式HBase集群 06_SQOOP安装及导入数据到HBase表 07_HBase Backup Masters配置、启动、测试 08_HBase 压缩配置测试 09_分布式集群搭建:大数据框架回顾说明 10_分布式集群搭建:集群环境说明及基本...
本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。 什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是...
·熟悉Hadoop的数据和IlO构件,用于压缩、数据集成、序列化和持久处理 ·洞悉编~MapReduce实际应用时的常见陷阱和高级特性 ·设计、构建和管理一个专用的Hadoop集群或在云上运行Hadoop ·使用高级查询语言Pig来处理...
·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理 ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性 ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop ·使用高级查询...
本书是Hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行Hadoop集群。 目录 第1章 初识Hadoop 数据!数据! 数据存储与分析 与其他系统相比 关系型数据库管理系统...
使用Hadoop分析数据 map阶段和reduce阶段 横向扩展 合并函数 运行一个分布式的MapReduce作业 Hadoop的Streaming Ruby版本 Python版本 Hadoop Pipes 编译运行 第3章 Hadoop分布式文件系统 HDFS的设计 HDFS的概念 数据...
《Hadoop实战》作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是谷歌实现云计算的重要基石。《Hadoop实战》分为3个部分,深入浅出地...
设计、构建和管理专用的Hadoop集群——或者在云中运行Hadoop;使用Sqoop从关系型数据库载入数据到HDFS;使用Pig查询语言进行大规模数据处理;使用Hadoop的数据仓库系统Hive分析数据集;利用HBase处理结构化和半结构...
设计、构建和管理专用的Hadoop集群——或者在云中运行Hadoop;使用Sqoop从关系型数据库载入数据到HDFS;使用Pig查询语言进行大规模数据处理;使用Hadoop的数据仓库系统Hive分析数据集;利用HBase处理结构化和半结构...
2011年10月版次:1.1开本:16开装帧:平装字数:417千字页数:253页内容简介编辑作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是...
技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出Hadoop 2.3.1 将数据导入本地文件系统技术点8 自动复制HDFS 中的文件...
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 开发...
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 ...
数据压缩:熟悉Snappy、Gzip等数据压缩算法,在存储和传输中节省空间。 数据安全:实施数据加密、访问控制、隐私保护等安全措施。 数据分析:具备基本的数据挖掘和统计学知识,会使用Mahout、MLlib等机器学习库。 ...
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" ...
通常情况下kafka的瓶颈不是cpu或者磁盘,⽽是⽹络带宽,所以⽣产者可以对数据进⾏压缩。 9.ZooKeeper的⾓⾊是什么? 答案: Leader ⾓⾊ Leader 服务器是整个zookeeper 集群的核⼼,主要的⼯作任务有两项: 事物...