一、创建一个centos7虚拟机
准备:VMware、centos7镜像
然后完成即可
二、静态网络配置
点击:编辑->虚拟网络编辑器
修改子网
修改网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
添加并修改以下几处
重启
reboot
检查
此时使用ifconfig便可以看见ip已经修改
三、配置windows中的VMnet8网络
右击网络标志,选择”打开网络或intent设置“
右击,点击属性
修改成以下数据
四、配置hosts
1、windows
进入C:\Windows\System32\drivers\etc目录下
一般情况下,不能直接修改该文件,可以将其拷贝至桌面,然后修改,然后再拷贝进该目录,覆盖掉之前的文件,在末尾加上以下内容
2、Linux
使用vim /etc/hosts 指令进入hosts中进行修改
五、克隆
六、拷贝与同步
此时已经将Hadoop102完美的配置完成,但是Hadoop103和Hadoop104都还没有进行配置,此时可以进行拷贝,将Hadoop102的jdk与hadoop拷贝到另外两台虚拟机当中
1、scp安全拷贝
拷贝使用scp命令,实现服务器与服务器之间的拷贝
scp -r [要拷贝的文件路径/名字] [目的用户@主机:目的路径/名称]
将hadoop102中的JDK拷贝至hadoop103中的/opt/module位置
scp -r jdk1.8.0_171/ root@hadoop103:/opt/module
2、xsync同步(使用脚本)
安装rsync
使用该脚本前需要先安装rsync,每个服务器都需要安装
yum install rsync
编写脚本
在主目录下创建一个bin目录
mkdir bin
将脚本文件放在该bin目录下
vim xsync编写脚本,脚本文件如下:
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
将这个bin目录中的xsync文件的权限改为最高
chmod 777 xsync
此时成功将脚本文件编写成功,便可以直接使用,此时将该bin下的内容同步到另外两个服务器当中
xsync bin/
此时便可以通过xsync [文件]来进行同步资源
七、安装JDK与Hadoop
1、解压
将JDK和Hadoop拷贝到虚拟机当中,然后解压至/opt/module路径下,如果没有module目录,便创建一个即可
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/module
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module
2、配置环境
在/etc/profile.d目录下新建一个文件
使用vim myenv.sh来创建文件,并配置该文件
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
执行vim /etc/profile进入profile文件,在文件末尾添加以下内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
目的是为了让root用户也能操作该集群(我刚开始没有配置该内容,导致root用户无法启动集群)
在配置完毕之后,需要source以下文件source profile,这样才能当配置生效
3、同步
xsync /etc/profile
在同步数据完成后,另两个虚拟机也需要source资源,让配置生效
八、集群配置
进入路径/opt/module/hadoop-3.3.1/etc/hadoop下
1、配置core-site.xml
修改core-site.xml中的配置
<configuration>
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址在hadoop01机器上-->
<value>hdfs://hadoop102:9000</value>
</property>
<!--配置Hadoop的临时目录,默认/tem/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.1/data</value>
</property>
</configuration>
2、修改hdfs-site.xml
<configuration>
<!--指定HDFS的数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode 所在主机的IP和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
</configuration>
3、修改yarn-site.xml
<configuration>
<!--指定YARN集群的管理者(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4、修改mapred-site.xml
<configuration>
<!--指定MapReduce运行时的框架,这里指定在YARN上,默认在local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、修改workers
hadoop102
hadoop103
hadoop104
需要注意,不能有空格和空行
6、修改环境
在hadoop-env.sh``yarn-env.sh``mapred-env.sh文件的末尾加上jdk的环境
export JAVA_HOME=/opt/module/jdk1.8.0_171
7、同步
在路径/opt/module/hadoop-3.3.1/etc下
xsync hadoop
将修改的内容同步到另外两台机器上
九、集群测试
初始化集群
第一次启动的时候需要初始化,就在hadoop的目录下进行即可
hdfs namenode -format
初始化成功后便可以看见hadoop目录下多出data和logs目录
启动集群
此时便可以进入sbin目录下/opt/module/hadoop-3.3.1/sbin执行启动命令
start-dfs.sh 在主机上启动(hadoop102)
start-yarn.sh 需注意,yarn安装在哪台机器上,便在那台机器上启动
启动成功后可以执行jps指令,可以看见以下内容:
打开浏览器,进入http://hadoop:9870
进入http://hadoop102:8088
出现以上界面便标志着配置成功
十、坑
1、root用户无法启动集群,会出现错误
此时需要执行第七章第二小节的后面那个操作
2、Hadoop-3.x.x的服务器默认端口
Hadoop-3.x.x的服务器默认端口为9870,Hadoop-2.x.x默认端口是50070
3、yarn的位置
在配置yarn-site.xml时,便确定了yarn的位置在哪台机器上,所以启动yarn时便在该机器上启动