一直用的Ubuntu 32位系统(准备下次用Fedora,Ubuntu越来越不适合学习了),今天准备学习一下Hadoop,结果下载Apache官网上发布的最新的封装好的2.5.1版,配置完了根本启动不起来,查看错误日志发现是native库的版本和系统不一致,使用file命令可以发现封装版的native库文件全是64位的:
原来官网发布的版本开始用64位环境编译了(貌似之前是32位环境编译)。没办法,只好自己下载源码编译了。
毫无意外的,编译时各种错误简直停不下来,强忍着一个个耐心解决了,配置的时候又由于自2.3开始带来的框架的质变,很多配置都不一样,网上教程真是看花了眼。。。不过最后还是强行配置好,终于跑起来了。系统地记下来,避免后来者绕弯路。
主要参考了2篇文章(其实就是2篇文章的整合):
CentOS 6.5源码编译安装Hadoop2.5.1
Hadoop(2.5.1)伪分布式环境CentOS(6.5 64位)配置
下面关于Hadoop的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
环境
Ubuntu 14.04 (32 bit) 下载:
[建议使用64位系统,最好是其他Linux发行版]
JDK 7u71
[一定要使用JDK7,不要用最新的JDK8,否则编译会出错,系统自带的OpenJDK也别用,注意配置环境变量,使默认Java环境为JDK7,一定要用“java -version”命令确认一下!] Ant 1.9.4
[Ubuntu官方源的Ant是1.9.3版,也能用,不想手动配置环境就“apt-get install ant”也行] Maven 3.2.3
[使用官方最新的3.2.3版就行,不要用2,不要apt-get安装,Ubuntu官方源的当前版本可能太旧,可能导致编译失败] FindBugs 3.0.0
[就用最新的3.0.0版,Ubuntu官方源的当前版是2.0版,太旧,会导致编译失败] Protobuf 2.5
[这个要注意:官方最新的是2.6版,但是hadoop 2.5.1就要求Protobuf是2.5版,所以务必使用链接提供的2.5版,否则编译会失败] Hadoop 2.5.1 src
[32位系统的就老老实实源码编译吧,别下到那个编译完成的版本了]
注:以上工具版本最好保持一致,使用其他版本可能导致编译失败,当然可以随便尝试,能编译成功就行,上述工具正确安装配置后一般能保证编译成功。
编译环境
先把编译环境配置起来。依次安装并配置JDK 7u71, Ant 1.9.4, Maven 3.2.3, Findbugs 3.0.0 和 Protobuf 2.5就行了:
JDK 7u71:
tar -zxvf jdk-7u71-linux-i586.tar.gz
sudo cp -r jdk1.7.0_71 /usr/lib/jvm/
#配置环境变量:
export JAVA_HOME=/usr/lib/jvm//jdk1.7.0_71
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre//bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
#注意:
#1、JAVA路径要在原本的PATH之前,否则java命令默认会软连接到自带的OpenJDK上。最好“java -version”确认一下。
#2、/etc/profile , .profile 或者.bashrc(.zshrc) 中配置都行,但必须source之后才能生效。.bashrc 或.zshrc的话source一次就行了,/etc/profile 或 .profile则需要每次启动终端时都source一次才能生效,直到下次开机。不同配置文件的加载机制不同,不多说。
#3、下面工具的配置同理。
Ant 1.9.4:
tar zxvf apache-ant-1.9.4-bin.tar.gz
sudo cp -r apache-ant-1.9.4 /usr/share/
#配置环境变量:export ANT_HOME=/usr/share/apache-ant-1.9.4 export PATH=$PATH:$ANT_HOME/bin
Maven 3.2.3:
tar -zxvf apache-maven-3.2.3-bin.tar.gz
sudo cp -r apache-maven-3.2.3 /usr/share/
#配置环境变量:
export M2_HOME=/usr/share/apache-maven-3.2.3
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$PATH:$M2_HOME/bin
FindBugs 3.0.0:
tar zxvf findbugs-3.0.0.tar.gz
udo cp -r findbugs-3.0.0 /usr/share/
#配置环境变量:
export FINDBUGS_HOME=/usr/share/findbugs-3.0.0
export PATH=$PATH:$FINDBUGS_HOME/bin
Protobuf 2.5.0:
tar zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --prefix=/usr/share
make
sudo make install
我把工具都安装在/usr/share目录下,Ubuntu系统默认会搜寻该目录下的库文件,无需其他配置就行了。但是如果工具被安装在了/usr/local目录下,Ubuntu是不会自动搜索该目录的库文件的,此时需要配置开发库环境变量:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib