目录
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/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 shulin1 #添加本机的静态IP和本机的主机名之间的映射关系
192.168.10.102 shulin2
192.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.6 jdk安装和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
<configuration>
<!-- 设置namenode节点 -->
<!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时代默认端
⼝ 9820 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://shulin1:9820</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.1.1/tmp</value>
</property>
</configuration>
2.hdfs-site.xml
<configuration>
<!-- 块的副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>shulin2:9868</value>
</property>
<!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.http-address</name>
<value>shulin1:9870</value>
</property>
</configuration>
3.hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_191
# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是谁
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
4.workers
将原来的localhost删掉,改为
shulin1
shulin2
shulin3
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 # 只开启NameNode
hdfs --daemon start secondarynamenode # 只开启SecondaryNameNode
hdfs --daemon start datanode # 只开启DataNode
# hdfs --daemon stop 单独停⽌⼀个进程
hdfs --daemon stop namenode # 只停⽌NameNode
hdfs --daemon stop secondarynamenode # 只停⽌SecondaryNameNode
hdfs --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]# jps
13442 NameNode
13618 DataNode
13868 Jps
# shulin2节点
[root@shulin2 ~]# jps
10514 SecondaryNameNode
10548 Jps
10405 DataNode
# shulin3节点
[root@shulin3 ~]# jps
10931 DataNode
11001 Jps
1.4.1 YARN配置
1.mapred-site.xml
<configuration>
<!-- 指定MapReduce作业执⾏时,使⽤YARN进⾏资源调度 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.1</value>
</property>
</configuration>
2.yarn-site.xml
<configuration>
<!-- 设置ResourceManager -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>shulin1</value>
</property>
<!--配置yarn的shuffle服务-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.hadoop-env.sh
# 在最后面添加如下:
export YARN_RESOURCEMANAGER_USER=root
export 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页面
版权归原作者 linzz0000 所有, 如有侵权,请联系我们删除。