环境:  系统  CentOS 6.3 64 位  * 2 
Master           10.10.55.112
Slave1           10.10.55.133
软件:  Hadoop- 2.5.1- src.tar.gz

一、准备环境

     1.1     分别设置节点ip地址(固定)  此步骤所有节点都要操作

 vi /etc/sysconfig/network- scripts/ifcfg – eth0

 

     1.2     修改节点主机名此步骤所有节点都要操作

 vi /etc/sysconfig/network   
 以上两步骤需要重启服务器后才生效

    

  1.3     创建 hadoop 用户及主机名  此步骤所有节点都要操作

useradd   hadoop  
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master.Hadoop   //节点服务器设置为 slave1.Hadoop
vi   /etc/hosts                               
10.10.55.112 master.Hadoop                   
10.10.55.133 slave1.Hadoop

    

 1.4     建立 hadoop 用户之间相互信任(互相无密码登陆)此步骤所有节点都要操作

切换至 hadoop 用户下执行   ssh-keygen -t rsa   
然后将自己的公钥以及其他服务器 hadoop 用户的公钥放置 hadoop 宿主目录下的.ssh/authorized_keys中,
注意 authorized_keys 默认不存在需要手动创建,并且必须设置权限为 600
         ssh-keygen生成密钥;-t生成密钥类型;dsa为dsa密钥认证的意思,密钥类型;-P用于提示密语;-f生成密钥文件;
ssh-keygen -t rsa                       
cat .ssh/id_dsa.pub >> .ssh/authorized_keys
ssh –version

    

   1.5   安装 java(建议每台机器的 JAVA_HOME 路径信息相同)此步骤所有节点都要操作

    下载 jkd  http://www.oracle.com/technetwork/java/javase/downloads/index.html

     下载后解压至自己指定的目录如  /usr/java

wKioL1QiOijTwEAvAAGDkvebRdA519.jpg

 

wKiom1QiOgbCNgQtAADf-P0vens994.jpg

添加变量:以 root 用户  vi   /etc/profile
根据自己路径在最后添加以下三行
#jdk
export JAVA_HOME=/usr/java/jdk1.7.0_67                               
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib        
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin       
添加之后执行   sourc   /etc/profile    重新加载  建议 root 用户和 hadoop 用户都操作此步

   

     1.6    安装基本应用程序 (此步骤要求联公网此步骤只需在 master 上操作

yum -y install  svn   ncurses-devel   gcc*                                             
yum -y install lzo-devel zlib-devel autoconf    automake    libtool    cmake     openssl –devel

 

       1.7     安装 maven

下载 apache-maven-3.1.1-bin.tar.gz   
(下载地址   http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz  )
并解压    tar   zxvf   apache- maven- 3.2.3- bin.tar.gz
mv   apache-maven-3.2.3   maven     (改名)

 

 wKiom1QiPMOTKPvrAATEJDRmNvI503.jpg

注意一下 maven 存放路径,可以自定义路径 我的路径是 /home/hadoop/maven 目录下
添加变量:以 root 用户  vi   /etc/profile
根据自己路径在最后添加以下两行
export MAVEN_HOME=/home/hadoop/maven  
export PATH=$PATH:$MAVEN_HOME/bin       
添加之后执行  sourc   /etc/profile   重新加载

    

     1.9     安装 protobuf(不安装,编译将无法完成)

 Hadoop使用protocol buffer进行通信,需要下载和安装protobhf-2.5.0.tar.gz;由于官网已经无法下载了,

可以到百度云盘下载http://pan.baidu.com/s/1pJlZubT

编译安装 protobuf

  cd   protobuf - 2.5.0   

  ./configure

  make

  make install

检测  protoc –version

 

二、编译安装 hadoop-2.5.1

    2.1   下载  hadoop-2.5.1-src.tat.gz

        Hadoop-2.2.0 源码包下载地址  http://apache.claz.org/hadoop/common/hadoop-2.5.1/

    红色标志  hadoop-2.5.1- src.tar.gz 为源码包

wKioL1QiPhuRy1umAAG3OzJ7eck847.jpg

    2.2   解压hadoop-2.5.1-src.tar.gz

wKioL1QiPkfDoejmAAM6Q9H24b8233.jpg

    2.3   开始编译

执行命令   mvn clean package –Pdist,native –DskipTests –Dtar       
此步骤要求逐级能访问公网,并且此步骤比较漫长,由于服务器配置和网上的不同因素,时间大致为1小时左右;
完成结果图类似如下:

 

wKioL1QiPouxyUxwAAjg4NGzOCk900.jpg

编译成功后,  /hadoop-dist/target/hadoop-2.5.1.tar.gz   就是我们需要的文件了;
将编译好的  /hadoop-dist/target/hadoop-2.5.1.tar.gz  文件分别拷贝到其他节点,
并将其解压,设置其属主、属组都为Hadoop用户(路径自定义,注:所有节点Hadoop路径必须相同,我这里所有服务器节点都放在/home/hadoop

 

wKiom1QiRMDw5WJHAAKy6qga9QM053.jpg

wKioL1QiRQjQ-1vMAAIOAsYsQKI826.jpg

然后添加环境变量: vi /etc/profile  此步骤所有节点都要操作
添加以下两条:
#set hadoop 环境变量                                              
export HADOOP_HOME=/root/hadoop-2.5.1         指定Hadoop安装路径
export PATH=$HADOOP_HOME/bin:$PATH                              
export CLASSPATH=$HADOOP_HOME/lib:$CLASSPATH                     
添加之后执行   sourc  /etc/profile   重新加载  建议 root 用户和 hadoop 用户都操作此步

   

     2.4  master 操作

 

解压/hadoop-dist/tast/target/hadoop-2.5.1.tar.gz 到 /home/hadoop 进入配置文件目录

 

wKiom1QiRT-AJv_tAASaw9mW2Wo306.jpg

在这里主要修改以下几个文件:(文件内容有些参数根据自己时间情况修改)
slaves   core- site.xml   hadoop-env.sh   hdfs - site.xml  
mapred-site.xml  (此文件默认不存在)  yarn-env.sh   yarn -site.xml

   

    

   2.4.1          修改slaves文件,添加以下内容(目的:添加slave节点,建议写ip地址)

10.10.55.133

  

  2.4.2          修改 core-site.xml 添加以下内容:

<configuration>
       <configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://10.10.55.112:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/hadoop/hadoop-2.5.1/temp</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.4.3          修改hdfs-site.xml文件

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>10.10.55.112:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/hadoop-2.5.1/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/hadoop-2.5.1/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
</configuration>

    2.4.4     修改mapred-site.xml 文件,添加如下内容:

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

    2.4.5          修改 yarn-site.xml 文件,添加如下内容:

<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>10.10.55.112:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>10.10.55.112:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>10.10.55.112:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>10.10.55.112:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>10.10.55.112:8088</value>
        </property>
</configuration>

    2.4.6        修改hadoop-env.sh  文件

修改JAVA_HOME值( export JAVA_HOME=/usr/java/jdk.1.7.0_67

    2.4.7         修改 yarn-env.sh文件

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_67)

    2.4.8         传送文件至各个节点保持一致

配置文件修改完了,然后将修改后的所有文件都复制(覆盖)到各个节点 hadoop 目录下
scp hadoop-env.sh hdfs - site.xml mapred-site.xml slaves yarn-env.sh yarn -site.xml hadoop@10.10.55.133:/home/hadoop/hadoop-1.5.1/et/hadoop/
scp hadoop-env.sh hdfs- site.xml mapred-site.xml slaves yarn-env.sh yarn -site.xml hadoop@10.10.55.151:/home/hadoop/hadoop-1.5.1/et/hadoop/

 

三、启动Hadoop

    3.1   初始化Hadoop (注意:请关闭所有节点防火墙)

切换至 hadoop 用户,进入/home/hadoop/hadoop-2.2.0/bin/下执行命令 hdfs namenode - format  进行初始化

 

wKiom1QiRt3goWp8AAPBBeDzBq4533.jpg

...

wKioL1QiRzHzgdc2AAs-GOMtvMU937.jpg

初始化完之后会自动在/home/hadoop/hadoop-2.5.1/创建 dfs/name/目录
每次初始化都会对dfs进行操作,一般只要初始化一次就可以了,因为如果dfs里面有数据的话会把它给弄丢的

   

 3.2   启动Hadoop (用 Hadoop 用户执行)注意:请关闭所有节点防火墙)

        切换至/home/hadoop/hadoop-2.5.1/sbin/目录下:
     3.2.1        执行脚本 ./start-dfs.sh
                  此时master 上会产生:(两个进程)

wKiom1QiR3eggq4TAAIQlS7ZtnA110.jpg

 Slave 节点上会产:(DataNode进程)  dfs密钥同步到slave节点上

wKiom1QiR5ayGcXiAAGnoqZkos4784.jpg

         3.2.2         执行脚本 ./start-yarn.sh  (产生一个进程ResourceManager

                slave节点产生NodeManger进程

 wKiom1QiR-uiAOYXAAGSLhuGeLo868.jpg

 wKioL1QiSDTSN43TAABd2lurAjY204.jpg

四、测试

访问网页: http://10.10.55.112:8088

wKiom1QiSEuSp47wAAQ24XyXWAU057.jpg

访问网页:http://10.10.55.112:50070

wKiom1QiSLCzV4zUAAR1a16kVpY757.jpg

wKiom1QiSNzQJIFrAAE7T0DNQuA542.jpg

wKioL1QiSSiCwmb0AAM9uPd66QU501.jpg

 

至此,hadoop 已经启动

 

关于 hadoop  的启动和关闭:

/home/hadoop/hadoop-2.5.1/bin

hdfs 命令  用来初始化

hdfs namenode -format

/home/hadoop/hadoop-2.5.1/sbin 

启动

start-dfs.sh    #Start hadoop dfs daemons

start-yarn.sh   #Start all yarn daemons.   Run this on master node

关闭

stop-dfs.sh

stop-yarn.sh

另外:

start-all.sh  脚本包含  start-dfs.sh start -yarn.sh  两个脚本  所以启动时可以直接执行此脚本

stop-all.sh  关闭  同理

 

=========================================================================================

 

常见问题

1、   slave节点DataNode 无法启动

  1. 搭建了很多次,这个问题每次都出现,所以总结了一下:

  2. 防火墙没关                                                            解决办法:你懂得

  3. 所有节点 hosts  链表不统一,或有错误           解决办法:你懂得

  4. 查看节点日志提示namenode.rpc-address is not configured.发现node1没复制过去core-site.xml文件

  5. 因为多次 format namenode  造成 namenode  datanode clusterID 不一致

解决方法:

方法一:更改 slave Cluster ID  master 相同

修改每一个 datanode 上面的 CID(位于 dfs/data/current/VERSION 文件夹中) 使两  者一致

方法二:删除所有节点/home/hadoop/hadoop-2.5.1/dfs/data/  curren 目录  然后  重新 start-dfs.sh  即可