Hadoop 安装snappy(编译源码)
首先,由于下载的hadoop一般都是编译好的,不支持snappy压缩,因此,我们需要下载未编译的hadoop进行编译,然后自己设置支持的压缩格式。以下开始详细配置:
安装之前 hadoop checknative -a
1.准备
###安装其中部分基础软件的命令:
yum -y install gcc gcc-c++ libtool cmake maven zlib-devel
下载maven ,snappy1.1.1,protobuf-2.5.0.tar.gz,以及Hadoop未编译的源码。
一.首先去官网下载未编译的hadoop版本(hadoop-src.*的)
https://archive.apache.org/dist/hadoop/common/hadoop-2.5.0/
默认的编译好的文件不支持snappy压缩,因此我们需要自己重新编译
下载snappy
https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.1.tar.gz/8887e3b7253b22a31f5486bca3cbc1c2/
下载protobuf-2.5.0
https://github.com/google/protobuf/releases/tag/v2.5.0
下载maven3.6.2
http://maven.apache.org/download.cgi
二.首先安装maven ,解压后需要进行环境变量的配置
tar -zxvf maven-3.6.2.tar.gz
vi /etc/profile
检测是否安装成功
mvn -version
然后需要配置一下maven/conf/setting.xml文件 (设置路径,设不设置都可以)
修改下载源(注意不要在注释内修改了)
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
三.安装snappy
先解压安装包,然后进入snappy目录下
./configure
make
make install (注意,如果不是在root用户下需要加上sudo权限,否则会报错,我研究了很久呢)
如果没有出现ERROR就说明已经安装成功了。。。。
四。安装protobuf,使用以下命令
# tar -zxvf protobuf-2.5.0.tar.gz
# cd protobuf-2.5.0
# ./configure
# make
#make install
# protoc --version
libprotoc 2.5.0
五.编译源文件,下载好的源文件是hadoop-2.5.0-src.tar.gz
第一次编译使用的命令是:
mvn package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy
第一次编译时候报错 Hadoop Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce (default) on project hadoop-main: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]然后提示编译文件的某一个java代码报错,但是我修改之后,依然会出现其他的错误。查资料之后
使用下面的编译命令
解压之后,进入hadoop-2.5.0-src/
然后使用如下编译命令:
mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.javadoc.skip=true -Dbundle.snappy
(编译时间比较长,编译完成之后,默认文件在/usr/local/lib目录下)
配置 core-site.xml
添加如下命令:
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
拷贝到hadoop目录下的lib/native/ 目录下
查看是否安装成功
hadoop checknative -a