集群至少可由三台机器组成,Master、Slave1、Slave2;且建立互信关系。
一、搭建两台Slave服务器,
1、挂起当前主机,找到当前主机路径,把Master镜像复制成两台Slave镜像;
直接复制CentOS_6.5文件夹两边
2、重命名为Slave1、Slave2;
3、用vm加载这两个镜像;打开虚拟机->打开虚拟机
4、同时运行三台虚拟机,对虚拟机重命名:右击标签->设置->选项->虚拟机名称(Master、Slave1、Slave2);
5、检查三台虚拟机ip,以及是否可以上网;三台ip是一样的,ip冲突,这时候slave机器不能上网;修改slave的ip为11和12
cd /etc/sysconfig/network-scripts/
su
vim ifcfg-eth0
分别更改为
IPADDR=192.168.92.11
和
IPADDR=192.168.92.12
重启网络
/etc/init.d/network restart
6、重新添加网卡:
1、检查ip ifconfig 后IP已经改变,此时依然上不了网因为三台机器用的同一个网卡(HWaddr);需要将salve的网卡先卸载:
2、点击vm右下角双电脑图标->硬件->网络适配器->移除
3、添加->网络适配器->nat模式->完成,再次ifconfig 网卡自动改为eth1 eth1(查看网卡HWaddr不是同一个网卡),这时候就可以上网了,而且不会影响master工作
二、使用secureCRT链接三台服务器
1、将之前的链接复制两份,改名字即可
2、同时右键properties 分别设置hostname;
3、分别链接三台机器;检查ip及网卡,是否可以上网
三、安装java的jdk
1、通过vm共享目录安装导入jsk文件
右击虚拟机标签->设置->选项->共享文件夹->总是启动->添加(选择文件所在文件夹)->更改名称为英文,下一步,启动此共享,完成。确定。
在终端进入/mnt/hgfs/
cd /mnt/hgfs/
查看所共享的文件夹
2、把jdk 和hadoop复制到/usr/local/src/下然后进入此目录确认文件是否都有可执行权限,直接执行jdk
su
[root@bogon Tools]# cp
jdk-6u45-linux-x64.bin /usr/local/src/
[root@bogon Tools]# cp
hadoop-1.2.1-bin.tar.gz /usr/local/src/
[root@bogon Tools]# cd
/usr/local/src/
[root@bogon Tools]# ./jdk-6u45-linux-x64.bin
3、查看java安装路径pwd
[root@bogon jdk1.6.0_45]#pwd
/usr/local/src/jdk1.6.0_45
4、为可执行程序/usr/local/src/jdk1.6.0_45/bin/java添加环境变量
打开bashrc文件,
Vim ~/.bashrc
添加环境变量;
export JAVA_HOME=/usr/local/src/jdk1.6.0_45
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
执行bash
在执行java正常,java环境安装完成,
5、复制本机jdk的bin文件到两台slave,同样配置环境变量
scp -rp jdk-6u45-linux-x64.bin 192.168.92.12:/usr/local/src/
经检测,三台机器均正常。
四、安装hadoop
1、进入master的/usr/local/src/ 下解压hadoop包(需要su权限)
tar zxvf ha…
进入解压文件,
2、创建tmp文件夹,用来存放hadoop运气的临时文件
mkdir tmp
3、进入conf目录
1)、修改masters
2)、修改slaves
3)、修改core-site.xml配置临时文件目录以及端口
4)、配置mapred-site.xml文件配置job.tracker端口 注意一定要http开头
5)、配置hdfs-site.xml文件 数据在hdfs存储的副本数 默认3个
6)、配置hadoop-env.sh
在文件最后配置java路径
export JAVA_HOME=/usr/local/src/jdk1.6.0_45
以上共配置6个文件,
7)、配置本地文件
vim /etc/hosts 配置访问映射
hostname master
hostname
可看到master已生效(临时生效)
②、配置hostname永久生效
vim /etc/sysconfig/network
以上又修改了两个文件,指定了当前机器的hostname以及hostname和当前机器ip的映射关系;至此master配置完成;
8)、接下来配置slave 分别远程拷贝hadoop的解压文件到slave机器上
scp –rp Hadoop-1.2.1 192.168.92.11:/usr/local/src/
scp –rp Hadoop-1.2.1 192.168.92.12:/usr/local/src/
①、进入两个slave,查看修改过的6个文件是否正常
然后分别修改两台机器的hosts文件和network文件
hosts内容一致
network文件中hostname不同
分别修改为各自的name就行
②、分别执行hostname slave1 和hostname slave2让各自hostname生效(这种方法是临时生效,重启机器后会失效,所以要配置network文件永久生效)可执行hostname查看是否已生效
现在三个机器的hostname都已经生效;
9)、关闭防火墙:
/etc/init.d/iptables stop
检查命令
iptables -L
10)、关闭selinux
setenforce 0 关闭
getenforce 检查(permissive)
五、建立互信关系
配置机器之间的互信关系,相互之间访问不再需要密码,直接ssh ip:
执行
ssh-keygen回车回车
cd~/.ssh/
ls
其中id_rsa.pub为公钥文件 id_rsa 为私钥文件,
1、将公钥内容拷贝给authorized_keys
cat id_rsa.pub> authorized_keys
cat # 打印两个文件,看是否相同。
2、分别在两台slave执行ssh-keygen
3、将两个slave的公钥内容复制到master的authorized_keys中
记住回车,别连起来
4、拷贝master的authorized_keys文件到slave
scp –rp authorized_keys slave1:~/.ssh/
scp –rp authorized_keys slave2:~/.ssh/
cat打印检查是否正常,此时三台机器都有了对方的公钥,
5、此时在其他节点访问不再需要密码
比如在master节点登录slave1
ssh slave1
无需密码直接登录,exit退出
六、启动hadoop
1、进入安装目录bin目录
cd hadoop-1.2.1/bin
2、第一次启动需要对namenode进行格式化操作
./hadoop namenode –format 回车
./start-all.sh启动,jps查看进程
3、slave上边jps发现也启动成功
4、回到master检查环境是否可用
./Hadoop fs –ls / 注意这斜杠前边有空格
测试正常,
5、上传一个文件试试
./Hadoop fs –put /etc/passwd / 未报错,正常
./Hadoop fs –ls /查看,
./Hadoop fs –cat /passwd 打印,正常显示
目前为止,hadoop环境搭建成功