一朋友搭建,自己试验过。
环境:
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