1.yum安装需要虚拟机可以正常上网,.使用yum安装时先测试下虚拟机联网情况
ping www.baidu.com
2.安装epel-release
yum install -y epel-release
注意:如果Linux安装的是最小系统版还需安装如下工具,如果是桌面版则无需。
yum install -y net-tools #net-tools工具包集合,包含config等命令
yum install -y vim #vim 编辑器
3.关闭防火墙,关闭防火墙开机自己启动
systemctl stop firewalld
systemctl disable firewalld.service
4.创建用户,并修改用户密码
useradd youyou
passwd 666666
修改文件。在%wheel下添加一行
vim /etc/sudoers
youyou ALL=(ALL) NOPASSWD:ALL
5.在youyou用户下创建两个文件夹,service 和softare,并修改二者root用户为youyou
sudo mkdir software service
sudo chown youyou:youyou service/ software/
6.(因为是安装的桌面版Linux,所以默认自动安装了JDK,需卸载,记得reboot重启虚拟机安装最小系统则无需操作此步骤)
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
其中rpm -qa | grep -i java表示过滤,xargs -n1表示只传递一个参数
7.配置Xshell-----新建------填写配置的主机名 用户 密码
8.安装JDK,
cd /opt/
ll
cd service/
选择jar包上传
tar -zxvf 所上传的jar包名称 -C /opt/service/
配置JDK
cd /jdk1.8.0_212
ll
cd /etc/profile.d/
ll #能看见后缀为.sh的文件
vim my_env.sh #自己创建一个文件配置jdk环境变量
写入如下内容:
#JAVA_HOME
export JAVA_HOME=/opt/service/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
配置完记得
source /etc/profile
输入java 会出现许多内容,说明配置成功
9.安装hadoop
同上第8操作一样,但是配置hadoop环境变量时,接着在jdk配置内容下写入内容如下
#JAVA_HOME
export JAVA_HOME=/opt/service/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export JHADOOP_HOME=/opt/service/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
配置完记得
source /etc/profile
输入hadoop会出现许多内容,说明配置成功
10.scp安全拷贝
拷贝前提:三台虚拟机均创建service和software两个目录且sudo chown youyou:youyou -R /opt/service
在hadoop1上将hadoop1中/opt/service/jdk1.8.0_212目录拷贝到hadoop2上。
scp -r /opt/service/jdk1.8.0_212 youyou@hadoop1:/opt/service
在hadoop3上,将hadoop2中/opt/service/jdk1.8.0_212目录拷贝到hadoop3上.
scp -r youyou@hadoop2:/opt/service/jdk1.8.0_212 /opt/service
在hadoop3上,将hadoop2中/opt/service目录下所有目录拷贝到hadoop3上.
scp -r youyou@hadoop2:/opt/service/* youyou@hadoop3:/opt/service
11.rsync远程同步工具
第一次同步等同于拷贝
rm -rf wc/ #删除hadoop3中/opt/service/hadoop-3.1.3/wc
#在hadoop2下同步hadoop2中/opt/service/hadoop-3.1.3到hadoop3
rsync -av hadoop-3.1.3/ youyou@hadoop3:/opt/service/hadoop-3.1.3/
12.xsync集群分发脚本:循环复制文件到所有节点的相同目录下
脚本放在声明了全局变量的路径下,在任何路径均可使用脚本
echo $PATH
#在/home/youyou/bin目录下创建xsync
cd /home/youyou
mkdir bin
cd bin/
vim xsync
#copy以下所有命令到rsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=ly1; host<ly4; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
#修改脚本 xsync 具有执行权限
chmod 777 xsync
三台虚拟机上分别执行以下命令
xsync bin/
xsync /etc/profile.d/my_env.sh
之后记得source /etc/profile
#调用脚本形式:xsync 文件名称
xsync /home/youyou/bin注意:如果将xsync放到/home/youyou/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。
13.配置集群,此处在第一台虚拟机上配置13.1-13.4
#先执行以下命令进入hadoop
cd /opt/service/hadoop-3.1.3
ll
cd etc/hadoop/
13.1配置core-site.xml vim core-site.xm l输入以下内容
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data/tmp</value>
</property>
13.2配置hdfs-site.xmll vim hdfs-site.xmll输入以下内容
13.3配置yarn-site.xml vim yarn-site.xmll输入以下内容
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>
13.4配置 mapred-site.xml vim mapred-site.xml输入以下内容
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
14.在集群上(第二、三台虚拟机)分发配置好的hadoop配置文件【注意:在/opt/service/hadoop-3.1.3/etc目录下】
xsync hadoop/
可以在第二、三台虚拟机上进入到/opt/service/hadoop-3.1.3/etc/hadoop/目录下,输入cat core-site.xml 、hdfs-site.xmll 、yarn-site.xml 、 mapred-site.xml以确认是否同步分发成功。
15.配置workers
cd /opt/service/hadoop-3.1.3/etc/hadoop
ll
vim workers
dd删除内容,输入如下
hadoop1 #自己配置的三台虚拟机主机名称,仅三行不能有空格
hadoop2
hadoop3
16.格式化
注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
hdfs namenode -format
格式化成功多了两个目录data和logs。