Hadoop集群-完全分布式搭建(Centos7-超级详细)

前言

首先放上本次搭建所需的VMware虚拟机、Centos7镜像、jdk和Hadoop文件,如果链接失效,也可自行百度相关版本,无硬性需求。

以下是本次搭建环境:

VMware-15
CentOS-7-x86_64-DVD-1708.iso
hadoop-2.7.6.tar.gz
jdk-8u172-linux-x64.tar.gz

链接:https://pan.baidu.com/s/1Ig2vYOLKwBIEogrIjdSaXg,提取码:64ll。

1.完全分布式集群的节点规划

(1)网络规划

主机名IP地址节点类型
master192.168.10.10主节点
slave1192.168.10.11从节点1
slave2192.168.10.12从节点2

(2)服务规划

服务masterslave1slave2
NameNode
SecondaryNameNode
ResourceManager
JobHistoryServer
DataNode
NodeManager

(3)硬件规划

①建议配置

节点CPU内存硬盘
master双核四线程4G40G
slave1一核双线程2G40G
slave2一核双线程2G40G

②最低配置

节点CPU内存硬盘
master一核双线程2G40G
slave1一核一线程1G40G
slave2一核一线程1G40G

2.VMware虚拟机网络配置

1.虚拟机左上角编辑里的虚拟网络适配器里VMnet8的子网ip设置改成想要的IP,如:192.168.10.0。(前3位正常写,最后1位为0,最后一位设置成几无所谓,因为后面每个虚拟机还要分别固定IP)
在这里插入图片描述

2.验证NAT设置里面的网关IP是不是192.168.10.2。
在这里插入图片描述

3.桌面右下角VMware8属性里的IPV4,IP地址改成192.168.10.1,子网掩码255.255.255.0。
在这里插入图片描述
4.虚拟机网络适配器选择NAT模式。

3.固定三台虚拟机ip

首先进入你要配置成matser节点的虚拟机:

然后输入cd /etc/sysconfig/network-scripts然后输入ls

再输入vi-虚拟网卡名,如下(vi ifcfg-ens33)
在这里插入图片描述

进入到vi编辑界面后,做如下修改:

把BOOTPROTO那行改成BOOTPROTO=static,

ONBOOT那行改成ONBOOT=yes,在最下面加上

IPADDR=192.168.10.10(设置想要固定的ip)

NETMASK=255.255.255.0

GATEWAY=192.168.10.2(网络编辑器-NAT模式)

DNS1=114.114.114.114

如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48iYajzw-1663052470431)(D:\E\Tpora笔记\hadoop笔记\Hadoop集群-完全分布式搭建(Centos7-超级详细)].assets\image-20220913105009553.png)

最后输入service network restart重启一下网络就好了(如果报错,reboot,重启虚拟机)

成功后,分别进入两台从节点虚拟机,依次将两台从节点虚拟机的ip分别固定为192.168.10.11(slave1),192.168.10.12(slave2)。

不要忘记两台从节点ip固定完成以后也要输入service network restart重启一下网络。

4.改主机名和配置hosts

三台虚拟机分别配置:

在master节点命令行输入:hostnamectl set-hostname master

在slave1节点命令行输入:hostnamectl set-hostname slave1

在slave2节点命令行输入:hostnamectl set-hostname slave2

查看主机名,命令行输入:hostname

主节点配置主机和IP映射:

在主节点输入vi /etc/hosts命令,在vi编辑窗口输入如下内容:

192.168.10.10	master
192.168.10.11	slave1
192.168.10.12	slave2

保存之后,通过如下命令将主节点的hosts分别拷贝到其他两个子节点

在master节点命令行分别完成以下操作:

命令行输入:scp /etc/hosts root@192.168.10.11:/etc

命令行输入:scp /etc/hosts root@192.168.10.12:/etc

三台虚拟机分别reboot重启。

5.关闭防火墙

在三个节点分别输入以下命令

1、停止firewall
命令行输入:systemctl stop firewalld.service

2、禁止firewall开机启动
命令行输入:systemctl disable firewalld.service

3、关闭selinux

命令行输入:sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config命令,然后用grep ‘SELINUX=disabled’ /etc/selinux/config命令查看以下状态。

如下图所示,即关闭成功。
在这里插入图片描述
关闭selinux后,最好重启系统。

6.配置节点时间同步

此步骤在日常学习时可以省略,但是存在极少数几率,当各个节点时间不同步时,会造成无法完成集群搭建的情况。建议在时间充裕的情况下,完成此步骤,当然,这并不会耗费太多时间.

在三台节点分别完成以下操作:

1、安装ntp服务:

命令行输入:yum install ntp -y命令

2、与阿里云时间同步:

命令行输入:ntpdate -u ntp1.aliyun.com

命令行输入:sudo ntpdate -u ntp1.aliyun.com

3、查看时间:

命令行输入:date

当三台节点的时间一样时,即完成三台节点的时间同步。

7.配置ssh免密登录

(1)生成公钥密钥对

在三台节点上分别执行以下操作:

命令行输入:ssh-keygen -t rsa

一直按回车直到生成结束。

执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub,其中前者为私钥,后者为公钥。

(2)将子节点的公钥拷贝到主节点并添加进authorized_keys

主节点上执行:

命令行输入:cd .ssh

命令行输入:cp id_rsa.pub authorized_keys

分别在两个子节点上执行以下操作:

命令行输入:scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa_slave1.pub

命令行输入:scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa_slave2.pub

(3)在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去

主节点上执行:

命令行输入:cat id_rsa_slave1.pub>> authorized_keys

命令行输入:cat id_rsa_slave2.pub>> authorized_keys

将主节点的authorized_keys文件分别替换子节点的authorized_keys文件

(4)在主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置

命令行输入:scp authorized_keys root@slave1:/root/.ssh/

命令行输入:scp authorized_keys root@slave2:/root/.ssh/

(5)最后测试是否配置成功

在master上分别执行

命令行输入:ssh slave1

命令行输入:ssh slave2
能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。

这里的配置方式可以有多种操作步骤,最终目的是每个节点上的/root/.ssh/authorized_keys文件中都包含所有的节点生成的公钥内容。

8、安装JDK(三台虚拟机都要安装)

先在opt目录下创建结构清晰的文件夹,以便于管理。

通过以下命令,在root用户下创建wdp、soft文件夹。

命令行输入:cd /opt

命令行输入:mkdir wdp

命令行输入:mkdir soft

(1)导入jdk压缩文件

用Xftp工具将jdk-8u172-linux-x64.tar.gz导入到opt目录下面的soft文件夹下面

验证是否导入成功:

命令行输入:ls /opt/soft

(2)解压jdk到/opt/wdp目录下

命令行输入:tar -zxvf jdk-8u172-linux-x64.tar.gz -C /opt/wdp/

(3)配置jdk环境变量

打开/etc/profile文件:vi /etc/profile

在profie文件末尾添加jdk路径:

export JAVA_HOME=/opt/wdp/jdk1.8.0_172
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
export PATH=${JAVA_HOME}/bin:$PATH

让修改后的文件生效:

命令行输入:source /etc/profile

验证jdk安装成功:

命令行输入:java -version

(4)将主节点的jdk分发到子节点

主节点上执行以下操作:

命令行输入:scp -r /opt/wdp/jdk1.8.0_172 root@slave1:/opt/wdp

命令行输入:scp -r /opt/wdp/jdk1.8.0_172 root@slave2:/opt/wdp/jdk1.8.0_172

命令行输入:scp -r /opt/wdp/jdk1.8.0_172/ root@slave2:/opt/wdp

拷贝profile到子节点,主节点上执行以下操作:

命令行输入:scp /etc/profile root@slave1:/etc/

命令行输入:scp /etc/profile root@slave2:/etc/

在两个子节点上分别使新的profile生效,在两台子节点上执行以下操作:

命令行输入:source /etc/profile

9、安装Hadoop(三台虚拟机都要安装)

(1)导入Hadoop压缩文件

用Xftp工具将hadoop-2.7.6.tar.gz导入到opt目录下面的soft文件夹下面

验证是否导入成功:

命令行输入:ls /opt/soft

(2)解压Hadoop到/opt/wdp目录下

进入到Hadoop安装包路径下:

命令行输入:cd /opt/soft/

解压安装文件到/opt/wdp下面:

命令行输入:tar -zxvf hadoop-2.7.6.tar.gz -C /opt/wdp/

查看是否解压成功:

命令行输入:ls /opt/wdp/

(3)配置Hadoop环境变量

打开/etc/profile文件:

命令行输入:vi /etc/profile

在profie文件末尾添加jdk路径:

export HADOOP_HOME=/opt/wdp/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

保存后退出:wq

让修改后的文件生效:

命令行输入:source /etc/profile

验证hadoop安装成功:

命令行输入:hadoop

(4)配置Hadoop配置文件

需要配置的文件的位置为/opt/wdp/hadoop-2.7.6/etc/hadoop,需要修改的有以下几个文件:

hadoop-env.sh

yarn-env.sh

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

slaves

其中hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量

进入配置文件所在目录

命令行输入:cd /opt/wdp/hadoop-2.7.6/etc/hadoop

①配置hadoop-env.sh

命令行输入:vi hadoop-env.sh

添加jdk路径:export JAVA_HOME=/opt/wdp/jdk1.8.0_172

在这里插入图片描述

②配置yarn-env.sh

命令行输入:vi yarn-env.sh

添加jdk路径:export JAVA_HOME=/opt/wdp/jdk1.8.0_172

在这里插入图片描述

③配置core-site.xml

命令行输入:vi core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/temp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>

④配置hdfs-site.xml

命令行输入:vi hdfs-site.xml

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/usr/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/usr/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.web.ugi</name>
                <value>supergroup</value>
        </property>
</configuration>

⑤配置mapred-site.xml

将mapred-site.xml.template重命名为mapred-site .xml的文件

命令行输入:mv mapred-site.xml.template mapred-site.xml

命令行输入:vi mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
				<final>true</final>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
        </property>
</configuration>

⑥配置yarn-site.xml

命令行输入:vi yarn-site.xml

<configuration>
        <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.resourcemanager.address</name>
                <value>master:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>master:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>master:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>master:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>master:8088</value>
        </property>
        <property>  
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
        <property>  
                <name>yarn.nodemanager.remote-app-log-dir</name>
                <value>/home/hadoop/logs</value>
        </property>
</configuration>

命令行输入:mkdir -p /home/hadoop/logs

命令行输入:mkdir -p /usr/hadoop/logs

⑦配置slaves

命令行输入:vi slaves

删除里面的原有内容,将配置了映射文件的子节点的主机名写入

slave1
slave2

在这里插入图片描述

(5)将主节点的Hadoop分发到子节点

主节点上执行:
命令行输入:scp -r /opt/wdp/hadoop-2.7.6 root@slave1:/opt/wdp

命令行输入:scp -r /opt/wdp/hadoop-2.7.6 root@slave2:/opt/wdp

拷贝profile到子节点,主节点上执行:

命令行输入:scp /etc/profile root@slave1:/etc/

命令行输入:scp /etc/profile root@slave2:/etc/

在两个子节点上分别使新的profile生效:

命令行输入:source /etc/profile

(6)格式化namenode

格式化主节点的namenode,主节点上进入hadoop目录:

命令行输入:cd /opt/wdp/hadoop-2.7.6

然后执行格式化命令:

命令行输入:bin/hdfs namenode -format

提示中出现:successfully formatted表示格式化成功。

(7)启动与关闭hadoop

主节点上在hadoop目录下执行以下操作:

命令行输入:cd /opt/wdp/hadoop-2.7.6

启动命令:

命令行输入:start-all.sh

命令行输入:mr-jobhistory-daemon.sh start historyserver

关闭命令:

命令行输入:stop-all.sh

命令行输入:mr-jobhistory-daemon.sh stop historyserver

在启动hadoop以后,在主节点上输入jps命令:

显示如下进程:

NameNode
SecondaryNameNode
Jps
ResourceManager
JobHistoryServer

在这里插入图片描述
每个子节点上的jps进程如下:

Jps
DataNode
NodeManager

在这里插入图片描述

这样则表示hadoop完全分布式集群搭建成功。

10、Web访问

在浏览器地址栏输入http://192.168.10.10:50070/访问,如下图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IqZuh15z-1663052470434)(D:\E\Tpora笔记\hadoop笔记\Hadoop集群-完全分布式搭建(Centos7-超级详细)].assets\image-20220913142657913.png)
如果这篇文章对你有所帮助,记得点赞+收藏哦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫不归客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值