目录
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 守护进程布局
Namenode | Datenode | SecondaryNameNode | |
shulin1 | √ | √ | |
shulin2 | √ | √ | |
shulin3 | √ |
1.2.1 集群搭建准备
1.2.2 总纲
- 三台机器的防⽕墙必须是关闭的.
- 确保三台机器的⽹络配置畅通(NAT模式,静态IP,主机名的配置)
- 确保/etc/hosts⽂件配置了ip和hostname的映射关系
- 确保配置了三台机器的免密登陆认证(克隆会更加⽅便)
- 确保所有机器时间同步
- 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页面