前言
一般企业中不会使用master slave01 slave02来命名
vmware创建虚拟机
打开vmware软件,新建虚拟机
典型
稍后安装系统
选择centos7
虚拟机名称和安放位置自行选择(最小化安装消耗空间较少)
默认磁盘大小即可
自定义硬件
选择centos7的iso镜像文件(没有的话自行上阿里云下载)随后点击关闭centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云
完成
开启虚拟机
安装centos7
键盘上下键选择第一项直接安装,第二项是测试镜像完整性并安装,耗时较久
等待一会
语言中英文都可,按自己喜好,选择继续
选择安装位置,默认即可
直接点击完成
点击开始安装即可
点击设置root用户密码
如果设置的是弱密码需要点击两次完成
点击创建用户
创建一个hd用户,如果设置的是弱密码需要点击两次完成
等待安装,点击完成配置
再次等待,点击重启
启动centos7进行初步设置
登录root用户,输入密码不会有提示 输入完毕后直接回车即可登录
登录后发现没有IP地址
先配置一个临时IP地址(ens33 对应自己的网卡)
ip根据自己实际情况而设置
ifconfig ens33 192.168.20.30
使用远程工具ssh连接,这里使用MobaXterm
连接类型选择SSH ,输入centos7的IP地址(前面设置了192.168.20.30)根据自己的实际情况来,选择登录hd 用户,点击OK连接,随后输入密码(一样的输入密码是没有提示的)
切换到root用户(因为后面配置需要root用户权限)
su root
修改为静态ip地址(前面设置的是临时ip重启后失效)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO从dhcp修改为static
ONBOOT从no修改为yes
在文件末尾加入如下三行(因为不需要联网所以不用配置DNS)ip根据自己实际情况而设置
IPADDR=192.168.20.30
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
:wq保存退出、ZZ也可
重启网卡令配置生效
systemctl restart network
关闭防火墙并永久禁用防火墙和selinux,setenforce 0重启后会失效,修改selinux文件需要重启才能生效
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
将SELINUX=enforcing修改为SELINUX=disabled
保存退出
安装Java环境
先删除Linux自带的Java环境
在root用户下
yum remove -y java*
回到hd用户
su hd
在hd用户目录下创建apps文件夹来放软件包及安装软件
上传Java包
将jdk-8u121-linux-x64.gz包上传至上面创建的apps目录下
解压Java包
注意以hd用户解压否则会出现hd用户无权限无法启动Hadoop
tar -zxvf jdk-8u121-linux-x64.gz
mv jdk1.8.0_121/ java
配置Java环境
su root
添加环境变量
vi /etc/profile
G来到文件末尾,o在下一行插入
export JAVA_HOME=/home/hd/apps/java
export PATH=$PATH:$JAVA_HOME/bin
加载系统环境并查看Java版本
source /etc/profile
java -version
Hadoop安装
上传Hadoop包
上传hadoop-2.8.1.tar.gz至apps目录并解压
切换至hd用户
su hd
解压 Hadoop包
tar -zxvf hadoop-2.8.1.tar.gz
修改目录名
mv hadoop-2.8.1 hadoop
修改Hadoop配置文件
先进入Hadoop配置文件目录
cd hadoop/etc/hadoop/
修改hadoop-env.sh
vi hadoop-env.sh
按G来到文件末尾o在下一行插入,在文件末尾追加
export JAVA_HOME=/home/hd/apps/java
:wq保存退出 或 ZZ保存退出
注意!!!! 看了再往下做
下面修改的4个文件一定要在<configuration></configuration>中添加,不要图省事直接追加在文件末尾,一个xml文件只能一个根节点,出现了2个 会导致Hadoop无法启动(本人踩的雷)
修改core-site.xml
vi core-site.xml
在<configuration></configuration>中添加
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!-- 指定hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/home/hd/apps/hadoop/tmpdata</value></property><!--Hadoop回收站trash,默认是关闭的 可以设置一个时间阀值(单位:分钟),
当回收站里文件的存放时间超过这个阀值或是回收站被清空时,文件才会被彻底删除,并且释放占用的数据块。
--><property><name>fs.trash.interval</name><value>1440</value>
</property>
修改hdfs-site.xml
vi hdfs-site.xml
在<configuration></configuration>中添加
<!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>2</value></property><!-- 设置namenode的http通讯地址 --><property><name>dfs.namenode.http-address</name><value>master:50070</value></property><!-- 设置secondarynamenode的http通讯地址 --><property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value></property><!-- 设置namenode存放的路径 --><property><name>dfs.namenode.name.dir</name><value>/home/hd/apps/hadoop/namenode</value></property><!-- 设置datanode存放的路径 --><property><name>dfs.datanode.data.dir</name><value>/home/hd/apps/hadoop/datanode</value></property>
修改mapred-site.xml
因为我的包里没有mapred-site.xml,需要将mapred-site.xml.template重命名为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
再来修改文件
vi mapred-site.xml
在<configuration></configuration>中添加
<!-- 指定mr运行在yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/home/hd/apps/hadoop</value></property>
修改yarn-site.xml
vi yarn-site.xml
在<configuration></configuration>中添加
<!-- 指定YARN的老大(ResourceManager)的地址 --><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><!-- reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
修改slaves
vi slaves
追加
slave01
slave02
修改环境变量
先切换到root用户
su root
vi /etc/profile
在文件末尾追加
export HADOOP_HOME=/home/hd/apps/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
加载环境
source /etc/profile
查看Hadoop版本
hadoop version
克隆虚拟机
先关闭虚拟机
shutdown -h now
右键虚拟机标签,选择管理,克隆
我选择链接克隆,根据自己情况来选择(链接克隆如果母机损坏了链接克隆的机器也无法正常启动,但是占用空间小,克隆速度快)
为了方便分辨虚拟机名称设为hd2,存储位置自行选择,点击完成即可
完毕
同样方法再克隆一台
启动并修改克隆的虚拟机IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将网卡ID删除(避免与母机冲突)并修改IP地址,ip根据自己实际情况而设置
重启网卡
systemctl restart network
随后检查个各机器防火强是否关闭,selinux是否关闭
systemctl status firewalld
setenforce 0
java版本,Hadoop版本是否一致(如果没有的话自行检查 /etc/profile 环境变量 source加载)
java -version
hadoop version
修改主机名
母机 master
从机1 slave01
从机2 slave02
一般企业中是不会像这样命名的
hostnamectl set-hostname master
bash重新加载交互
hostnamectl set-hostname slave01
hostnamectl set-hostname slave02
修改/etc/hosts 文件
切换到root用户
su root
修改hosts文件
vi /etc/hosts
在文件末尾追加(ip根据自己实际情况而设置)
192.168.20.30 master
192.168.20.31 slave01
192.168.20.32 slave02
保存并退出
同步到两台子机上
scp /etc/hosts root@slave01:/etc/
scp /etc/hosts root@slave02:/etc/
输入yes
输入密码后回车(没有提示的)
第二台同理
免密登录
先退出root用户,直接
exit
在master上生成密钥
ssh-keygen
回车
继续回车
一直回车
拷贝密钥到需要免密登录的机器
master slave01 slave02三台机器
ssh-copy-id slave02
ssh-copy-id slave01
ssh-copy-id master
输入yes,随后输入密码,回车
另外两台同理
测试免密登录
ssh slave01
ssh slave02
ssh master
不需要输入密码就说明成功了(如若不成功检查防火墙,重新生成密钥并发送到三个节点 ,并确认你的当前用户是hd)
exit退出
格式化Hadoop
只需要在master上格式化
hadoop namenode -format
( )( )启动!!!
启动Hadoop集群
start-dfs.sh 启动HDFS分布式文件系统,停止stop-dfs.sh
start-yarn.sh 启动Yarn资源管理器,停止stop-yarn.sh
start-all.sh HDFS分布式文件系统与Yarn启动,停止stop-all.sh
主要使用 一键启动所有
start-all.sh
如要停止,使用
stop-all.sh
启动卡住没有datanode解决办法
启动Hadoop后 没有DataNode进程 的解决方法_hadoop没有datanode-CSDN博客
中途提示Host key verification failed解决办法
解决Host key verification failed.(亲测有效)-CSDN博客
使用jps查看启动服务
master服务如图
两个slave服务如图
hdfs 文件系统访问地址:http://192.168.20.30:50070
ip根据自己实际情况而设置
Yarn资源管理器访问地址:http://192.168.20.30:8088
ip根据自己实际情况而设置