一、建立hadoop运行账号(all/root)
二、配置hosts文件(namenode/root)

三、为hadoop账户配置ssh免密码连入(all/hadoop)
四、下载并解压jdk(namenode/root)
五、 下载并解压hadoop安装包(namenode/hadoop)
六、配置hadoop-env.sh(namenode/hadoop)
七、conf文件夹下修改site文件(namenode/hadoop)
八、conf文件夹下配置masters和slaves文件(namenode/hadoop)
九、向各节点复制jdk及hadoop(namenode/hadoop)
十、格式化hdfs(namenode/hadoop)
十一、启动hadoop((namenode/hadoop))
十二、用jps检验各后台进程是否成功启动(all/hadoop)

 

下面详细介绍各步骤的具体细节:

1、建立hadoop运行账户grid

 useradd   grid

passwd   grid

2、设置个节点的静态IP地址,修改各节点的主机名,修改hosts的文件

(1)首先给各节点设置静态IP地址,但必须保证各节点的静态IP地址是同一个网段,也就是保证各节点之间是可以相互ping的通。

(2)为了便于管理各节点,将各节点的主机名进行自定义。

  查看当前节点的主机名:hostname

  修改主机名:hostname 主机名   (此时修改时临时有效,要永久有效,则需要修改/etc/sysconfig/network配置文件,修改相应的名字即可)

(3)将上面修改后的主机名和对应的ip地址绑定
  修改/etc/hosts文件,即增加一行内容为:主机的ip地址 主机名
  验证:就是互相ping一下主机名即可

3、 关闭防火墙,并设置开机不自动启动防火墙
(1)关闭防火墙    

    service iptables status  查看防火墙
      service iptables stop   关闭防火墙 
(2)设置开机自启动关闭

        chkconfig --list 查看所有开启的服务,后面如跟on则表示该程序是开机自动启动的。为了想将防火墙彻底关闭,因此必须将开机自启动关闭。
        chkconfig --list |grep iptables 查看防火墙是否是开机自启动。  (grep表示过滤的意思)
      chkconfig iptables off 关闭防火墙的开机自启动功能。

4、为hadoop运行账户grid 设置免密码登录。(这一部至关重要)

(1)首先在各节点上用hadoop运行账户grid进行登陆。

(2)各节点分别执行命令 ssh-keygen -t rsa 产生密钥,产生的密钥位于~/.ssh文件夹中执行 ,-t rsa表明加密算法。
(3)根据各主机名的ip地址的不同,进行
 

  cp   ~/.ssh/id_rsa.pub    ~/.ssh/id_rsa.pub.0  //将各节点的公钥进行备份
  cp   ~/.ssh/id_rsa.pub    ~/.ssh/id_rsa.pub.1
  cp   ~/.ssh/id_rsa.pub    ~/.ssh/id_rsa.pub.2

(4)将其他节点的备份的公钥文件复制到namenode节点上

  scp -r ~/.ssh/id_rsa.pub.1   grid@hadoop0:/home/hadoop/.ssh
  scp -r ~/.ssh/id_rsa.pub.2   grid@hadoop0:/home/hadoop/.ssh
(5)把所有的公钥都放进一个文件中
   cat ~/.ssh/id_rsa.pub.0 >> ~/.ssh/authorized_keys
   cat ~/.ssh/id_rsa.pub.1 >> ~/.ssh/authorized_keys
   cat ~/.ssh/id_rsa.pub.2 >> ~/.ssh/authorized_keys
验证 ssh hadoop101  发现无效,提示还是需要密码。
(6)修改authorized_keys的权限, 组用户不能有 写(W)权限, 不然ssh 由于安全问题不生效
    authorized_keys 权限改为 644 就OK 
(7)然后将authorized_keys 文件分发给 其他节点
  scp -r ~/.ssh/authorized_keys   grid@hadoop1:/home/hadoop/.ssh
  scp -r ~/.ssh/authorized_keys   grid@hadoop2:/home/hadoop/.ssh
验证: ssh hadoop0,ssh hadoop1,ssh hadoop2 ,发现登陆成功或者第一次需要输入yes,后面就不需要。然后神奇的事情发生了。 3台机器彼此之间可以互联,O(∩_∩)O哈哈~
 
5、下载并安装jdk(这里的jdk是1.6的版本(推荐))
  <1>执行rm -rf /usr/local/* 删除/usr/local/目录下所有内容。
  <2>使用ssh工具将jdk上传到linux中
  <3>给jdk安装文件授予执行权限:chmod 744 文件名
  <4>执行./jdk文件名。必须在usr/local/*中执行,否则在其他路径下执行找不到相应的文件。
  <5>修改文件名 mv jdk-8u  jdk
  <6>修改环境变量即修改 vi /etc/profile文件即可。在该文件夹中添加两行内容
     export JAVA_HOME=/usr/local/jdk
     export PATH=.:$JAVA_HOME/bin:$PATH
    保存退出
  <7>执行 source /etc/profile 命令,让修改的环境变量立即生效
 
 
6、下载并安装hadoop
  <1>执行命令 tar -zxvf /home/grid/hadoop-1.1.2.tar.gz  进行解压缩
  <2>重命名:mv hadoop1.1.2 hadoop
  <3>配置环境变量,即增加hadoop的环境变量,即在/etc/profile中增加一行
   export HADOOP_HOME=/home/grid/hadoop
   export PATH=.:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin
   保存退出
  <4>执行 source /etc/profile 命令,让修改的环境变量立即生效
  验证: hadoop
7、修改hadoop的配置文件
(1)修改hadoop-env.sh文件(namenode-hadoop)

  修改 export JAVA_HOME=/usr/local/jdk    //这里就是将前面的#号去掉,路径名就是jdk的安装路径名

(2)修改conf文件夹下修改core-site.xml、hdfs-site.xml、mapred-site.xml文件(namenode-hadoop)

1、core-site.xml
<configuration>
    <property>
<name>fs.default.name</name>
<value>hdfs://hadoop0:9000</value> //这里需要注意需要修改namenode的主机名
<description>change your own hostname</description>
    </property>
    <property>
<name>hadoop.tmp.dir</name>
<value>/home/grid/hadoop/tmp</value>  //注意这里是hadoop安装路径
    </property> 
</configuration>
2、hdfs-site.xml
<configuration>
   <property>
<name>dfs.replication</name>
<value>2</value>
   </property>
</configuration>
3、mapred-site.xml
<configuration>
    <property>
<name>mapred.job.tracker</name>
<value>hadoop0:9001</value>  //这里也需要相应的修改为对应的namenode主机名
<description>change your own hostname</description>
    </property>
</configuration>
 (3)修改
conf文件夹下配置masters和slaves文件(namenode-hadoop)
在master文件中添加namenode的主机名 :   
hadoop0
在slave文件中添加datanode的主机名:
hadoop1
hadoop2
 
 8、向各节点复制jdk及hadoop(namenode-hadoop)
(1)分发hosts到其他机器(root用户)
  scp -r /etc/hosts root@hadoop1:/etc/
  scp -r /etc/hosts root@hadoop2:/etc/
 
(2)分发java(root用户)
  scp -r /usr/local/jdk root@hadoop1:/usr/local/
  scp -r /usr/local/jdk root@hadoop2:/usr/local/
 
 
 
 
(3)分发环境变量/etc/profile(root用户)
  scp -r /etc/profile root@hadoop1:/etc/
  scp -r /etc/profile root@hadoop2:/etc/
在各节点上分别执行source /etc/profile,使得配置文件/etc/profile立刻生效。并且分别验证: java -version
(4)分发hadoop(切换为grid用户,可以免密码)
  su hadoop
  scp -r    /home/grid/hadoop      grid@hadoop1:/home/grid/
  scp -r    /home/grid/hadoop     grid@hadoop2:/home/grid/
在各节点上分别验证:hadoop

9、格式化hdfs(namenode/hadoop)

  在hadoop0,hadoop1, hadoop2的grid用户下执行命令 hadoop namenode -format 

  都有提示 Storage directory /home/hadoop/hadoop-1.1.2/tmp/dfs/name has been successfully formatted.才证明成功

10、启动hadoop(namenode/hadoop)
在hadoop0 上执行 start-all.sh

11、用jps检验各后台进程是否成功启动(all/hadoop)