整体介绍:本次是安装hadoop的伪分布式环境,在虚拟机上搭建4台机器,master、slave1、slave2、slave3。master作为namenode,slavex作为datanode
1、准备工具
virtualbox
centos7
xshell5
jdk8
hadoop的压缩包
2、详细搭建过程
2.1、安装好virtualbox后,在virtualbox中新建
内存大小可以选个1G,由于这里安装不是界面的模式,所以可以先选个1G,后面可以修改
然后点击创建即可。
2.2、设置,然后安装centos
点击+号,选择本地磁盘中的centos的iso文件
然后点击启动,然后回车开始安装,安装开始的时候可能会检测磁盘(时间比较长),可以按ESC跳过检测
在安装位置中,点进去然后点击左上角的完成,不做任何操作,然后选择软件选择->基础设置服务器
然后next,ROOT密码就设置为root,不需要创建用户。然后等待安装后重启(时间较长)。
3、基本环境设置
3.1、配置virtualbox,添加虚拟网卡
这里使用的方式为host-only,如果在你的网络适配器中不存在这个虚拟网卡,那么你需要进行如下的设置:
点击virtualbox右上角全局工具--->主机网络管理器---->创建---->设置它的属性
IP地址设置为192.168.56.1这个很重要,到时需要和虚拟机中的系统进行通信,子网掩码为255.255.255.0(用于告知其他网络,本网络的网络号和主机号,用于辨识两个网络是否同属于一个网络号下)。这时你的网络适配器下就会多出一张虚拟网卡了,用于centos和windows通信。该网卡的地址就是刚才配置的地址。
接下来就将master(刚才创建的centos名称)的网络设置一下
3.2、设置master的ip地址
windows网卡的地址为192.168.56.1,master要想和windows通信就必须将网络号设置为相同的,同时主机号不能重复,可以将master设置为192.168.56.2-255之间,本次将master设置为192.168.56.100,slave分别为101、102、103。
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
删除其中的内容,改为如下内容,只需要设置ip和子网掩码就能让其他机器知道master到底和自己是不是同一个网段下的机器。
然后设置网关(可以认为就是路由器的ip地址),本次的网关就是虚拟网卡的地址,因为数据的转发都是该网卡进行的
vim /etc/sysconfig/network
修改当前机器的主机名为master
hostnamectl set-hostname master
然后重启网络服务
systemctl restart network
然后测试和windows的连通性,也可以在windows上进行测试ping 192.168.56.100(如果不同可以试一下关闭防火墙)
ping 192.168.56.1
3.3、使用xshell远程登录master
ok
4、上传hadoop和jdk
4.1、上传jdk并配置环境
在xshell中,如果没有这个可以安装,填写你的信息,会给你发邮件让安装。也可以使用其他的ftp工具
进入local
安装jdk,默认安装在/usr/java下
输入java测试,表示成功
4.2、上传hadoop
解压hadoop,并改名为hadoop
进入hadoop的配置文件目录,进行配置,主要配置java的位置
修改JAVA_HOME指定具体的目录
将hadoop执行命令加入到环境变量
执行profile文件,使配置的环境变量生效
测试,输入hadoop
环境配置成功
5、搭建集群
5.1、复制master三份。名称分为为slave1、slave2、slave3(关闭master才做)
然后按照master的方式修改ip地址,主机名
slave1:192.168.56.101 slave2:192.168.56.102 slave3:192.168.56.103
然后重启网络服务测试连通性。
5.2、在xshell中进行,工具---->发送键输入到所有会话
关闭防火墙(多机操作)
systemctl stop firewalld systemctl disable firewalld
修改hosts文件,将主机名和ip地址进行映射,这样输入主机名也能找到(多机操作)
配置core-site.xml:让所有的slave知道master是谁(多机操作)
cd /usr/local/hadoop/etc/hadoop/ vim core-site.xml
然后格式化hdfs,在master上输入:
在master上启动namenode
hadoop-daemon.sh start namenode
输入jps查看
在slave上启动datanode
hadoop-daemon.sh start datanode
或者可以直接在master上start-dfs.sh启动namenode和所有的datanode。