centos7+hadoop-2.9.2搭建分布式集群教程【2万+字 超详细】

  • Post author:
  • Post category:其他




叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!



在这里插入图片描述



一、新建虚拟机:

参考教程:

https://blog.csdn.net/qq_43543789/article/details/108778753

静态IP设置:

在这里插入图片描述


Master

ip:192.168.52.129

网关:192.168.52.2

子网掩码:255.255.255.0

DNS:192.168.52.2

选择DNS为“手动”

设置root 密码:123456

设置master密码:123456



二、连接XSHell

连接master

设置连接用户为root,密码为123456

在这里插入图片描述

在这里插入图片描述



三、修改主机名称和网络名称

[root@master ~]# vim /etc/hosts
192.168.52.130 Master
192.168.52.131 slave1
192.168.52.132 slave2

在这里插入图片描述

[root@master ~]# vim /etc/sysconfig/network
NETWOEKING=yes
HOSTNAME=master

在这里插入图片描述



四、关闭防火墙

关闭:[root@master ~]# systemctl stop firewalld.service

禁止开机启动:[root@master ~]# systemctl disable firewalld.service

查看状态:[root@master ~]# firewall-cmd --state

在这里插入图片描述



五、关闭selinux

[root@master ~]# vim /etc/selinux/config

关闭前:

在这里插入图片描述

关闭后:

在这里插入图片描述



六、jdk的安装与卸载

1.查看

[root@master ~]# rpm -qa|grep jdk

在这里插入图片描述

这里看到java版本:java-1.8.0

2.卸载

[root@master ~]# yum -y remove java java版本

 yum -y remove java java-1.8.0

在这里插入图片描述

在这里插入图片描述

若遇到yum正在被占用:

[root@master ~]# rm -f /var/run/yum.pid

3.将下载好的jdk通过xshell拖动到指定的文件夹中并将其解压

在这里插入图片描述

在这里插入图片描述

在root下创建文件夹java:
[root@master ~]# mkdir java

将jdk解压到/root/java/[root@master ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C java
小啊呜下载的jdk版本:
jdk-8u221-linux-x64.tar.gz

将压缩包删除:[root@master ~]# rm -rf jdk-8u221-linux-x64.tar.gz

在这里插入图片描述

4.配置环境

[root@master ~]# vim /etc/profile

在这里插入图片描述

输入以下内容并保存:

JAVA_HOME=~/java/jdk1.8.0_221
JRE_HOME=~/java/jdk1.8.0_221/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME 
export JRE_HOME 
export CLASS_PATH 
export PATH

在这里插入图片描述

[root@master ~]# source /etc/profile
[root@master ~]# java -version

在这里插入图片描述



七、hadoop的安装

1.解压

将下载好的hadoop通过xshell拖动到master中

在这里插入图片描述

hadoop-2.9.2.tar.gz

在root下创建文件夹hadoop:

[root@master ~]# mkdir hadoop

将hadoop解压到/root/hadoop/:

[root@master ~]# tar -zxvf hadoop-2.9.2.tar.gz -C ./hadoop/

在这里插入图片描述

2.配置环境

hadoop-2.9.2

[root@master ~]# vim /etc/profile
export HADOOP_HOME=~/hadoop/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

在这里插入图片描述

[root@master ~]# source /etc/profile

[root@master ~]# hadoop version

在这里插入图片描述

3.配置hadoop

(1)创建目录

在~/hadoop下创建目录

在这里插入图片描述

[root@master hadoop]# mkdir tmp

[root@master hadoop]# mkdir var

[root@master hadoop]# mkdir dfs

[root@master hadoop]# mkdir dfs/data

[root@master hadoop]# mkdir dfs/name

在这里插入图片描述

(2)修改配置文件

进入~/hadoop/下的hadoop-2.9.2/etc/hadoop/文件夹中

[root@master hadoop]# cd hadoop-2.9.2/etc/hadoop/

在这里插入图片描述


1、workers

[root@master hadoop]# vim workers

删除localhost 添加从节点的名称:

slave1
slave2

在这里插入图片描述


2、hadoop-env.sh

[root@master hadoop]# vim hadoop-env.sh

在# JAVA_HOME=/usr/java/testing hdfs dfs -ls下面添加如下内容:

export JAVA_HOME=~/java/jdk1.8.0_221
export HADOOP_HOME=~/hadoop/hadoop-2.9.2
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

在这里插入图片描述



以下配置在各个文件的

<configuration></configuration>

中添加


1、core-site.xml

[root@master hadoop]# vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>

在这里插入图片描述


2、hdfs-site.xml

[root@master hadoop]# vim hdfs-site.xml
<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property> 

在这里插入图片描述


3、yarn-site.xml

在命令行输入如下命令,并将返回地址复制,在配置yarn-site.xml时会用到:

[root@master hadoop]# hadoop classpath

返回地址如下:

/root/hadoop/hadoop-2.9.2/etc/hadoop:/root/hadoop/hadoop-2.9.2/share/hadoop/common/lib/*:/root/hadoop/hadoop-2.9.2/share/hadoop/common/*:/root/hadoop/hadoop-2.9.2/share/hadoop/hdfs:/root/hadoop/hadoop-2.9.2/share/hadoop/hdfs/lib/*:/root/hadoop/hadoop-2.9.2/share/hadoop/hdfs/*:/root/hadoop/hadoop-2.9.2/share/hadoop/yarn:/root/hadoop/hadoop-2.9.2/share/hadoop/yarn/lib/*:/root/hadoop/hadoop-2.9.2/share/hadoop/yarn/*:/root/hadoop/hadoop-2.9.2/share/hadoop/mapreduce/lib/*:/root/hadoop/hadoop-2.9.2/share/hadoop/mapreduce/*:/root/hadoop/hadoop-2.9.2/contrib/capacity-scheduler/*.jar

再次在命令行输入如下指令:

[root@master hadoop]# vim yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>输入刚才返回的Hadoop classpath路径</value>
</property>

在这里插入图片描述


4、mapred-site.xml

[root@master hadoop]# vim mapred-site.xml
<configuration>
 <property>
    <name>mapred.job.tracker</name>
    <value>master:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/root/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
</configuration>

在这里插入图片描述



八、克隆

将master分别克隆为slave1和slave2

克隆前请先关闭master哦。

此处仅演示slave1的克隆,slave2的克隆步骤相同。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



九、配置slave1和slave2

1.配置静态IP

(1)配置slave1的静态IP:

在slave1的右上角点击有线设置:

在这里插入图片描述

点击标注框内设置salve1的静态IP

在这里插入图片描述

将地址改为192.168.52.131 保存

在这里插入图片描述

打开slave1终端:

重启网络:[master@Master ~]$ systemctl restart network.service

(注意 这时候slave1的主机名称还是master)

在这里插入图片描述

(2)配置slave2的静态IP:

修改方式与slave1一致

将地址改为192.168.52.132

在这里插入图片描述

(3)检测slave1和slave2是否能

[master@Master ~]$ ping www.baidu.com

在这里插入图片描述

ping 192.168.52.130 检测master、slave1和slave2是否能相互两两ping通

在这里插入图片描述

2.修改主机名称

在这里插入图片描述

记得切换到root身份。

[root@Master ~]# vim /etc/hostname

更改前:

在这里插入图片描述

更改后:

在这里插入图片描述

[root@Master ~]# vim /etc/sysconfig/network

在这里插入图片描述

slave2同理。

修改后重启slave1和slave2

在这里插入图片描述

在这里插入图片描述



十、ssh免密登录

注意:Master、slave1和slave2都要在root下进行操作。



(1)master:



a.[root@master ~]# ssh-keygen -t rsa

一直按回车直到该命令结束。

在这里插入图片描述

分别在slave1和slave2上执行相同的操作



b.进入到/root/.ssh目录下

[root@master ~]# cd /root/.ssh

将 id_rsa.pub写入authorized_keys

[root@master .ssh]# cat id_rsa.pub >> authorized_keys

更改authorized_keys的权限

[root@master .ssh]# chmod 644 authorized_keys

在这里插入图片描述



c.将authorized_keys发送给slave1和slave2

[root@master .ssh]# scp authorized_keys slave1:/root/.ssh/

输入yes和slave1的密码即可

在这里插入图片描述

[root@master .ssh]# scp authorized_keys slave2:/root/.ssh/



(2)slave1:



a.进入到/root/.ssh路径下

[root@slave1 ~]# cd /root/.ssh/



b.更改authorized_keys的权限

[root@slave1 .ssh]# chmod 644 authorized_keys



c.将 id_rsa.pub追加到authorized_keys

[root@slave1 .ssh]# cat id_rsa.pub >> authorized_keys



d.将authorized_keys发送给slave2

[root@slave1 .ssh]# scp authorized_keys slave2:/root/.ssh/

在这里插入图片描述



(3)slave2:



a.进入到/root/.ssh路径下

[root@slave2 ~]# cd /root/.ssh/



b.更改authorized_keys的权限

[root@slave2 .ssh]# chmod 644 authorized_keys



c.将 id_rsa.pub追加到authorized_keys

[root@slave2 .ssh]# cat id_rsa.pub >> authorized_keys

在这里插入图片描述



d.将authorized_keys分别发送给master和slave1

[root@slave2 .ssh]# scp authorized_keys Master:/root/.ssh

[root@slave2 .ssh]# scp authorized_keys slave1:/root/.ssh

在这里插入图片描述

此处(见上图)遇见问题&解决问题:

CentOS系统配置.ssh遇到port 22-No route to host问题的解决方法参见博文:
https://blog.csdn.net/qq_43543789/article/details/108789081

在这里插入图片描述

(4)验证

在master上:

登录[root@master .ssh]# ssh slave1

在这里插入图片描述

登出[root@slave1 ~]# logout

在这里插入图片描述



十一、格式化节点

在master:

进入到~/hadoop/hadoop-2.9.2/路径下

[root@master ~]# cd ~/hadoop/hadoop-2.9.2/

在这里插入图片描述

格式化节点


[root@Master hadoop-2.9.2]# bin/hadoop namenode -format

踩雷经验:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

运行后不报错并在图片标注位置出现successfully即为格式化节点成功

注意:在没有出现错误的情况下,节点格式化一次即可



十二、启动hadoop集群

master:

[root@master ~]# cd ~/hadoop/hadoop-2.9.2/sbin

在这里插入图片描述

[root@master sbin]# ./start-all.sh
或者:(先后顺序启动)
./start-dfs.sh
./start-yarn.sh

在这里插入图片描述

踩雷经验:

启动hadoop集群之 This script is Deprecated.问题分析参见:
https://blog.csdn.net/qq_43543789/article/details/108800918
[root@master sbin]# jps

在这里插入图片描述

踩雷啦踩雷啦!

(这颗雷踩了几个小时。暴风哭泣~)

在这里插入图片描述

踩雷解决方法参见博文:

Linux下jps命令找不到的问题解决小记
https://blog.csdn.net/qq_43543789/article/details/108800354

在这里插入图片描述

踩雷解决方法参见博文:

Hadoop之SecondaryNamenode没有启动问题解决小记:
https://blog.csdn.net/qq_43543789/article/details/108799952

对于slave1、slave2:

[root@slave1 ~]# jps

在浏览器中:

192.168.52.130:50070

在这里插入图片描述

YARN的Web客户端端口号是8088,通过

http://192.168.52.130 :8088/

可以查看。

在这里插入图片描述



运行一个样例程序:

用自带的样例测试hadoop集群能不能正常跑任务:

使用命令

hadoop   jar   ~/hadoop/hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar  pi 10 10

用来求圆周率,pi是类名,第一个10表示Map次数,第二个10表示随机生成点的次数(与计算原理有关)

在这里插入图片描述

最后出现结果:

在这里插入图片描述

恭喜你,hadoop集群搭建完成。

不能正常跑出结果的筒子可能需要自己再找找错误,遇到问题 & 解决问题。

此处再来踩雷分享:

INFO hdfs.DataStreamer: Exception in createBlockOutputStream java.net.ConnectException: 拒绝连接报错解决小记
https://blog.csdn.net/qq_43543789/article/details/108794361



小结小结

终于完成啦!持续了好久的出错&解决问题。

2万+字数,这篇博文真的花费了很多时间和心血。

啊呜卒。

在这里插入图片描述

再展示一下运行中的各个虚拟机:

在这里插入图片描述

在这里插入图片描述


Ending!


更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:

1、人生在勤,不索何获。

2、CentOS系统配置.ssh遇到port 22-No route to host问题的解决方法参见博文:

https://blog.csdn.net/qq_43543789/article/details/108789081

3、INFO hdfs.DataStreamer: Exception in createBlockOutputStream java.net.ConnectException: 拒绝连接报错解决小记:

https://blog.csdn.net/qq_43543789/article/details/108794361

4、启动hadoop集群之 This script is Deprecated.问题分析:

https://blog.csdn.net/qq_43543789/article/details/108800918

5、Linux下jps命令找不到的问题解决小记:

https://blog.csdn.net/qq_43543789/article/details/108800354

6、Hadoop之SecondaryNamenode没有启动问题解决小记:

https://blog.csdn.net/qq_43543789/article/details/108799952



版权声明:本文为qq_43543789原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。