HBase snappy部署 转

标签: hbase snappy | 发表时间:2014-03-31 21:09 | 作者:blackproof
出处:http://www.iteye.com

 

转 http://blog.csdn.net/chenyi8888/article/details/14167311

转:http://shitouer.cn/2013/01/hadoop-hbase-snappy-setup-final-tutorial/

 

 

因为业务需要所以对hbase的数据做整体的压缩处理。

 

首先需要在hadoop集群里安装snappy成功。以下介绍如何在hadoop中部署snappy

第一步骤:

下载snappy

网页地址: http://code.google.com/p/snappy/downloads/detail?name=snappy-1.1.1.tar.gz&can=2&q=

在linux下面可以直接执行

wget  http://snappy.googlecode.com/files/snappy-1.1.1.tar.gz

即可。

然后解压后,执行三步骤:

./configure

make

make install

我采用的是默认的安装,路径:/usr/local/lib下面

 

第二步骤:

下载hadoop-snappy源码。

打开网址: http://code.google.com/p/hadoop-snappy/

运行命令

svn checkout  http://hadoop-snappy.googlecode.com/svn/trunk/ hadoop-snappy-read-only

首先保证有svn的命令

下载源码后,

cd hadoop-snappy-read-only

mvn package

我的运气很好,一次运行就成功了。

在网上有很多人说编译源码无法成功,可以参考其他人的文档,看看相关的其他命令是否安装,如下:

截取来自官方文档:

Requirements: gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3

我在安装的过程中,并没有出现网上其他人所说的gcc版本要用4.4

我的机器版本如下:

[[email protected] hadoop-snappy-read-only]$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] hadoop-snappy-read-only]$

是4.1.2的版本,比4.4低。也许是高版本的不支持吧。

 

编译成功后,在target目录下,就会有相关的文件如下:

[[email protected] hadoop-snappy-read-only]$ cd target/
[[email protected] target]$ ls -lh
total 154M
drwxr-xr-x 2 root root 4.0K Nov  5 18:30 antrun
drwxr-xr-x 2 root root 4.0K Nov  5 18:31 archive-tmp
drwxr-xr-x 3 root root 4.0K Nov  5 18:30 classes
-rw-r--r-- 1 root root  194 Nov  5 18:31 copynativelibs.sh
drwxr-xr-x 4 root root 4.0K Nov  5 18:31 generated-sources
-rw-r--r-- 1 root root  12K Nov  5 18:31 hadoop-snappy-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 118M Nov  5 18:32 hadoop-snappy-0.0.1-SNAPSHOT-Linux-amd64-64.tar
drwxr-xr-x 3 root root 4.0K Nov  5 18:31 hadoop-snappy-0.0.1-SNAPSHOT-tar
-rw-r--r-- 1 root root  36M Nov  5 18:32 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
drwxr-xr-x 2 root root 4.0K Nov  5 18:31 maven-archiver
drwxr-xr-x 3 root root 4.0K Nov  5 18:31 native-build
drwxr-xr-x 8 root root 4.0K Nov  5 18:31 native-src
drwxr-xr-x 2 root root 4.0K Nov  5 18:31 surefire-reports
drwxr-xr-x 3 root root 4.0K Nov  5 18:31 test-classes
-rw-r--r-- 1 root root 245K Nov  5 18:31 test.txt.snappy
[[email protected] target]$

 

 第三步骤:

就是如何在hadooo中部署snappy

解压hadoop-snappy-0.0.1-SNAPSHOT.tar.gz文件,会生成hadoop-snappy-0.0.1-SNAPSHOT目录,拷贝这个目录下相关文件到$HADOOP_HOME/lib/native/Linux-amd64-64

cp -r /hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/Linux-amd64-64

将target目录下的hadoop-snappy-0.0.1-SNAPSHOT.jar拷贝到$HADOOP_HOME/lib/目录下。

修改三个文件:

hadoop-env.sh,增加内容如下:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

修改core-site.xml文件,增加红色字体部分

<property>
<name>io./ompression.codecs</name>  

<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

修改mapred-site.xml文件

<property>
<name>mapred.output.compress</name>
 <value>true</value>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
 </property>
<property>
 <name>mapred.map.output.compression.codec</name>
 <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

调整好后,重启hadoop集群即可,以上就是在hadoop集群里部署完成。

 

目前压缩效果,我会在hive中进行相关的测试。

参考文档《 hive各种文件格式与压缩方式的结合测试

然后再往HBase中使用压缩方式

当hadoop的snappy配置成功后,配置hbase就很简单了,两个步骤:

第一步骤复制相关jar包

cp -r $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64/*

这里需要注意下,有些版本在安装过程中,没有这个Linux-amd64-64这个目录,需要手工创建下。

第二步骤配置hbase-env.sh环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/
export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

 

两个步骤处理完成后,在hbase部署完成snappy后的测试结果:

[[email protected] bin]$ hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://master:8020/benchmarks/TestDFSIO/io_data/test_io_0 snappy    
13/11/11 11:57:18 INFO util.ChecksumType: org.apache.hadoop.util.PureJavaCrc32 not available.
13/11/11 11:57:18 INFO util.ChecksumType: Checksum can use java.util.zip.CRC32
13/11/11 11:57:18 INFO util.ChecksumType: org.apache.hadoop.util.PureJavaCrc32C not available. 
13/11/11 11:57:18 DEBUG util.FSUtils: Creating file:hdfs://master:8020/benchmarks/TestDFSIO/io_data/test_io_0with permission:rwxrwxrwx
13/11/11 11:57:19 WARN snappy.LoadSnappy: Snappy native library is available
13/11/11 11:57:19 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/11/11 11:57:19 INFO snappy.LoadSnappy: Snappy native library loaded
13/11/11 11:57:19 INFO compress.CodecPool: Got brand-new compressor
13/11/11 11:57:19 DEBUG hfile.HFileWriterV2: Initialized with CacheConfig:disabled
13/11/11 11:57:19 INFO compress.CodecPool: Got brand-new decompressor
SUCCESS
只要出现以上结果,就说明hbase可以使用snappy压缩模式了。

 

---------------------------------------------------------------------------------------------------------------------

 

 

 

因为产品需要,这两天研究了一下Hadoop Snappy。先不说什么各个压缩算法之间的性能对比,单是这个安装过程,就很痛苦。网上有很多博友写Hadoop Snappy安装过程,大部分是照着Google的文档翻译了一遍,并没有列举出遇到的问题。有的博文,明明其验证提示是错误的,还说如果输出XXX,说明安装成功了。费了老大的劲,终于安装成功了,现将详细步骤及遇到的问题,一一列出,只希望接下来需要研究及安装的朋友,看到这篇博文,能够一气呵成!本篇文章主要包括:

1. Snappy 压缩算法介绍及集中压缩算法比较

2. Snappy 安装过程及验证

3. Hadoop Snappy 源码编译过程及问题解决方案

4. Hadoop上Hadoop Snappy 安装配置过程及验证

5. HBase 配置Snappy及验证

6.如何在集群中所有节点部署

废话不多说,现在开始:

1. Snappy 压缩算法介绍及几种压缩算法比较

这一部分可以参考我的上一篇博文: Hadoop压缩-SNAPPY算法,或者直接参看Google文档: http://code.google.com/p/snappy/ 及  http://code.google.com/p/hadoop-snappy/。我的 Hadoop压缩-SNAPPY算法这篇博文中,不仅简介了Google Snappy,还介绍了常见三种压缩库的比较,Snappy的优点和适用场合,这篇文章就不再做重点详细介绍。如果先看如何修改已有表的压缩方式及实测结果,可以参看 HBase修改压缩格式及Snappy压缩实测分享

2. Snappy 安装过程及验证

① 前置条件

gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3

前五个如果不能确定的话,可以直接使用yum install XXX来确认一下,如果已安装会提示,没有安装的话,会自动安装上。

② 下载Snappy 1.0.5

下载地址: http://code.google.com/p/snappy/downloads/list

③ 编译并安装动态链接库到本地

?
1
2
3
./configure
make
make install

默认是安装到了/usr/local/lib。这时在此目录下查看会生成:

?
1
2
3
4
5
6
7
8
9
10
[[email protected] lib]# pwd
/usr/local/lib
total 536
-rw-r--r--. 1 root root 369308 Jan 14 11:02 libsnappy.a
-rwxr-xr-x. 1 root root    957 Jan 14 11:02 libsnappy.la
lrwxrwxrwx. 1 root root     18 Jan 14 11:02 libsnappy.so -> libsnappy.so.1.1.3
lrwxrwxrwx. 1 root root     18 Jan 14 11:02 libsnappy.so.1 -> libsnappy.so.1.1.3
-rwxr-xr-x. 1 root root 171796 Jan 14 11:02 libsnappy.so.1.1.3

如果没有错误且文件及链接一致,snappy的安装已经成功。

3. Hadoop Snappy 源码编译过程及问题解决方案

① 下载Hadoop-Snappy源码

下载地址: http://code.google.com/p/hadoop-snappy/

② 编译hadoop snappy源码

mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]

注:如果第二步snappy安装路径是默认的话,即/usr/local/lib,则此处 [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以不写,或者 -Dsnappy.prefix=/usr/local/lib

这个过程如果你的CentOS各个软件的版本正好和Hadoop Snappy要求的一致的话,真的恭喜你,可以一部成功,但是有些还是会有问题。我遇到的三个比计较棘手的问题:

错误一:/root/modules/hadoop-snappy/maven/build-compilenative.xml:62: Execute failed: java.io.IOException: Cannot run program “autoreconf” (in directory “/root/modules/hadoop-snappy/target/native-src”): java.io.IOException: error=2, No such file or directory

解决方案:说明缺少文件,但是这个文件是在target下的,是编译过程中自动生成的,原本就不该存在,这是问什么呢?其实根本问题不是缺文件,而是Hadoop Snappy是需要一定的前置条件的:Requirements: gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3。

我这里边缺少了autoconf,automake,libtool的缘故。在ubuntu中,你可以直接依次apt-get install autoconf,automake,libtool即可,如果是在CentOS中,只需将apt-get 换成 yum。

错误二:

?
1
2
3
4
[exec] make: *** [src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo] Error 1
 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (compile) on project hadoop-snappy: An Ant BuildException has occured: The following error occurred while executing this line:
[ERROR] /home/ngc/Char/snap/hadoop-snappy/hadoop-snappy-read-only/maven/build-compilenative.xml:75: exec returned: 2

解决方案:这个是最恶心的。Hadoop Snappy的前置条件需要安装gcc,但是它的官方文档仅仅列出了需要gcc,而没有列出需要什么版本的gcc。在Google中英文搜索了半天,刨来刨去,终于发现,有句话说Hadoop Snappy是需要gcc4.4的。而我的是gcc4.6.3。

?
1
2
3
4
5
[[email protected] modules]# gcc --version
gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

那么我们就要回退,如何回退:

?
1
2
3
4
5
6
7
1. apt- get install gcc-3.4
 
2. rm /usr/bin/gcc
 
3. ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
 
之后,再gcc --version,你就会发现,gcc已经变成4.4.7了。

错误三:

?
1
2
3
4
5
[exec] /bin/bash ./libtool --tag=CC   --mode=link gcc -g -Wall -fPIC -O2 -m64 -g -O2 -version-info 0:1:0 -L/usr/local //lib -o libhadoopsnappy.la -rpath /usr/local/lib src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo  -ljvm -ldl
      [exec] /usr/bin/ld: cannot find -ljvm
      [exec] collect2: ld returned 1 exit status
      [exec] make: *** [libhadoopsnappy.la] 错误 1
      [exec] libtool: link: gcc -shared  -fPIC -DPIC  src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o   -L/usr/local //lib -ljvm -ldl  -O2 -m64 -O2   -Wl,-soname -Wl,libhadoopsnappy.so.0 -o .libs/libhadoopsnappy.so.0.0.1

解决方案:如果你去搜,你会发现网上有很多 解决/usr/bin/ld: cannot find -lxxx 这样的博客,但是这里,我告诉你,他们的都不适用。因为这儿既不是缺什么,也不是版本不对,是因为没有把安装jvm的libjvm.so symbolic link到usr/local/lib。如果你的系统时amd64,可到/root/bin/jdk1.6.0_37/jre/lib/amd64/server/察看libjvm.so link到的地方,这里修改如下:

ln -s /root/bin/jdk1.6.0_37/jre/lib/amd64/server/libjvm.so /usr/local/lib/ 问题即可解决。

③ hadoop snappy源码编译成功以后,在target包下,会有如下文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[[email protected] snappy-hadoop]# cd target/
[[email protected] target]# ll
total 928
drwxr-xr-x. 2 root root   4096 Jan 13 19:42 antrun
drwxr-xr-x. 2 root root   4096 Jan 13 19:44 archive-tmp
drwxr-xr-x. 3 root root   4096 Jan 13 19:42 classes
-rw-r--r--. 1 root root    168 Jan 13 19:44 copynativelibs.sh
drwxr-xr-x. 4 root root   4096 Jan 13 19:42 generated-sources
-rw-r--r--. 1 root root  11526 Jan 13 19:44 hadoop-snappy-0.0.1-SNAPSHOT.jar
-rw-r--r--. 1 root root 337920 Jan 13 19:44 hadoop-snappy-0.0.1-SNAPSHOT-Linux-amd64-64.tar
drwxr-xr-x. 3 root root   4096 Jan 13 19:44 hadoop-snappy-0.0.1-SNAPSHOT-tar
-rw-r--r--. 1 root root 180661 Jan 13 19:44 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
drwxr-xr-x. 2 root root   4096 Jan 13 19:44 maven-archiver
drwxr-xr-x. 3 root root   4096 Jan 13 19:42 native-build
drwxr-xr-x. 7 root root   4096 Jan 13 19:42 native-src
drwxr-xr-x. 2 root root   4096 Jan 13 19:44 surefire-reports
drwxr-xr-x. 3 root root   4096 Jan 13 19:42 test-classes
-rw-r--r--. 1 root root 365937 Jan 13 19:44 test.txt.snappy

4. Hadoop上Hadoop Snappy 安装配置过程及验证

这个过程也比较繁杂,配置点比较多要仔细:

① 解压第三步target下hadoop-snappy-0.0.1-SNAPSHOT.tar.gz,解压后,复制lib文件

?
1
cp -r /root/modules/snappy-hadoop/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/Linux-amd64-64/

② 将第三步target下的hadoop-snappy-0.0.1-SNAPSHOT.jar复制到$HADOOP_HOME/lib 下。

③ 配置hadoop-env.sh,添加:

?
1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

④ 配置mapred-site.xml,这个文件中,所有跟压缩有关的配置选项有:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<property>
   <name>mapred.output.compress</name>
   <value> false </value>
   <description>Should the job outputs be compressed?
   </description>
</property>
 
<property>
   <name>mapred.output.compression.type</name>
   <value>RECORD</value>
   <description>If the job outputs are to compressed as SequenceFiles, how should
                they be compressed? Should be one of NONE, RECORD or BLOCK.
   </description>
</property>
 
<property>
   <name>mapred.output.compression.codec</name>
   <value>org.apache.hadoop.io.compress.DefaultCodec</value>
   <description>If the job outputs are compressed, how should they be compressed?
   </description>
</property>
 
<property>
   <name>mapred.compress.map.output</name>
   <value> false </value>
   <description>Should the outputs of the maps be compressed before being
                sent across the network. Uses SequenceFile compression.
   </description>
</property>
 
<property>
   <name>mapred.map.output.compression.codec</name>
   <value>org.apache.hadoop.io.compress.DefaultCodec</value>
   <description>If the map outputs are compressed, how should they be
                compressed?
   </description>
</property>

根据自己的需要,配置进去即可。我们为了验证方便,仅配置map部分:

?
1
2
3
4
5
6
7
8
<property>
         <name>mapred.compress.map.output</name>
         <value> true </value>
         </property>
         <property>
         <name>mapred.map.output.compression.codec</name>
         <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

⑤ 重新启动hadoop。为了验证是否成功,往hdfs上传一个文本文件,敲入一些词组,运行wordcount程序。如果map部分100%完成,即说明我们hadoop snappy安装成功。

因为hadoop没有像HBase一样提供util.CompressionTest类(或者是我没有找到),所以只能按照这种方法来测试。接下来,将详细列出HBase使用Snappy的配置过程。

5. HBase 配置Snappy及验证

在Hadoop上配置Snappy成功以后,相对来说,在HBase上配置要简单一些了。

① 配置HBase lib/native/Linux-amd64-64/ 中的lib文件。HBase中的lib文件,即需要第三步中/root/modules/snappy-hadoop/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/ 下的所有lib文件,也需要Hadoop中,$HADOOP_HOME/lib/native/Linux-amd64-64/下的hadoop的lib文件(我看到的大部分介绍snappy的文章,均为提到这一点)。简单起见,我们只需要将$HADOOP_HOME/lib/native/Linux-amd64-64/下lib文件,全部复制到相应HBase目录下:

?
1
cp -r $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64/

② 配置HBase环境变量hbase-env.sh

?
1
2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/
export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

③ 重启HBase。

④ 验证安装是否成功

首先,使用 CompressionTest 来查看snappy是否 enabled 并且能成功 loaded:

hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://192.168.205.5:9000/output/part-r-00000 snappy

其中,/output/part-r-00000 为我们在验证hadoop snappy的时候,wordcount的输出。

执行命令后结果为:

?
1
2
3
4
5
6
7
8
9
10
11
12
[[email protected] ~]# hbase org.apache.hadoop.hbase.util.CompressionTest hdfs: //192.168.205.5:9000/output/part-r-00000 snappy
13/01/13 21:59:24 INFO util.ChecksumType: org.apache.hadoop.util.PureJavaCrc32 not available.
13/01/13 21:59:24 INFO util.ChecksumType: Checksum can use java.util.zip.CRC32
13/01/13 21:59:24 INFO util.ChecksumType: org.apache.hadoop.util.PureJavaCrc32C not available.
13/01/13 21:59:24 DEBUG util.FSUtils: Creating file:hdfs: //192.168.205.5:9000/output/part-r-00000with permission:rwxrwxrwx
13/01/13 21:59:24 WARN snappy.LoadSnappy: Snappy native library is available
13/01/13 21:59:24 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/01/13 21:59:24 INFO snappy.LoadSnappy: Snappy native library loaded
13/01/13 21:59:24 INFO compress.CodecPool: Got brand- new compressor
13/01/13 21:59:24 DEBUG hfile.HFileWriterV2: Initialized with CacheConfig:disabled
13/01/13 21:59:24 INFO compress.CodecPool: Got brand- new decompressor
SUCCESS

说明Snappy 安装已经enable并且能够成功loaded。

⑤ 接下来创建并操作Snappy压缩格式的表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[[email protected] ~]# hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.2, r1395367, Sun Oct  7 19:11:01 UTC 2012
//创建表
hbase(main):001:0> create 'tsnappy' , { NAME => 'f' , COMPRESSION => 'snappy' }
0 row(s) in 10.6590 seconds
//describe表
hbase(main):002:0> describe 'tsnappy'
DESCRIPTION                                                                                                        ENABLED                                                      
  {NAME => 'tsnappy' , FAMILIES => [{NAME => 'f' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'NONE' , REPLICATION_ true                                                         
  SCOPE => '0' , VERSIONS => '3' , COMPRESSION => 'SNAPPY' , MIN_VERSIONS => '0' , TTL => '2147483647' , KEEP_DELETED_CE                                                              
  LLS => 'false' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , ENCODE_ON_DISK => 'true' , BLOCKCACHE => 'true' }]}                                                                  
1 row(s) in 0.2140 seconds
//put数据
hbase(main):003:0> put 'tsnappy' , 'row1' , 'f:col1' , 'value'
0 row(s) in 0.5190 seconds
//scan数据
hbase(main):004:0> scan 'tsnappy'
ROW                                           COLUMN+CELL                                                                                                                       
  row1                                         column=f:col1, timestamp=1358143780950, value=value                                                                               
1 row(s) in 0.0860 seconds
 
hbase(main):005:0>

以上所有过程均成功执行,说明Snappy 在Hadoop及HBase上配置成功~

6.如何在集群中所有节点部署

这一步就非常简单了,尤其是如果你配置过Hadoop集群。仅需要将我们上边所有配置过的文件,分发到所有其他节点的相应目录即可,包括生成的/usr/lib/local下的snappy链接库。

 补充:后来在真正的部署到HBase集群后,将表的COMPRESSION设置为SNAPPY后,向该表写数据是,出现异常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions

原因:Snappy是Google的开源压缩库,对Google的 Guava Library有依赖,我们需要去下载相应JAR包及依赖文件,将下载的文件放到集群所有节点的相应lib下就可以了。

 

This entry was posted in  Hadoop学习压缩算法 and tagged  Hadoop SnappyHBase SnappySnappy 配置压缩算法. Bookmark the  permalink.

Post navigation

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [hbase snappy] 推荐:

HBase snappy部署 转

- - 企业架构 - ITeye博客
转 http://blog.csdn.net/chenyi8888/article/details/14167311. 转:http://shitouer.cn/2013/01/hadoop-hbase-snappy-setup-final-tutorial/. 因为业务需要所以对hbase的数据做整体的压缩处理.

Snappy(Google家用的快速压缩算法,以前的Zippy)

- Ivan - Erlang非业余研究
原创文章,转载请注明: 转载自Erlang非业余研究. 本文链接地址: Snappy(Google家用的快速压缩算法,以前的Zippy). 刚刚雕梁同学告诉我google刚刚开源了他自己家用的快速压缩算法,AKA Zippy, 看来下貌似不错. 项目主页: http://code.google.com/p/snappy/.

hbase介绍

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
hbase是bigtable的开源山寨版本. 是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统. 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作). 主要用来存储非结构化和半结构化的松散数据.

Riak对比HBase

- - NoSQLFan
文章来自 Riak官方wiki,是一篇Riak与HBase的对比文章. Riak官方的对比通常都做得很中肯,并不刻意偏向自家产品. 对比的Riak版本是1.1.x,HBase是0.94.x. Riak 与 HBase 都是基于 Apache 2.0 licensed 发布. Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable.

[转]HBase简介

- - 小鸥的博客
   Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能. 其目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据,并且有数百万列元素组成的数据表. Hbase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥Hbase处理大数据量等功能,需要使用Hadoop作为文件系统.

HBase表设计

- - 互联网 - ITeye博客
默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据, 直到这 个region足够大了才进行切分. 一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按 照 region分区情况,在集群内做数据的负载均衡.

HBase Memstore配置

- - 行业应用 - ITeye博客
HBase Memstore配置. 本文为翻译,原英文地址:http://blog.sematext.com/2012/07/16/hbase-memstore-what-you-should-know/.     当regionserver(以下简称RS)收到一个写请求,会将这个请求定位到某个特定的region.

hbase原理

- - CSDN博客云计算推荐文章
1.hbase利用hdfs作为其文件存储系统,利用mapreduce来处理数据,利用zookeeper作为协调工具. 2.行键(row key),类似于主键,但row key是表自带的. 3.列族(column family) ,列(也称作标签/修饰符)的集合,定义表的时候指定的,列是在插入记录的时候动态增加的.

hbase锁机制

- - 数据库 - ITeye博客
博文说明:1、研究版本hbase0.94.12;2、贴出的源代码可能会有删减,只保留关键的代码.   hbase的锁是采用jdk的ReentrantReadWriteLock类实现.   一、HRegion有两种锁:lock、updatesLock,这两种锁均是ReentrantReadWriteLock类的实例,基本上所有的region操作均需要获取lock的read共享锁,在获取了lock的read锁后,如果是增加或者删除等影响数据内容的操作则还需要获取updatesLock的read锁.

Hbase入门

- - CSDN博客云计算推荐文章
Hbase 全称是Hadoop DataBase ,是一种开源的,可伸缩的,高可靠,高性能,面向列的分布式存储系统. 类似于Google的BigTable,其分布式计算采用MapReduce,通过MapReduce完成大块数据加载和全表扫描操作. 文件存储系统是HDFS,通过Zookeeper来完成状态管理协同服务.