Hadoop Snappy安装终极教程
2016-12-12 16:02
239 查看
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://shitouer.cn/2013/01/hadoop-hbase-snappy-setup-final-tutorial/
因为产品需要,这两天研究了一下Hadoop Snappy。先不说什么各个压缩算法之间的性能对比,单是这个安装过程,就很痛苦。网上有很多博友写Hadoop
Snappy安装过程,大部分是照着Google的文档翻译了一遍,并没有列举出遇到的问题。有的博文,明明其验证提示是错误的,还说如果输出XXX,说明安装成功了。费了老大的劲,终于安装成功了,现将详细步骤及遇到的问题,一一列出,只希望接下来需要研究及安装的朋友,看到这篇博文,能够一气呵成!本篇文章主要包括:
1. Snappy 压缩算法介绍及集中压缩算法比较
2. Snappy 安装过程及验证
3. Hadoop Snappy 源码编译过程及问题解决方案
4. Hadoop上Hadoop Snappy 安装配置过程及验证
5. Hbase 配置Snappy及验证
6.如何在集群中所有节点部署
废话不多说,现在开始:
这一部分可以参考我的上一篇博文:Hadoop压缩-SNAPPY算法,或者直接参看Google文档:http://code.google.com/p/snappy/ 及 http://code.google.com/p/hadoop-snappy/。我的Hadoop压缩-SNAPPY算法这篇博文中,不仅简介了Google
Snappy,还介绍了常见三种压缩库的比较,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。
③ 编译并安装动态链接库到本地
?
默认是安装到了/usr/local/lib。这时在此目录下查看会生成:
?
如果没有错误且文件及链接一致,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。
错误二:
?
解决方案:这个是最恶心的。Hadoop Snappy的前置条件需要安装gcc,但是它的官方文档仅仅列出了需要gcc,而没有列出需要什么版本的gcc。在Google中英文搜索了半天,刨来刨去,终于发现,有句话说Hadoop Snappy是需要gcc4.4的。而我的是gcc4.6.3。
?
那么我们就要回退,如何回退:
?
错误三:
?
解决方案:如果你去搜,你会发现网上有很多 解决/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包下,会有如下文件:
?
这个过程也比较繁杂,配置点比较多要仔细:
① 解压第三步target下hadoop-snappy-0.0.1-SNAPSHOT.tar.gz,解压后,复制lib文件
?
② 将第三步target下的hadoop-snappy-0.0.1-SNAPSHOT.jar复制到$HADOOP_HOME/lib 下。
③ 配置hadoop-env.sh,添加:
?
④ 配置mapred-site.xml,这个文件中,所有跟压缩有关的配置选项有:
?
根据自己的需要,配置进去即可。我们为了验证方便,仅配置map部分:
?
⑤ 重新启动hadoop。为了验证是否成功,往hdfs上传一个文本文件,敲入一些词组,运行wordcount程序。如果map部分100%完成,即说明我们hadoop snappy安装成功。
因为hadoop没有像HBase一样提供util.CompressionTest类(或者是我没有找到),所以只能按照这种方法来测试。接下来,将详细列出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目录下:
?
② 配置HBase环境变量hbase-env.sh
?
③ 重启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的输出。
执行命令后结果为:
?
说明Snappy 安装已经enable并且能够成功loaded。
⑤ 接下来创建并操作Snappy压缩格式的表
?
以上所有过程均成功执行,说明Snappy 在Hadoop及HBase上配置成功~
这一步就非常简单了,尤其是如果你配置过Hadoop集群。仅需要将我们上边所有配置过的文件,分发到所有其他节点的相应目录即可,包括生成的/usr/lib/local下的snappy链接库。
补充:后来在真正的部署到HBase集群后,将表的COMPRESSION设置为SNAPPY后,向该表写数据是,出现异常:
原因:Snappy是Google的开源压缩库,对Google的Guava
Library有依赖,我们需要去下载相应JAR包及依赖文件,将下载的文件放到集群所有节点的相应lib下就可以了。
因为产品需要,这两天研究了一下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算法这篇博文中,不仅简介了GoogleSnappy,还介绍了常见三种压缩库的比较,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。
③ 编译并安装动态链接库到本地
?
?
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。
错误二:
?
?
?
?
ln -s /root/bin/jdk1.6.0_37/jre/lib/amd64/server/libjvm.so /usr/local/lib/ 问题即可解决。
③ hadoop snappy源码编译成功以后,在target包下,会有如下文件:
?
4. Hadoop上Hadoop Snappy 安装配置过程及验证
这个过程也比较繁杂,配置点比较多要仔细:① 解压第三步target下hadoop-snappy-0.0.1-SNAPSHOT.tar.gz,解压后,复制lib文件
?
③ 配置hadoop-env.sh,添加:
?
?
?
因为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目录下:
?
?
④ 验证安装是否成功
首先,使用 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的输出。
执行命令后结果为:
?
⑤ 接下来创建并操作Snappy压缩格式的表
?
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下就可以了。
相关文章推荐
- Hadoop Snappy安装终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop Snappy安装终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop,HBase 配置 安装 Snappy 终极教程
- Hadoop HBase 配置 安装 Snappy 终极教程
- Hadoop Snappy安装错误锦集
- Hadoop安装教程——单机模式
- 【Hadoop/Hbase】centos上安装并设置Snappy/LZO压缩方式
- hadoop搭建教程之二(安装hadoop)
- hadoop搭建教程之三(Hbase伪分布安装)
- hadoop集群监控工具Apache Ambari安装配置教程
- windows 下 vmware 安装 Mac X lion 10.7 终极教程!
- Hadoop平台搭建使用系列教程(4)-操作系统安装
- hadoop搭建教程之五(Pig安装)
- 单台服务器上安装Hadoop和Hive十五分钟教程