集群简介:
本集群中共有三台机器,分别是:
master 192.168.10.1
slave1 192.168.10.2
slave2 192.168.10.3,其中在启动hadoop后,master有namenode和datanode两个node进程,slave1和slave2只有一个node进程,就是datanode进程。
版本介绍:
linux CentOS-5.8-x86_64-bin-DVD-1of2
jdk jdk-6u45-linux-x64.bin
hadoop hadoop-2.6.0-64
搭建集群是在一台机器上完成hadoop的安装,然后进行复制,对副本进行些许修改后即成为hadoop集群。
一、部署过程
1、准备工作
1)配置IP,修改虚拟机网络选项
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改内容
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.10.1(192.168.10.2或者192.168.10.3)
NETMASK=255.255.255.0
GATEWAY=192.168.10.253
立即生效
service network restart
2)修改当前机器名称
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master(slave1,slave2)
重启生效
3)配置hosts文件
vi /etc/hosts
192.168.10.1 master
192.168.10.2 slave1
192.168.10.3 slave2
检查: ping master
4)修改虚拟机网络选项
仅主机host-only 适配器
5)安装jdk
使用filezilla.exe软件,用root用户上传,上传至/usr/local
# cd /usr/local/
修改权限(因为本人上传文件为jdk-6u45-linux-x64.bin,若为.tar.gz可直接解压)
#chmod 700 jdk-6u45-linux-x64.bin
安装jdk
#./jdk-6u45-linux-x64.bin
创建软连接
ln -s /usr/local/jdk1.6.0_45 /usr/local/jdk
修环境变量
# touch /etc/profile.d/java.sh
# vi /etc/profile.d/java.sh
修改内容:
export JAVA_HOME=/usr/local/jdk
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
使环境变量立即生效
source /etc/profile
2、安装hadoop
1)创建使用hadoop的用户帐户
# /usr/sbin/groupadd hadoop
# /usr/sbin/useradd hadoop -g hadoop
2)设置密码
# passwd hadoop
hadoop
3)创建hadoop工作目录/数据目录
mkdir -p /application/hadoop
mkdir -p /data/hadoop
mkdir -p /data/hadoop/hdfs/name
mkdir -p /data/hadoop/hdfs/data
mkdir -p /data/hadoop/hdfs/namesecondary
mkdir -p /data/hadoop/hdfs/tmp
mkdir -p /data/hadoop/mapred/mrlocal
mkdir -p /data/hadoop/mapred/mrsystem
mkdir -p /data/hadoop/hdfs/journal/
mkdir -p /data/hadoop/zoo
mkdir -p /data/hadoop/mapred/mrlocal
mkdir -p /data/hadoop/mapred/logs
chown -R hadoop:hadoop /data/hadoop
chown -R hadoop:hadoop /application/hadoop
4)使用filezilla软件,hadoop用户,上传hadoop-2.6.0-64.tar.gz,路径为/application/hadoop
解压文件
# tar -zxvf hadoop-2.6.0-64.tar.gz
创建软连接
# ln -s /application/hadoop/hadoop-2.6.0 /application/hadoop/hadoop
5)修改配置文件
配置文件路径为/application/hadoop/hadoop/etc/hadoop
共需要配置7个文件:
hadoop-env.sh 修改JAVA_HOME
yarn-env.sh 修改JAVA_HOME
Slaves 增加slave节点,设为master,slave1,slave2
core-site.xml 增加hadoop核心配置,设置hdfs文件端口(9000)和路径
hdfs-site.xml 增加hdfs配置信息,设置namenode、datanode端口和目录位置
mapred-site.xml 增加mapreduce配置,使用yarn框架、jobhistory使用地址以及web地址
yarn-site.xml 增加yarn功能
6)配置环境变量
vi /etc/profile.d/java.sh
修改内容:
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/application/hadoop/hadoop
export HADOOP_PREFIX=/application/hadoop/hadoop
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:HADOOP_HOME/bin:$PATH
立即生效
source /etc/profile
检查:
echo $JAVA_HOME
echo $HADOOP_HOME
3、其他配置
1)关闭防火墙
# service iptables stop
# chkconfig iptables stop
# iptables -F
# /etc/init.d/iptables save
# vi /etc/selinux/config
SELINUX=disabled
2)设置ssh登录
注意:使用hadoop用户登录,关闭putty,重新登录。
$ cd /home/hadoop
$ mkdir .ssh
$ chmod 755 .ssh
$ cd .ssh
$ ssh-keygen -t rsa -P ''
//询问保存路径时直接[按回车]采用默认路径
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
测试:远程登录创建目录
ssh master
exit
若能成功登录,则设置成功。
4、复制工作
1)关闭虚拟机,复制两份
2)打开副本虚拟机,设置IP和hostname
修改Linux主机名
vi /etc/sysconfig/network
HOSTNAME=slave1(slave2)
修改IP
vi /etc/sysconfig/network-scritps/ifcfg-eth0
IPADDR=192.168.10.2(192.168.10.3)
#HWADDR 注释此行
删除一个文件,若没有则可忽略。
rm -rf /etc/udev/rules.d/70-persistent-net.rules
随后进行重启。
5、启动hadoop集群
1)在启动集群前,首先要将namenode 初始化,现在master上执行此语句,在通过远程登录到slave1和slave2,进程初始化。
$ /application/hadoop/hadoop/bin/hdfs namenode -format
2)随后就可启动hadoop集群,按顺序执行下列语句:
/application/hadoop/hadoop/sbin/start-dfs.sh
/application/hadoop/hadoop/sbin/start-yarn.sh
3)可通过jps来检验进程是否全都启动,也可通过http://192.168.10.1:50070或者http://192.168.10.1:8080检验。
master中的进程:
slave1中的进程:
Slave2中的进程:
http://192.168.10.1:8088验查结果:
http://192.168.10.1:50070验查结果:
6、停止hadoop hdfs集群
按顺序执行下列语句可停止集群。
/application/hadoop/hadoop/sbin/stop-yarn.sh
/application/hadoop/hadoop/sbin/stop-dfs.sh
二、部署之后运行测试程序
在hdfs创建目录
$ /application/hadoop/hadoop/bin/hadoop fs -mkdir /input
将dada文件上传到input目录下(下列语句为一行)
$ /application/hadoop/hadoop/bin/hadoop fs
-put /application/hadoop/hadoop/test_data/data /input
可查看data内容
$ /application/hadoop/hadoop/bin/hadoop fs -cat /input/data
执行测试程序(下列语句为一行)
/application/hadoop/hadoop/bin/hadoop jar /application/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input /output
三、部署过程中遇到的问题
1)在启动hadoop时,出现了错误,截图如下:
由日志中得到原因是因为datanode和namenode的clusterID不匹配,在hdfs-site.xml中配置了datanode和namenode对应的目录,在对应目录下打开current文件夹里的VERSION文件,可以看到各自对应的clusterID的确不一致。出现此现象的原因是因为在三台机器完成配置后,各自格式化了namenode一次,然后启动hadoop集群之后又再次格式化了namenode。解决办法就是将全部datanode对应的目录删除掉,重新启动dfs即可。