本文转载自:http://www.cnblogs.com/shishanyuan/p/4701646.html

1、编译Hadooop

1.1 搭建环境

1.1.1 安装并设置maven

1. 下载maven安装包,建议安装3.0以上版本,本次安装选择的是maven3.0.5的二进制包,下载地址如下

http://mirror.bit.edu.cn/apache/maven/maven-3/

2. 使用ssh工具把maven包上传到/home/hadoop/upload目录

3. 解压缩apache-maven-3.0.5-bin.tar.gz包

$tar -zxvf apache-maven-3.0.5-bin.tar.gz

4. 把apache-maven-3.0.5目录移到/usr/local目录下

$sudo mv apache-maven-3.0.5 /usr/local

5. 在/etc/profile配置文件中加入如下设置

export PATH=$JAVA_HOME/bin:/usr/local/apache-maven-3.0.5/bin:$PATH

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

$source /etc/profile

$mvn -version

1.1.2 以root用户使用yum安装svn

#yum install svn

1.1.3 以root用户使用yum安装autoconf automake libtool cmake

#yum install autoconf automake libtool cmake

1.1.4 以root用户使用yum安装ncurses-devel

#yum install ncurses-devel

1.1.5 以root用户使用yum安装openssl-devel

#yum install openssl-devel

1.1.6 以root用户使用yum安装gcc*

#yum install gcc*

1.1.7 安装并设置protobuf

注:该程序包需要在gcc安装完毕后才能安装,否则提示无法找到gcc编译器。

1. 下载protobuf安装包

下载链接为: https://code.google.com/p/protobuf/downloads/list

2. 使用ssh工具把protobuf-2.5.0.tar.gz包上传到/home/hadoop/Downloads目录

3. 解压安装包

$tar -zxvf protobuf-2.5.0.tar.gz

4. 把protobuf-2.5.0目录转移到/usr/local目录下

$sudo mv protobuf-2.5.0 /usr/local

5. 进行目录运行命令

进入目录以root用户运行如下命令:

#./configure

#make

#make check

#make install

6. 验证是否安装成功

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

#protoc

1.2 编译Hadoop

1.2.1 下载Hadoop源代码 Release2.2.0

通过SVN获取Hadoop2.2.0源代码,在/home/hadoop/Downloads目录下命令:

$svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0

获取时间较长,大小约75.3M

1.2.2 编译Hadoop源代码

:) 由于hadoop2.2.0在svn中pom.xml有点问题,会造成编译中出错,可先参考3.2修复该问题。在Hadoop源代码的根目录执行如下命令:

$mvn package -Pdist,native -DskipTests –Dtar

(注意:这行命令需要手工输入,如果复制执行会报异常!)

耗费的时间较长,总共花费了32分钟,在编译过程需要联网,从网络中下载所需要的资料。

1.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位

在hadoop-dist/target目录中已经打包好了hadoop-2.2.0.tar.gz,该文件作为Hadoop2.X 64位安装包。

2、安装Hadoop

2.1 配置准备

2.1.1 上传并解压Hadoop安装包

1.在Apache网站上提供Hadoop2.X安装包只支持32位操作系统安装,在64位服务器安装会出现4.1的错误异常。我们使用上一步骤编译好的hadoop-2.2.0.tar.gz文件作为安装包(也可以从网上下载native文件夹或者打包好的64位hadoop安装包),使用"Spark编译与部署(上)"中1. 3.1介绍的工具上传到/home/hadoop/upload 目录下

2. 在主节点上解压缩

$cd /home/hadoop/upload/

$tar -xzf hadoop-2.2.0.tar.gz

3. 把hadoop-2.2.0目录移到/app/hadoop目录下

$ mv hadoop-2.2.0 /app/hadoop

$ls /app/hadoop

2.1.2 在Hadoop目录下创建子目录

hadoop用户在/app/hadoop/hadoop-2.2.0目录下创建tmp、name和data目录

$cd /app/hadoop/hadoop-2.2.0/

$mkdir tmp

$mkdir name

$mkdir data

$ll

2.1.3 配置hadoop-env.sh

1.     打开配置文件hadoop-env.sh

$cd /app/hadoop/hadoop-2.2.0/etc/hadoop

$sudo vi hadoop-env.sh

2. 加入配置内容,设置JAVA_HOME和PATH路径

export JAVA_HOME=/usr/lib/java/jdk1.7.0_55

export PATH=$PATH:/app/hadoop/hadoop-2.2.0/bin

3. 编译配置文件hadoop-env.sh,并确认生效

$source hadoop-env.sh

$hadoop version

2.1.4 配置yarn-env.sh

1. 在/app/hadoop/hadoop-2.2.0/etc/hadoop打开配置文件yarn-env.sh

$cd /app/hadoop/hadoop-2.2.0/etc/hadoop

$sudo vi yarn-env.sh

2. 加入配置内容,设置JAVA_HOME路径

export JAVA_HOME=/usr/lib/java/jdk1.7.0_55

3. 编译配置文件yarn-env.sh,并确认生效

$source yarn-env.sh

2.1.5 配置core-site.xml

1. 使用如下命令打开core-site.xml配置文件

$sudo vi core-site.xml

2. 在配置文件中,按照如下内容进行配置

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/app/hadoop/hadoop-2.2.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>

2.1.6 配置hdfs-site.xml

1. 使用如下命令打开hdfs-site.xml配置文件

$sudo vi hdfs-site.xml

2. 在配置文件中,按照如下内容进行配置

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/app/hadoop/hadoop-2.2.0/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/app/hadoop/hadoop-2.2.0/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

2.1.7 配置mapred-site.xml

1. 默认情况下不存在mapred-site.xml文件,可以从模板拷贝一份

$cp mapred-site.xml.template mapred-site.xml

2. 使用如下命令打开mapred-site.xml配置文件

$sudo vi mapred-site.xml

3. 在配置文件中,按照如下内容进行配置

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>

2.1.8 配置yarn-site.xml

1. 使用如下命令打开yarn-site.xml配置文件

$sudo vi yarn-site.xml

2. 在配置文件中,按照如下内容进行配置

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
</configuration>

2.1.9 配置Slaves文件

使用$sudo vi slaves打开从节点配置文件,在文件中加入

hadoop1

hadoop2

hadoop3

2.1.10 向各节点分发Hadoop程序

1.确认hadoop2和hadoop3节点/app/hadoop所属组和用户均为hadoop,然后进入hadoop1机器/app/hadoop目录,使用如下命令把hadoop文件夹复制到hadoop2和hadoop3机器

$cd /app/hadoop

$scp -r hadoop-2.2.0 hadoop@hadoop2:/app/hadoop/

$scp -r hadoop-2.2.0 hadoop@hadoop3:/app/hadoop/

2. 在从节点查看是否复制成功

2.2 启动部署

2.2.1 格式化NameNode

$cd /app/hadoop/hadoop-2.2.0/

$./bin/hdfs namenode -format

2.2.2 启动HDFS

$cd /app/hadoop/hadoop-2.2.0/sbin

$./start-dfs.sh

如果服务器操作系统为32位时,出现问题3.1异常,可以参考解决

2.2.3 验证HDFS启动

此时在hadoop1上面运行的进程有:NameNode、SecondaryNameNode和DataNode

hadoop2和hadoop3上面运行的进程有:NameNode和DataNode

2.2.4 启动YARN

$cd /app/hadoop/hadoop-2.2.0/sbin

$./start-yarn.sh

2.2.5 验证YARN启动

此时在hadoop1上运行的进程有:NameNode、SecondaryNameNode、DataNode、NodeManager和ResourceManager

hadoop2和hadoop3上面运行的进程有:NameNode、DataNode和NodeManager

3、问题解决

3.1 CentOS 64bit安装Hadoop2.2.0中出现文件编译位数异常

在安装hadoop2.2.0过程中出现如下异常:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

通过分析是由于lib/native目录中有些文件是在32位编译,无法适应CentOS 64位环境造成

有两种办法解决:

l  重新编译hadoop,然后重新部署

l  暂时办法是修改配置,忽略有问题的文件

3.2 编译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:

<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>

3.3 安装Hadoop2.2.0出现不能找到/etc/hadoop目录异常

在安装过程中启动HDFS出现如下错误:

2015-01-14 22:55:16,076 WARN  [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable]

Error: Cannot find configuration directory: /etc/hadoop

Error: Cannot find configuration directory: /etc/hadoop

127.0.0.1           localhost

改为

192.168.0.61      localhost

重启机器即可

Hadoop编译安装的更多相关文章

  1. Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...

  2. hadoop2.x编译安装

    Build instructions for Hadoop (Hadoop 编译安装,参考hadoop源码包中BUILDING.txt文档) ----------------------------- ...

  3. 附录A 编译安装Hadoop

    A.1  编译Hadoop A.1.1  搭建环境 第一步安装并设置maven 1.  下载maven安装包 建议安装3.0以上版本(由于Spark2.0编译要求Maven3.3.9及以上版本),本次 ...

  4. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  5. CentOS7 Hadoop 3.1.0 编译安装

    1.配置环境变量 JAVA_HOME=/jdk1..0_131 ANT_HOME=/apache-ant- MAVEN_HOME=/apache-maven- FINDBUGS_HOME=/findb ...

  6. 基于cdh5.10.x hadoop版本的apache源码编译安装spark

    参考文档:http://spark.apache.org/docs/1.6.0/building-spark.html spark安装需要选择源码编译方式进行安装部署,cdh5.10.0提供默认的二进 ...

  7. Hadoop学习笔记(一)——编译安装和配置

    近期工作调动.打算补一下大数据处理的知识.可能会陆续涉及hadoop.mongodb.ddbs等. 首先Apache提供二进制的Hadoop版本号是32位的.在启动时总是有警告,所以想自己编译一遍.部 ...

  8. Hadoop集群搭建-03编译安装hadoop

    Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS  Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...

  9. Hadoop Linux安装

    Hadoop Linux安装 步骤流程 1.硬件准备 2.软件准备(推荐CDH) 3.将Hadoop安装包分发到各个节点下 4.安装JDK 5.修改/etc/hosts配置文件 6.设置SSH免密码登 ...

随机推荐

  1. ESXi上的固态硬盘识别为非SSD

    启动ESXi的SSH服务 通过SSH远程连接ESXi主机 输入如下命令 # esxcli storage nmp device list        #列出储存清单(SSD设备的“device na ...

  2. js的重载

    1.重载 //重载(个数不同,类型不同)function prop(){var firstP = document.getElementById("p");if(arguments ...

  3. HDU 1565 方格取数(1)(最大点权独立集)

    http://acm.hdu.edu.cn/showproblem.php?pid=1565 题意: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格 ...

  4. 解决QML Window 增加radius效果

    做开发时,突然遇到 一个需要模态展示的对话框,做出来后,发现还要radius属性,增加时发现,Window控件不支持这个属性.如果是以前,原本就打算放弃了,但想一下,这种应该是支持的,既然接口上没有, ...

  5. 【Python】xlrd,NotImplementedError-formatting_info=True not yet implemented

    前言 Python需要读取Excel(.xls..xlsx)时通常使用xlrd模块:如果要对其内容进行编辑的话稍稍有些麻烦,通常的做法是使用xlutils的copy模块对原文件进行复制,然后保存成新的 ...

  6. JavaScript权威指南--Javascript子集和扩展

    知识要点 本章讨论javascript的子集和超集,其中子集的定义大部分处于安全考虑.只有使用这门语言的一个安全的子集编写脚本,才能让代码执行的更安全.更稳定.比如如何更安全地执行一段由不可信第三方提 ...

  7. PHP如何安装扩展

    PHP如何安装扩展 一.总结 一句话总结:兩步: dll php.ini a.下载好扩展的dll,放入指定文件夹下 b.在php.ini配置文件中声明插件 1.什么是php扩展? php核心 不支持 ...

  8. [转]Linux下彻底卸载mysql详解

    http://www.jb51.net/article/97516.htm 一.使用以下命令查看当前安装mysql情况,查找以前是否装有mysql 1 rpm -qa|grep -i mysql 可以 ...

  9. lister.ora配置

    SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = D:\ ...

  10. J2EE课程设计——企业人力资源管理系统

    一.项目名称:企业人力资源管理系统 小组成员:冯雨倩 汤杰 二.项目需求: 随着现在计算机技术的不断完善,以及现代经济的不断发展,传统的管理技术不再满足企业的需要,越来越多的企业注重计算机信息管理系统 ...