Hadoop2.X 64位编译

1 编译Hadoop2.X 64位

1.1 软硬件环境说明

节点使用CentOS系统,防火墙和SElinux禁用,创建了一个shiyanlou用户,并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。 Hadoop搭建环境:

  • 虚拟机操作系统:三个节点均为CentOS6 64位,单核,1G内存
  • JDK:1.7.0_55 64位
  • Hadoop:1.1.2

1.2 环境搭建

1.2.1 JDK安装和Java环境变量配置

1.下载JDK1.7 64bit安装包

打开JDK1.7 64bit安装包下载链接为: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 打开界面之后,先选中 Accept License Agreement ,然后下载 jdk-7u55-linux-x64.tar.gz,如下图所示:

2.创建/app目录,把该目录的所有者修改为shiyanlou

  • sudo mkdir /app
  • sudo chown -R shiyanlou:shiyanlou /app

3.创建/app/lib目录,使用命令如下:

  • mkdir /app/lib

4.把下载的安装包解压并迁移到/app/lib目录下

  • cd /home/shiyanlou/install-pack
  • tar -zxf jdk-7u55-linux-x64.tar.gz
  • mv jdk1.7.0_55/ /app/lib
  • ll /app/lib

5.使用sudo vi /etc/profile命令打开配置文件,设置JDK路径

  • export JAVA_HOME=/app/lib/jdk1.7.0_55
  • export PATH=$JAVA_HOME/bin:$PATH
  • export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

6.编译并验证

  • source /etc/profile
  • java -version

1.2.2 安装并设置maven

1.下载maven安装包(建议安装3.0以上版本)本次安装选择的是maven3.0.5的二进制包,下载地址http://mirror.bit.edu.cn/apache/maven/maven-3/ ,也可以在/home/shiyanlou/install-pack目录中找到该安装包

2.解压缩apache-maven-3.0.5-bin.tar.gz包,并把apache-maven-3.0.5目录移到/app/lib目录下

  • cd /home/shiyanlou/install-pack
  • tar -zxf apache-maven-3.0.5-bin.tar.gz
  • mv apache-maven-3.0.5 /app/lib

3.使用sudo vi /etc/profile打开配置文件,并加入maven设置

  • export MAVEN_HOME=/app/lib/apache-maven-3.0.5
  • export PATH=$PATH:$MAVEN_HOME/bin

4.编译/etc/profile文件并验证配置是否成功:

  • source /etc/profile
  • mvn -version

1.2.3 使用yum安装svn

  • sudo yum install svn

1.2.4 使用yum安装autoconf automake libtool cmake

  • sudo yum install autoconf automake libtool cmake

1.2.5 使用yum安装ncurses-devel

  • sudo yum install ncurses-devel

1.2.6 使用yum安装openssl-devel

  • sudo yum install openssl-devel

1.2.7 使用yum安装gcc*

  • sudo yum install gcc*

1.2.8 安装并设置protobuf

注:该程序包需要在gcc安装完毕后才能安装,否则提示无法找到gcc编译器。 1.下载protobuf安装包 下载链接为 https://code.google.com/p/protobuf/downloads/list ,也可以在/home/shiyanlou/install-pack目录中找到该安装包

2.解压安装包并把protobuf-2.5.0目录转移到/app/lib目录下

  • cd /home/shiyanlou/install-pack
  • tar -zxf protobuf-2.5.0.tar.gz
  • mv protobuf-2.5.0 /app/lib

3.进行目录运行命令 进入目录运行如下命令:

  • cd /app/lib/protobuf-2.5.0/
  • sudo ./configure
  • sudo make
  • sudo make check
  • sudo make install

make过程时间较长,需要运行几分钟时间

check结果如下

运行install命令及结果如下

4.验证是否安装成功 运行成功之后,通过如下方式来验证是否安装成功

  • protoc

2 编译Hadoop

2.1 下载Hadoop源代码 Release2.2.0

在/app目录下新建compile子目录,在该文件夹通过SVN获取Hadoop2.2.0源代码,命令如下:

  • cd /app
  • mkdir compile
  • svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0 获取时间较长,大小约75.3M

2.2 编译Hadoop源代码

:) 由于hadoop2.2.0在svn中pom.xml有点问题,会造成编译中出错,可先参考3.1修复该问题。在Hadoop源代码的根目录执行如下命令: mvn package -Pdist,native -DskipTests –Dtar (注意:这行命令需要手工输入,如果复制执行会报异常!) 在编译过程需要联网,从网络中下载所依赖的包,编译的过程时间根据网速时间不等,一般在30分钟左右。

编译好的Hadoop2.X 64位安装包在hadoop-dist/target目录中,该文件为hadoop-2.2.2.tar.gz。

2.3 验证编译是否成功

到 hadoop-dist/target/hadoop-2.2.0/lib/native 目录中查看libhadoop.so.1.0.0属性:

  • file ./libhadoop.so.1.0.0

该文件为ELF 64-bit LSB则表示文件成功编译为64位

3 问题解决

3.1 编译Hadoop2.2.0出现代码异常

目前的2.2.0 的Source Code 压缩包解压出来的code有个bug 需要patch后才能编译。否则编译hadoop-auth 会提示下面错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure: [ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[88,11] error: cannot access AbstractLifeCycle [ERROR] class file for org.mortbay.component.AbstractLifeCycle not found [ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96,29] error: cannot access LifeCycle [ERROR] class file for org.mortbay.component.LifeCycle not found

直接修改hadoop-common-project/hadoop-auth/pom.xml,其实就是少了一个包,添加一个dependency:

  • org.mortbay.jetty
  • jetty-util
  • test


你可能感兴趣的:(Hadoop,Spark)