一朋友搭建,自己试验过。

环境:

vmwaer CentOS 

最小化设计4个几点

192.168.31.130 hadoopnn

192.168.31.131 hadoopsnn

192.168.31.132 hadoopdn1

192.168.31.133 hadoopdn2

1、升级组件并关闭防火墙

yum -y update

PS: 如果使用本地yum源可省略该项

新开终端在升级组件的同时操作减少等待时间

service iptables stop

chkconfig iptables off

2、修改/etc/hosts文件中IP与主机映射关系 

vi /etc/hosts

192.168.31.130 hadoopnn

192.168.31.131 hadoopsnn

192.168.31.132 hadoopdn1

192.168.31.133 hadoopdn2

3、如果是虚拟机修改/etc/sysconfig/network-scripts/ifcfg-eth0删除UUID和MAC地址

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

4、删除/etc/udev/rules.d/70-persistent-net.rules 默认网卡MAC生成规则文件

rm -rf /etc/udev/rules.d/70-persistent-net.rules 

PS:如果是其它NODE节点不是虚拟机克隆或者源虚拟机复制的可省略第3、4两项

5、yum升级后重启主机

6、准备环境

6.1、yum -y install gcc gcc-c++ autoconf automake cmake ntp rsync ssh vim

yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

PS:以上一些程序可能对于hadoop并不需要但为了以后安装其它程序可能会用到尤其是源码安装

其中重要的三个程序是必须安装的

ssh 用于节点间通信 我选用的是CentOS6.7的版本默认已经安装了openssh

rsync 用于远程同步

ntp 用于时间同步

6.2、当6.1中第一个yum安装完成后新开终端进行NTP时间同步该项很重要

6.2.1 配置ntp启动项

chkconfig ntpd on

6.2.2 同步时间

ntpdate ntp.sjtu.edu.cn

6.2.3 启动ntpd服务

/etc/init.d/ntpd start

6.2.4 验证ntp服务已经运行

pgrep ntpd

6.2.5 初始同步

ntpdate -u ntp.sjtu.edu.cn

6.2.6 确认同步成功

ntpq -p

PS:可以一次性输入以上命令

chkconfig ntpd on

ntpdate ntp.sjtu.edu.cn

/etc/init.d/ntpd start

pgrep ntpd

ntpdate -u ntp.sjtu.edu.cn

ntpq -p

等待6.2.1yum成功后建议重启主机

7、创建软件安装目录并上传软件,配置环境变量

7.1 mkdir -p /opt/sxt/soft

cd /opt/sxt/soft

tar -zxvf jdk-7u80-linux-x64.tar.gz 

tar -zxvf hadoop-2.5.1_x64.tar.gz

7.2 vim ~/.bash_profile

增加以下四行

export JAVA_HOME=/opt/sxt/soft/jdk1.7.0_80

export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/opt/sxt/soft/hadoop-2.5.1

export PATH=$PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin

编辑完成后使用source命令使文件~/.bash_profile生效执行以下命令

source ~/.bash_profile

检查环境变量

printenv

8、hadoop 各节点间相同配置

8.1创建hadoop.tmp.dir目录及创建 

mkdir -p /opt/hadoop-2.5

8.2修改hadoop两个主要配置文件

8.2.1 etc/hadoop/core-site.xml:

vim /opt/sxt/soft/hadoop-2.5.1/etc/hadoop/core-site.xml

<configuration>

<property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoopnn:9000</value>

    </property>

<property>

        <name>hadoop.tmp.dir</name>

        <value>/opt/hadoop-2.5</value>

    </property>

</configuration>

8.2.2 etc/hadoop/hdfs-site.xml:

vim /opt/sxt/soft/hadoop-2.5.1/etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

<property>

 <name>dfs.namenode.secondary.http-address</name>

 <value>hadoopsnn:50090</value>

</property>

<property>

 <name>dfs.namenode.secondary.https-address</name>

 <value>hadoopsnn:50091</value>

</property>

</configuration>

8.3、检查ssh本地免密码登录

8.3.1第一次检查

ssh localhost

PS:远程成功后记得exit退出

8.3.2创建本地秘钥并将公共秘钥写入认证文件

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

8.3.3 再次检查

ssh localhost

PS:同样exit退出

8.4编写/opt/sxt/soft/hadoop-2.5.1/etc/hadoop/hadoop-env.sh文件默认 hadoop取不到用户环境变量里的JAVA_HOME所以要手动指定

vim /opt/sxt/soft/hadoop-2.5.1/etc/hadoop/hadoop-env.sh

找到export JAVA_HOME=${JAVA_HOME}

修改为export JAVA_HOME=/opt/sxt/soft/jdk1.7.0_80

PS:个人不建议增加以下一行

export HADOOP_PREFIX=/opt/sxt/soft/hadoop-2.5.1

完成第8项hadoop相同配置就已完成

删除帮助文档

rm -rf /opt/sxt/soft/hadoop-2.5.1/share/doc

重启主机使hadoop-env.sh文件生效

虚拟机复制或者要克隆的同学再次执行rm -rf /etc/udev/rules.d/70-persistent-net.rules后关闭主机

开始克隆或者复制虚拟机

虚拟机复制或者克隆完成后检查ssh各节点间是否免密码登录

如果各节点间无法面密码登录或者各节点间为单独安装请安装以下步骤完成配置:

8.3.4 各节点间免密码登录

8.3.4.1 在各节点上创建公共秘钥并写入认证文件

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

8.3.4.2在NameNode上将~/.ssh/authorized_keys文件复制到各节点上

scp ~/.ssh/authorized_keys root@hadoopsnn:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys root@hadoopdn1:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys root@hadoopdn2:~/.ssh/authorized_keys

再次检查

9、虚拟机克隆或者复制完成后修改主机名网络配置

9.1修改IP地址

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

9.2、删除MAC地址生成规则

rm -rf /etc/udev/rules.d/70-persistent-net.rules 

重启后生效

PS:如果是完全按照本配置文档操作的可省去9.2项修改IP地址后直接service networ restart即可

9.3 修改主机名

vim /etc/sysconfig/network

10、hadoop 节点差异化配置

10.1 NameNode节点修改etc/hadoop/slaves文件配置NameNode启动的时候同时启动DadaNode和SecondNameNode

vim /opt/sxt/soft/hadoop-2.5.1/etc/hadoop/slaves

删除文件中的localhost

增加以下节点名称

hadoopsnn

hadoopdn1

hadoopdn2

10.2 SecondNameNode节点在etc/hadoop目录下新增masters文件

vim /opt/sxt/soft/hadoop-2.5.1/etc/hadoop/masters

增加NameNode节点名称

hadoopnn

11、利用bin/hdfs namenode -format格式化文件系统

可以利用远程工具Xshell将文本同时发给全部节点也可以逐一执行

cd /opt/sxt/soft/hadoop-2.5.1/bin

./hdfs namenode -format

12、启动和关闭

在NameNode上启动

start-all.sh

stop-all.sh

13、检查

jps

netstat -aplnt

客户机打开网页

http://hadoopnn:50070

点击dataNodes