1.更新centos7的国内镜像文件(推荐aliyun)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.下载lrzsz(上传下载文件lrzsz)
yum -y install lrzsz
3.创建两个文件夹
创建上传文件的目录
mkdir -p /root/soft
创建安装软件的目录
mkdir -p /root/module
3.进入上传文件的目录上传
cd /root/soft
rz
jdk-8u161-linux-x64.tar.gz
hadoop-3.1.4.tar.gz
4.解压
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /root/module
tar -zxvf hadoop-3.1.4.tar.gz -C /root/module
5.配置环境变量
vim /etc/profile
export JAVA_HOME=/root/module/jdk1.8.0_161
export PATH=$PATH:/root/moodule/jdk1.8.0_161/bin
export CLASSPATH=.:/root/module/jdk1.8.0_161/lib/tools.jar:/root/module/jdk1.8.0_161/lib/dt.jar
export HADOOP_HOME=/root/module/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6.编辑配置文件
创建目录(后面会用到)
mkdir /root/module/hadoop-3.1.4/hdfs/temp
mkdir /root/module/hadoop-3.1.4/hdfs/data
mkdir /root/module/hadoop-3.1.4/hdfs/name
找到五个文件编辑以下内容
core-site.xml,hadoop.env.sh,hdfs-site.xml,mapred-site.xml,yarn-site.xml
1.core-site.xml(倒数第三行:<value>hdfs://第一台虚拟机用户名:9000</value>)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/module/hadoop-3.1.4/hdfs/temp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://jiujiu1:9000</value>
</property>
</configuration>
2.hadoop.env.sh
export JAVA_HOME=/root/module/jdk1.8.0_161
export HADOOP_HOME=/root/module/hadoop-3.1.4
3.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/module/hadoop-3.1.4/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/module/hadoop-3.1.4/hdfs/data</value>
</property>
</configuration>
4.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.yarn-site.xml(第六行:<value>第三台主机名</value>)
<configuration>
<!-- Site specific YARN configuration properties -->
<!--集群master,-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>jiujiu3</value>
</property>
<!-- NodeManager上运行的附属服务-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
7.将虚拟机的文件拷贝两份
拷贝之后,将拷贝出的两份中的lck后缀的文件(是文件,不是文件夹,文件夹删了就需要你重新装了)删除,不然虚拟机会打不开
开机前点开拷贝出的两台虚拟机设置(一定要在关机状态下操作)
一定要确保MAC地址不一样,不然会导致虚拟机网络用不了
打开的过程中会弹出一个窗口,点击我已移动虚拟机
随后进入修改ip地址跟用户名,区分三个虚拟机
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/hostname
8.三台虚拟机连接secure CRT
8.1开机关闭防火墙
systemctl disable firewalld.service
立刻关闭防火墙
systemctl stop firewalld.service
查看防火墙状态
firewall-cmd --state
8.2关闭最小linux最小安全系统
vim /etc/selinux/config
配置
SELINUX=disable
8.3查看时间是否同步
date
时间不同步
/usr/sbin/ntpdate ntp4.aliyun.com
8.4后面需要用到免密登录(免密登录就是在本台虚拟机不需要其他虚拟机的密码就可以登录其他虚拟机,后面操作会用上)
创建目录存放钥匙
mkdir -p /root/.ssh
进入该目录,生成公钥和私钥
cd /root/.ssh
ssh-keygen -t rsa
点击三下空格
将每台机器的公钥复制到其中一台
ssh-copy-id jiujiu1
查看公钥是否都在文件里
vim authorized_keys
将密码文件夹分发给其他机器
scp /root/.ssh/authorized_keys jiujiu2:/root/.ssh/
scp /root/.ssh/authorized_keys jiujiu3:/root/.ssh/
将密码文件夹分发给其他机器
scp /root/.ssh/authorized_keys jiujiu2:/root/.ssh/
scp /root/.ssh/authorized_keys jiujiu3:/root/.ssh/
ssh jiujiu2
不需要密码就成功了
exit
退出登录
9.编写运行服务脚本
创建目录存放脚本
mkdir -p /root/shell
进入该目录编辑文件
cd /root/shell
vim shell.sh
编辑以下内容
#! /bin/bash
if [ $# -lt 1 ];then
echo"请输入参数:start|stop|status"
exit
fi
case $1 in
"start")
base="/root/module/hadoop-3.1.4/bin"
echo "**********************jiujiu1 start*******************"
ssh jiujiu1 "$base/hdfs --daemon start namenode"
ssh jiujiu2 "$base/hdfs --daemon start secondarynamenode"
ssh jiujiu3 "$base/yarn --daemon start resourcemanager"
echo "**********************jiujiu2 start*******************"
for x in jiujiu1 jiujiu2 jiujiu3
do
ssh $x "$base/hdfs --daemon start datanode"
ssh $x "$base/yarn --daemon start nodemanager"
done
echo "**********************jiujiu3 start*******************"
;;
"stop")
echo "**********************jiujiu1 stop*******************"
base="/root/module/hadoop-3.1.4/bin"
ssh jiujiu1 "$base/hdfs --daemon stop namenode"
ssh jiujiu2 "$base/hdfs --daemon stop secondarynamenode"
ssh jiujiu3 "$base/yarn --daemon stop resourcemanager"
echo "**********************jiujiu2 stop*******************"
echo "**********************jiujiu3 stop*******************"
for x in jiujiu1 jiujiu2 jiujiu3
do
ssh $x "$base/hdfs --daemon stop datanode"
ssh $x "$base/yarn --daemon stop nodemanager"
done
;;
"status")
for x in jiujiu1 jiujiu2 jiujiu3
do
echo "**********************$x status*******************"
ssh $x "/root/module/jdk1.8.0_161/bin/jps"
done
;;
esac
给予该脚本一定权限
chmod 777 shell.sh
查看该目录下的文件权限
ls -al
运行脚本
1.进入该目录
cd /root/shell
./shell.sh status(查看服务状态)
./shell.sh start(运行服务)
./shell.sh stop(停止服务)
2.在根目录下
./shell/shell.sh status
./shell/shell.sh start
./shell/shell.sh stop
10.在浏览器打开hadoop
192.168.40.24:9870(第一台虚拟机的ip地址:9870)