hadoop2.2.0集群配置 - 64位系统下编译源码过程
本人写这篇文章的目的是记录个人在hadoop集群搭建过程的一点经验,其中大部分内容来源于互联网,我按照别人的经验将本人安装配置过程记录下来,主要便于个人以后查阅使用,也可以让其他搭建环境与我相同的人在搭建过程中少走弯路。我掉过的坑,希望给以后的我和其他人一点提示。
搭建环境:【系统】:Redhat 5.6 x64位 【硬件】:i5 2450M 【内存】 8G 【硬盘】500G
编译提示:
1. 必须是能上网的机器,我使用的环境是能上网的,如果你机器不能上网,有可能依赖包和编译工具安装不了或者缺失,最后不能成功,不能上网的机器就别折腾了。
2. 服务器网络环境一定要先配置好,如果网速很慢,就需要慢慢等待,非常耗时,最好是网络速度快的,另外晚上比白天的下载快,所以能在晚上编译就晚上做。
3. 编译过程出现问题不要慌,一定要心细,看看是不是那一步没有做到位。程序比人要简单,可以就是可以,不可以就是不可以,有问题一定就是有原因,一步步排查,肯定能知道答案。
一、 编译环境搭建
(1). yum安装与配置
由于是用的Redhat系统,所以需要使用国内的yum源,这样才能更新各个需要的软件。
如果yum已经可以正常更新最新的最新,就不需要安装配置,如果新安装的Redhat系统,就需要安装配置yum源,具体安装配置请参考我的另一篇文章:
RedHat 如何使用CentOS的yum源 地址: http://chwshuang.iteye.com/blog/2016343
(2). 编译工具安装与配置
gcc、gcc-c++、make、cmake、make、openssl-devel、ncurses-devel
yum安装完成后,就可以用来安装编译工具了
依次执行以下命令安装 gcc、gcc-c++、make、cmake、make、openssl-devel、ncurses-devel
yum install gcc yum install gcc-c++ yum install make yum install cmake yum install openssl-devel yum install ncurses-devel
提示:如果安装提示失败,有几种可能:
1. yum软件安装错误,请按照第一项中的yum安装与配置重新配置
2. 网络连接失败,请保证服务器网络连接正常。通过 ping www.baidu.com 的方式查看
(3). jdk安装与配置
(3.1)下载
以root用户登录,在oracle官方网址下载频道,下载最新版本的JDK
JDK下载路径地址:http://www.oracle.com/technetwork/java/javase/archive-139210.html
选择 JSE 6 > Java SE Development Kit 6u45 > http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64-rpm.bin
将下载文件拷贝到 linux 的 /opt 目录
如果下载需要登录就注册一个用户再下载
(3.2)安装
以root用户登录,进入 /opt 目录,给文件授权,执行
chmod +x jdk-6u45-linux-x64-rpm.bin
然后执行
./jdk-6u45-linux-x64-rpm.bin
命令进行解压,然后安装jdk ,执行
rpm -ivh jdk-6u45-linux-amd64.rpm
命令进行安装,安装完成后,jdk就默认安装到了/usr/java/jdk1.6.0_45/目录
(3.3)配置
编辑环境变量文件,
vim /etc/profile
在文件结尾加入
## -------------------JAVA PATH------------------------## JAVA_HOME=/usr/java/jdk1.6.0_45 PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME PATH
保存配置信息并更新,执行以下命令
source /etc/profile
(3.4)验证
通过执行以下命令查看是否配置成功:
echo $JAVA_HOME
java -version
如果安装成功显示内容如下:
[root@hadoop5 opt]# echo $JAVA_HOME /usr/java/jdk1.6.0_45 [root@hadoop5 opt]# java -version java version "1.4.2" gij (GNU libgcj) version 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. [root@hadoop5 opt]#
(4). maven安装与配置
(4.1)下载、解压
以root用户进入 /opt目录,在内联网的情况下执行以下命令进行maven下载
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip
下载apache-maven-3.1.1-bin.zip完成后,执行以下命令进行解压,解压完成后就有一个apache-maven-3.1.1的目录
unzip apache-maven-3.1.1-bin.zip
(4.2)配置
maven环境变量配置:先编辑环境变量文件
vim /etc/profile
在文件最后,加入maven配置
##-------------- maven -----------------## export MAVEN_HOME=/opt/apache-maven-3.1.1 export PATH=$PATH:$MAVEN_HOME/bin
保存配置信息并更新,执行以下命令
source /etc/profile
(4.3)验证
通过执行以下命令查看是否配置成功:
mvn -version
如果安装成功显示内容如下:
[root@hadoop5 opt]# mvn -verion Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800) Maven home: /opt/apache-maven-3.1.1 Java version: 1.6.0_45, vendor: Sun Microsystems Inc. Java home: /usr/java/jdk1.6.0_45/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "2.6.18-238.el5", arch: "amd64", family: "unix"
(4.4)maven国内源配置
由于目前国内网络很少能直接访问maven国外的默认源,所以需要配置国内的源,修改/opt/apache-maven-3.1.1/conf/settings.xml,添加国内源
vim /opt/apache-maven-3.1.1/conf/settings.xml
在<mirrors></mirros>标签中添加以下内容
<mirror> <id>nexus-osc</id> <mirrorOf>*</mirrorOf> <name>Nexusosc</name> <url>http://maven.oschina.net/content/groups/public/</url> </mirror>
在<profiles></profiles>中添加以下内容:
<profile> <id>jdk-1.6</id> <activation> <jdk>1.6</jdk> </activation> <repositories> <repository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
(5)protobuf安装与配置
protobuf 下载地址: https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2
以root用户进入/opt目录,执行以下命令
(5.1)下载
wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2
(5.2)解压
tar -xjf protobuf-2.5.0.tar.bz2
(5.3)安装
cd protobuf-2.5.0
./configure --prefix=/opt/protoc
make
make install
(5.4)配置
修改环境变量文件,
vim /etc/profile
在文件最后加入protobuf的路径变量
##-------------- protoc -----------------## export PROTO_HOME=/opt/protoc export PATH=$PATH:$PROTO_HOME/bin
保存配置信息并更新,执行以下命令
source /etc/profile
(5.5)验证
执行以下命令
protoc --version
正常显示如下:
[root@hadoop5 protobuf-2.5.0]# protoc --version libprotoc 2.5.0 [root@hadoop5 protobuf-2.5.0]#
(6)findbugs安装与配置
以root用户进入/opt目录,执行以下命令
(6.1)下载
wget http://jaist.dl.sourceforge.net/project/findbugs/findbugs/2.0.3/findbugs-2.0.3.tar.gz
(6.2)解压
tar -xzf findbugs-2.0.3.tar.gz
(6.3)配置
修改环境变量文件,
vim /etc/profile
在文件最后加入findbugs的路径变量
##-------------- findbugs -----------------## export FINDBUGS_HOME=/opt/findbugs-2.0.3 export PATH=$PATH:$FINDBUGS_HOME/bin
保存配置信息并更新,执行以下命令
source /etc/profile
(6.4)验证
执行以下命令
findbugs -version
如果正常显示以下内容就说明安装成功
[root@hadoop5 opt]# findbugs -version 2.0.3 [root@hadoop5 opt]#
二、hadoop2.2.0源码编译
(1)hadoop2.2.0源码下载与配置
(1.1)下载、解压
以root用户登录/home/hadoop/目录,如果没有,请执行
mkdir -p /home/hadoop
创建目录后,进入目录
cd /home/hadoop
执行源码下载命令
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz
解压
tar -zvxf hadoop-2.2.0-src.tar.gz
(1.2)修复源码bug
在hadoop2.2.0的源码中,有一个bug,在hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件中少一个一部分内容,就是下面带 + 号的行,所以需要我们手动添加。
hadoop-common-project/hadoop-auth/pom.xml (working copy) @@ -54,6 +54,11 @@ </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-util</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <scope>test</scope> </dependency>
执行编辑命令
vim /home/hadoop/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml
然后输入
/org.mortbay.jetty
执行回车,就能找到下面的内容:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency>
<dependency>
将下面内容拷贝到上面红色内容之间就可以了。
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
(2). hadoop2.2.0编译
(2.1)编译
以root用户进入 /opt/hadoop/hadoop-2.2.0-src 目录
cd /opt/hadoop/hadoop-2.2.0-src
执行编译命令,然后就是几十分钟的等待时间了,机器好的10分钟左右,机器差的估计一个小时左右,就等吧。
mvn package -Pdist,native -DskipTests -Dtar
(2.2) 验证
1. 如果安装过程没有提示 ERROR信息,最后结束内容与下面内容类似,恭喜你,编译成功了!还可以进一步验证!
[INFO] hadoop-mapreduce .................................. SUCCESS [4.872s] [INFO] Apache Hadoop MapReduce Streaming ................. SUCCESS [6.674s] [INFO] Apache Hadoop Distributed Copy .................... SUCCESS [47.727s] [INFO] Apache Hadoop Archives ............................ SUCCESS [4.108s] [INFO] Apache Hadoop Rumen ............................... SUCCESS [10.765s] [INFO] Apache Hadoop Gridmix ............................. SUCCESS [6.466s] [INFO] Apache Hadoop Data Join ........................... SUCCESS [3.907s] [INFO] Apache Hadoop Extras .............................. SUCCESS [5.539s] [INFO] Apache Hadoop Pipes ............................... SUCCESS [17.595s] [INFO] Apache Hadoop Tools Dist .......................... SUCCESS [3.130s] [INFO] Apache Hadoop Tools ............................... SUCCESS [0.133s] [INFO] Apache Hadoop Distribution ........................ SUCCESS [46.909s] [INFO] Apache Hadoop Client .............................. SUCCESS [18.105s] [INFO] Apache Hadoop Mini-Cluster ........................ SUCCESS [1.900s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1:20:30.832s [INFO] Finished at: Sat Feb 15 23:38:27 CST 2014 [INFO] Final Memory: 91M/243M [INFO] ------------------------------------------------------------------------
2. 版本验证
进入hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/bin目录,执行以下命令:
./hadoop version
查看结果是以下内容什么编译成功:
[root@hadoop5 bin]# ./hadoop version Hadoop 2.2.0 Subversion Unknown -r Unknown Compiled by root on 2014-02-15T14:53Z Compiled with protoc 2.5.0 From source with checksum 79e53ce7994d1628b240f09af91e1af4 This command was run using /home/hadoop/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar [root@hadoop5 bin]#
3. 查看hadoop文件版本信息
在hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/目录下,执行以下命令,如果文件libhadoop.so.1.0.0 后面出现 ELF 64-bit 等字样,说明编译64位文件成功。如果是官方下载的版本,这个地方就应该是32-bit。
file lib/native/*
[root@hadoop5 hadoop-2.2.0]# file lib/native/* lib/native/libhadoop.a: current ar archive lib/native/libhadooppipes.a: current ar archive lib/native/libhadoop.so: symbolic link to `libhadoop.so.1.0.0' lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped lib/native/libhadooputils.a: current ar archive lib/native/libhdfs.a: current ar archive lib/native/libhdfs.so: symbolic link to `libhdfs.so.0.0.0' lib/native/libhdfs.so.0.0.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped [root@hadoop5 hadoop-2.2.0]#
到此,hadoop2.2.0在64位 RedHat5.6 系统中编译完成。下一步可以将编译的hadoop在集群环境进行部署了。