在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+HBase集群,包括前提准备、机器集群结构分布、硬件环境、软件准备、操作步骤等。 一、前提准备 在搭建Hadoop+HBase集群之前,需要准备以下几个组件:...
Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase) 一、Hadoop HA高可用集群概述 在大数据处理中,高可用集群是非常重要的,Hadoop HA高可用集群可以提供高可靠性和高可用性,确保数据处理不中断。该集群由...
在构建Hadoop+HBase+Hive集群的过程中,涉及了多个关键步骤和技术要点,下面将对这些知识点进行详细的解析。 ### 1. 时间同步:NTP配置 在分布式系统中,时间的一致性至关重要,特别是在处理日志、事件排序以及...
同时,开发过程中需要注意版本兼容性,确保所使用的jar包与Hadoop和HBase集群的版本一致。 6. 性能优化:在实际部署中,还需要关注Hadoop和HBase的性能优化,如设置合适的Block Size、副本数量、内存分配等参数,...
性能优化是提升HBase集群效率的关键,主要涉及以下几个方面: 1. **硬件优化**:增加内存、使用SSD硬盘、提高网络带宽,这些都可以显著提升HBase的性能。 2. **表设计**:合理设计RowKey,避免热点问题;预分区表...
HBase的jar包则包含了HBase Server、HBase Client、Zookeeper等相关组件,使得开发者可以与HBase集群进行交互,执行CRUD(创建、读取、更新、删除)操作。 在实际使用中,开发者可能需要将这些jar包添加到类路径...
Hbase则是建立在Hadoop之上的一个分布式NoSQL数据库,它特别适合于存储非结构化和半结构化的稀疏数据。 在Windows系统中安装和配置Hadoop和Hbase涉及以下步骤和知识点: 1. 准备工作:包括下载安装包。Hadoop可以...
大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...
HBase,全称Hadoop Database,是一款基于Hadoop生态系统的分布式列式存储系统,旨在处理海量结构化数据。它借鉴了Google Bigtable的设计思想,但开源并适应了开源社区的需求。HBase的核心优势在于它的高可靠性、高...
Master是HBase集群的核心,负责全局元数据的管理和RegionServer的协调。在0.99.2版本中,Master的选举机制和Region分配策略有了显著改进,确保了服务的高可用性。通过对`HMaster`类的源码阅读,我们可以了解到这些...
Hadoop是一个开源的分布式计算框架,它允许在大规模集群上存储和处理大量数据,而HBase是一个基于Hadoop的数据存储系统,提供实时的、随机的读写能力,适合大规模非结构化数据的存储。 本教程“Hadoop&Hbase安装...
在 Hadoop 和 Hive 安装配置完成后,可以继续安装 HBase 来实现大规模数据存储。 1. **下载并解压 HBase 安装包**:将 HBase 的安装包解压到合适的目录,如 `/home/hadoop/hbase-0.98.10`。 2. **配置环境变量**...
HBase利用Hadoop HDFS作为底层数据存储,并使用MapReduce来处理HBase中的大量数据。HBase的主要特点包括: - **高性能读写**:支持高并发的读写操作。 - **可伸缩性**:能够水平扩展到成千上万台服务器。 - **数据...
Zookeeper是Hadoop和HBase集群环境中的核心组件,负责节点管理和配置管理。安装Zookeeper需要下载zookeeper-3.4.5.tar.gz安装包,然后解压缩并配置Zookeeper。 HBase0.96安装和部署 HBase是基于Hadoop的NoSQL...
### Hadoop、HBase与Pig的安装与配置详解 #### Hadoop的安装与配置 在部署Hadoop之前,首先需要确保系统中已...以上步骤详尽地介绍了Hadoop、HBase与Pig在Linux环境下的安装与配置流程,是构建大数据处理平台的基础。
4. **可扩展性**:HBase是水平扩展的,可以通过添加更多的服务器来增加存储和处理能力,适应大数据的增长。 5. **无模式**:HBase不预先定义数据模式,允许动态字段和灵活的数据结构。 6. **索引**:虽然HBase本身...
Hadoop是一个开源框架,主要用于处理和存储大量数据,而HBase是建立在Hadoop之上的分布式数据库,提供了高效、实时的数据访问能力。Snappy则是一种高效的压缩和解压缩库,常用于提升大数据系统中的I/O性能。本文将...
Snappy 压缩算法是一种高效的压缩算法,广泛应用于 Hadoop 和 HBase 等大数据处理系统中。 本篇文章将介绍 Snappy 压缩算法在 Hadoop 集群上的安装配置过程,并分享一些遇到的问题和解决方案。 一、 Snappy 压缩...
Hadoop是分布式计算框架,提供数据存储和处理的能力,而HBase则是在Hadoop的HDFS(Hadoop Distributed File System)之上构建的,负责处理结构化和半结构化的数据。HBase利用Hadoop的并行处理能力,实现了大数据的...
例如,在`HbaseCommons.java`这个文件中,可能包含了HBase操作的一些常见方法,如连接HBase集群、创建表、写入数据、读取数据等。通过阅读源码,我们可以了解这些操作的具体实现,这对于调试和优化HBase应用非常有...