目录

1.1.1 完全分布式介绍

1.1.2 平台软件说明

1.1.3 守护进程布局

1.2.1 集群搭建准备

1.2.2 总纲

1.2.3防火墙关闭

1.2.4 主机映射

1.2.5 免密登陆

1.2.6jdk安装和hadoop安装及环境配置

1.3.1 配置文件

1.core-site.xml

2.hdfs-site.xml

3.hadoop-enc.sh

4.workres

5. 分发

1.3.2 格式化集群

1.3.2 启动集群

1.3.3 进程查看

1.4.1 YARN配置

1.mapred-site.xml

2.yarn-site.xml

3.hadoop-env.sh

1.4.2 分发到其他节点


java安装包和hadoop安装包还是用上次的jdk-8u191-linux-x64.tar.gz和hadoop-3.1.1.tar.gz

1.1.1 完全分布式介绍

在真实的企业环境中,服务器集群会使⽤到多台机器,共同配合,来构建⼀个完整的分布式⽂件系统。⽽在这样的分布式⽂件系统中,HDFS相关的守护进程也会分布在不同的机器上,例如:

  • NameNode守护进程,尽可能的单独部署在⼀台硬件性能较好的机器中。
  • 其他的每台机器上都会部署⼀个DataNode守护进程,⼀般的硬件环境即可。
  • SecondaryNameNode守护进程最好不要和NameNode在同⼀台机器上。

1.1.2 平台软件说明

平台&&软件说明
宿主操作系统Windows
虚拟机操作系统Centos7
虚拟机软件 VMWare
虚拟机 主机名: shulin1, IP地址: 192.168.10.101主机名: shulin2, IP地址: 192.168.10.102主机名: shulin3, IP地址: 192.168.10.103
SSH工具xshll/xftp
软件包上传路径 /usr/local
软件安装路径 /usr/local
JDK X64: jdk-8u191-linux-x64.tar.gz
Hadoop X64: hadoop-3.1.1.tar.gz
⽤户root

1.1.3 守护进程布局

NamenodeDatenode SecondaryNameNode
shulin1
shulin2

shulin3

1.2.1 集群搭建准备

1.2.2 总纲

  1. 三台机器的防⽕墙必须是关闭的.
  2. 确保三台机器的⽹络配置畅通(NAT模式,静态IP,主机名的配置)
  3. 确保/etc/hosts⽂件配置了ip和hostname的映射关系
  4. 确保配置了三台机器的免密登陆认证(克隆会更加⽅便)
  5. 确保所有机器时间同步
  6. jdk和hadoop的环境变量配置

1.2.3防火墙关闭

三台虚拟机都要关闭[root@shulin ~]# systemctl stop firewalld#正常情况执行前两步即可,不懂的可以百度一下[root@shulin ~]# systemctl disable firewalld[root@shulin ~]# systemctl stop NetworkManager[root@shulin ~]# systemctl disable NetworkManager#最好也把selinux关闭掉,这是linux系统的⼀个安全机制,进⼊⽂件中将SELINUX设置为disabled[root@shulin ~]# vi /etc/selinux/config.........SELINUX=disabled.........

1.2.4 主机映射

三台虚拟机均要配置[root@shulin1 ~]# vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.10.101 shulin1 #添加本机的静态IP和本机的主机名之间的映射关系192.168.10.102 shulin2192.168.10.103 shulin3

1.2.5 免密登陆

三台虚拟机均要配置# 1. 使⽤rsa加密技术,⽣成公钥和私钥。⼀路回⻋即可[root@shulin1 ~]# ssh-keygen -t rsa # 2. 使⽤ssh-copy-id命令[root@shulin1 /]#cd ~/.ssh [root@shulin1 .ssh]# ssh-copy-id root@shulin1[root@shulin1 .ssh]# ssh-copy-id root@shulin2[root@shulin1 .ssh]# ssh-copy-id root@shulin3# 3. 进⾏验证 [hadoop@shulin1 .ssh]# ssh shulin1[hadoop@shulin1 .ssh]# ssh shulin2[hadoop@shulin1 .ssh]# ssh shulin3# 4. 继续在shulin2和shulin3⽣成公钥和私钥,给三台节点拷⻉。

1.2.6jdk安装和hadoop安装及环境配置

这一步只配置第一台即可,另外两台直接传过去即可。

请参考hadoop安装之保姆级教程1.1.1节至1.2.1节的java和hadoop安装及其环境配置。

1.3.1 配置文件

配置文件地址在 usr/local/hadoop-3.1.1/etc/hadoop 下

1.core-site.xml

fs.defaultFShdfs://shulin1:9820hadoop.tmp.dir/usr/local/hadoop-3.1.1/tmp

2.hdfs-site.xml

dfs.replication3dfs.namenode.secondary.http-addressshulin2:9868dfs.namenode.http-addressshulin1:9870

3.hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_191# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是谁export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=root

4.workers

将原来的localhost删掉,改为shulin1shulin2shulin3

5. 分发

# 我们已经完成了⼀个节点的环境配置,其他的节点也需要保持完全相同的配置。我们只需要将shulin1节点的配置拷⻉到其他的节点即可。# 分发之前,先检查⾃⼰的节点数据⽂件是否存在# 如果之间格式化过集群,那么会在core-site.xml中配置的hadoop.tmp.dir路径下⽣成⽂件,先将其删除[root@shulin1 ~]# cd /usr/local[root@shulin1 local]# scp -r jdk1.8.0_321/ shulin2:$PWD[root@shulin1 local]# scp -r jdk1.8.0_321/ shulin3:$PWD[root@shulin1 local]# scp -r hadoop-3.3.1/ shulin2:$PWD[root@shulin1 local]# scp -r hadoop-3.3.1/ shulin3:$PWD[root@shulin1 local]# scp etc/profile shulin2:/etc/[root@shulin1 local]# scp etc/profile shulin2:/etc/

1.3.2 格式化集群

我们只在1号机格式就可以[root@shulin1 ~]# hdfs namenode -format

1.3.2 启动集群

start-dfs.sh # 启动HDFS所有进程(NameNode、SecondaryNameNode、DataNode)stop-dfs.sh # 停⽌HDFS所有进程(NameNode、SecondaryNameNode、DataNode)# hdfs --daemon start 单独启动⼀个进程hdfs --daemon start namenode # 只开启NameNodehdfs --daemon start secondarynamenode # 只开启SecondaryNameNodehdfs --daemon start datanode # 只开启DataNode# hdfs --daemon stop 单独停⽌⼀个进程hdfs --daemon stop namenode # 只停⽌NameNodehdfs --daemon stop secondarynamenode # 只停⽌SecondaryNameNodehdfs --daemon stop datanode # 只停⽌DataNode# hdfs --workers --daemon start 启动所有的指定进程hdfs --workers --daemon start datanode # 开启所有节点上的DataNode# hdfs --workers --daemon stop 启动所有的指定进程hdfs --workers --daemon stop datanode # 停⽌所有节点上的DataNode

1.3.3 进程查看

# shulin1节点[root@shulin1 hadoop]# jps13442 NameNode13618 DataNode13868 Jps# shulin2节点[root@shulin2 ~]# jps10514 SecondaryNameNode10548 Jps10405 DataNode# shulin3节点[root@shulin3 ~]# jps10931 DataNode11001 Jps

1.4.1 YARN配置

1.mapred-site.xml

mapreduce.framework.nameyarnyarn.app.mapreduce.am.envHADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1mapreduce.map.envHADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1mapreduce.reduce.envHADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1

2.yarn-site.xml

yarn.resourcemanager.hostnameshulin1 yarn.nodemanager.aux-servicesmapreduce_shuffle

3.hadoop-env.sh

# 在最后面添加如下:export YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root

1.4.2 分发到其他节点

[root@shulin ~]# cd $HADOOP_HOME/etc/ [root@shulin etc]# scp -r hadoop shulin02:$PWD[root@shulin etc]# scp -r hadoop shulin03:$PWD

1.5.1 配置完成

至此hadoop完全分布式集群以搭建完成,可以打开火狐浏览器输入对应ip地址和端口号即可查看hadoop页面和yarn页面