副队长大数据教程(6)--四节点分布式集群搭建

文章目录

  • [1. 任务背景](#1. 任务背景)
  • [2. 任务规划](#2. 任务规划)
  • [3. 整体思路](#3. 整体思路)
  • [4. 共性部分配置](#4. 共性部分配置)
    • [4.1 关闭防火墙、关闭SELinux](#4.1 关闭防火墙、关闭SELinux)
    • [4.2 配置hosts文件](#4.2 配置hosts文件)
    • [4.3 配置网络参数](#4.3 配置网络参数)
    • [4.4 安装配置JDK](#4.4 安装配置JDK)
    • [4.5 安装配置Hadoop](#4.5 安装配置Hadoop)
      • [4.5.1 下载Hadoop](#4.5.1 下载Hadoop)
      • [4.5.2 解压](#4.5.2 解压)
      • [4.5.3 配置环境变量](#4.5.3 配置环境变量)
      • [4.5.4 修改hadoop中的JDK配置](#4.5.4 修改hadoop中的JDK配置)
      • [4.5.5 修改hadoop的从节点配置](#4.5.5 修改hadoop的从节点配置)
      • [4.5.6 修改core-site.xml核心配置](#4.5.6 修改core-site.xml核心配置)
      • [4.5.7 修改hdfs-site.xml](#4.5.7 修改hdfs-site.xml)
      • [4.5.8 修改`mapred-site.xml`MapReduce配置](#4.5.8 修改mapred-site.xmlMapReduce配置)
      • [4.5.9 修改`yarn-site.xml`YARN配置](#4.5.9 修改yarn-site.xmlYARN配置)
  • [5. 克隆](#5. 克隆)
  • [6. 个性配置](#6. 个性配置)
    • [6.1 修改主机名](#6.1 修改主机名)
    • [6.2 修改IP](#6.2 修改IP)
  • [7. 配置免密登录](#7. 配置免密登录)
    • [7.1 生成秘钥文件](#7.1 生成秘钥文件)
    • [7.2 对其他节点生成秘钥](#7.2 对其他节点生成秘钥)
    • [7.3 将所有秘钥汇总到第一个节点](#7.3 将所有秘钥汇总到第一个节点)
    • [7.4 所有节点互相免密登录](#7.4 所有节点互相免密登录)
  • [8. 格式化](#8. 格式化)
  • [9. 启动集群](#9. 启动集群)

1. 任务背景

在之前的教程中,我们已经完成了Hadoop伪分布式搭建,对搭建过程有了一个比较具体的认知。

实际上在企业,还是需要搭建真正的多节点分布式集群,才能真正发挥Hadoop大数据处理能力。当然,具体需要多少个节点,还是由实际需求决定的。

本篇我们以四节点的集群搭建为例,展示完整操作过程。

2. 任务规划

参考上一篇的网络配置,我们规划四节点情况如下:

  • 4节点集群,节点名称为:hadoop01、hadoop02、hadoop03 、hadoop04
  • 集群所处网段:192.168.137.0
  • 子网掩码:255.255.255.0
  • 网关:192.168.137.2 (子网地址192.168.137.1,广播地址192.168.137.255这个根据计算网络原理定好的,不明白的可以去AI下计算机网络相关知识)
  • hadoop01的IP:192.168.137.101
  • hadoop02的IP:192.168.137.102
  • hadoop03的IP:192.168.137.103
  • hadoop04的IP:192.168.137.104

3. 整体思路

由于大数据环境搭建过程中,大部分配置信息是一样的,例如都要安装JDK、配置JDK环境变量、都要关闭防火墙、关闭SELinux等。

如果我们每台电脑逐一去配置这些共同项目,会浪费很多时间。

所以我们对共性项目,采取只配置hadoop01,其他节点直接克隆hadoop01的方式来实现。

而对于每个节点不同的配置信息,例如节点名称、IP等,我们在克隆之后再单独逐一配置。

下图展示了共性部分和个性部分:

4. 共性部分配置

首先我们使用VMWare安装第一个节点hadoop01,采用CentOS7操作系统,注意网络模式为NAT。然后按照以下步骤逐步操作即可:

4.1 关闭防火墙、关闭SELinux

执行如下命令,关闭防火墙并禁止开机启动。

shell 复制代码
systemctl stop firewalld
systemctl disable firewalld

修改配置文件,禁用SELinux:

shell 复制代码
vim /etc/sysconfig/selinux

4.2 配置hosts文件

执行vim /etc/hosts,根据规划,配置节点和IP映射如下:

shell 复制代码
192.168.137.101 hadoop01
192.168.137.102 hadoop02
192.168.137.103 hadoop03
192.168.137.104 hadoop04

4.3 配置网络参数

通过ip a 查看网卡名称为ens33。

编辑网卡对应网络配置:

shell 复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

内容修改如下:

shell 复制代码
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.137.101
NETMASK=255.255.255.0
GATEWAY=192.168.137.2
DNS1=8.8.8.8
DNS2=114.114.114.114

需要注意,这是节点1的网络配置,克隆后其他节点配置还需要修改IP部分。

使用systemctl restart network重启网卡,使网络配置生效。

然后使用ping www.baidu.com测试网络是否已通。如下图有返回数据包即可

4.4 安装配置JDK

第一,下载JDK,由于网络已通,咱们直接使用命令下载即可。注意JDK只要是1.8版本即可。

shell 复制代码
curl -O http://cdn.azul.com/zulu/bin/zulu8.84.0.15-ca-jdk8.0.442-linux_x64.tar.gz

第二,等待下载进度到100%:

第三,解压到/usr/local目录:

shell 复制代码
tar -zxvf zulu8.84.0.15-ca-jdk8.0.442-linux_x64.tar.gz -C /usr/local/

第四,进入/usr/local目录后修改文件名便于配置:

shell 复制代码
mv zulu8.84.0.15-ca-jdk8.0.442-linux_x64 jdk

第五,修改/etc/profile,设置环境变量

shell 复制代码
vim /etc/profile

修改如下:

shell 复制代码
export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH

第六,使环境变量生效

shell 复制代码
source /etc/profile

第七,验证JDK配置成功

shell 复制代码
java -version

4.5 安装配置Hadoop

4.5.1 下载Hadoop

大家注意下载3.x版本即可,尽量保持跟我相同版本。

shell 复制代码
curl -O http://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

如下图,等待进度100%:

4.5.2 解压

解压到指定目录:

shell 复制代码
tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local

然后进入/usr/local目录,重命名:

shell 复制代码
mv hadoop-3.3.6 hadoop

4.5.3 配置环境变量

编辑全局环境变量文件,为Hadoop配置环境变量,让系统任意位置都可以直接调用 hadoop 命令。

shell 复制代码
vim /etc/profile

在文件末尾增加:

shell 复制代码
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

注意Hadoop3.x还需要添加以下配置,否则可能报错:

shell 复制代码
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

保存退出,执行命令生效:

shell 复制代码
source /etc/profile

执行 hadoop version,如果能输出版本号,代表环境变量配置成功。

4.5.4 修改hadoop中的JDK配置

hadoop配置文件,都在/usr/local/hadoop/etc/hadoop下,所以先进入该目录:

shell 复制代码
cd /usr/local/hadoop/etc/hadoop

修改hadoop-3.3.6/etc/hadoop目录如下三个文件的JDK中JAVA_HOME的值:

找到 JAVA_HOME 配置项,修改成你的 JDK 实际安装目录:

shell 复制代码
JAVA_HOME=/usr/local/jdk

4.5.5 修改hadoop的从节点配置

打开/usr/local/hadoop/etc/hadoop目录的workers文件,修改内容如下:

shell 复制代码
hadoop02
hadoop03
hadoop04

这一步很关键,这是告诉hadoop,当前集群从节点数量及对应名称。

作用:启动 hdfs 时,脚本会自动在 workers 里面的机器启动 DataNode。

4.5.6 修改core-site.xml核心配置

注意,需要先创建一个临时目录:

shell 复制代码
mkdir /usr/local/hadoop/tmp
xml 复制代码
<configuration>
    <!-- 默认文件系统URI -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
</configuration>

注意,此时不需要理解太多,复制到文件中即可。

4.5.7 修改hdfs-site.xml

xml 复制代码
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop01:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.stream-buffer-size</name>
        <value>131072</value>
    </property>
</configuration>

4.5.8 修改mapred-site.xmlMapReduce配置

xml 复制代码
<configuration>
    <!-- 指定MapReduce作业运行在YARN上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 指定作业历史服务器的地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop01:10020</value>
    </property>
    <!-- 指定作业历史服务器的webapp地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop01:19888</value>
    </property>
</configuration>

4.5.9 修改yarn-site.xmlYARN配置

xml 复制代码
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
        <description>The hostname of the ResourceManager.</description>
    </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.ShuffleHandle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop01:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resouce-tracker.address</name>
        <value>hadoop01:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop01:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop01:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop01:8088</value>
    </property>
</configuration>

至此,共性部分配置完成。

5. 克隆

将刚配置完的hadoop01节点关机。

通过VMWare菜单中的虚拟机--管理--克隆,分别克隆出hadoop02/hadoop03/hadoop04三个节点。

如下图:

6. 个性配置

接下对hadopp02/hadoop03/hadoop04节点个性部分进行配置:

6.1 修改主机名

通过vim /etc/hostname将3个节点的主机名修改为hadopp02/hadoop03/hadoop04。

6.2 修改IP

shell 复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

将3个节点IP分别修改为

shell 复制代码
IPADDR=192.168.137.102
IPADDR=192.168.137.103
IPADDR=192.168.137.104

全部修改完成后,使用'reboot`对3个节点重启。

7. 配置免密登录

Hadoop集群之间交互,如果每次登录非常麻烦,所以先实现基于SSH的免密码登录。

7.1 生成秘钥文件

使用root用户登录第一个节点hadoop01,运行如下命令:

shell 复制代码
ssh-keygen -t rsa 

后续出现的提示直接按回车:

然后注意生成的目录,id_rsa存放私钥,id_rsa.pub存放公钥。

运行如下命令,在.ssh目录生成authorized_keys文件:

shell 复制代码
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

该文件即保存用户公钥。

7.2 对其他节点生成秘钥

第2步骤的操作,针对节点hadoop02/hadoop03/hadoop04重复执行一次。

shell 复制代码
ssh-keygen -t rsa 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

7.3 将所有秘钥汇总到第一个节点

通过ssh-copy-id命令,复制hadoop02/hadoop03/hadoop04节点的公钥到hadoop01节点,并验证是否成功:

登录hadoop02/hadoop03/hadoop04,执行如下命令:

shell 复制代码
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop01

命令执行如下图:

在hadoop02/hadoop03/hadoop04,执行如下命令,验证配置成功:

shell 复制代码
ssh hadoop01

如下图,已经通过ssh登录hadoop01节点成功:

现在所有节点都可以免密登录到hadoop01了。

7.4 所有节点互相免密登录

登录hadoop01节点,将authorized_keys复制到hadoop02/hadoop03/hadoop04,即可实现互相免密:

shell 复制代码
scp ~/.ssh/authorized_keys hadoop02:~/.ssh; 
scp ~/.ssh/authorized_keys hadoop03:~/.ssh; 
scp ~/.ssh/authorized_keys hadoop04:~/.ssh; 

此时在任意一个节点,输入ssh+另一个节点名,即可免密登录到第一个节点。

例如从hadoop02到hadoop04:

8. 格式化

Hadoop文件系统使用前,需要先将节点格式化。

登录各个节点,执行如下命令,格式化NameNode:

shell 复制代码
/usr/local/hadoop/./bin/hdfs namenode -format

出现如下提示,标识格式化成功:

9. 启动集群

通过start-all.sh启动集群,然后通过jps查看进程:

需要注意,按我们的设计,节点1需要具备NameNode+ResourceNanager+SecondaryNameNode,实验才算成功。

如果启动不全,可以查看日志:

相关推荐
科技看点说1 小时前
SAP B1如何支撑高科技与精密制造?项目、物料、委外与成本管理解析
大数据·人工智能
马六六i1 小时前
目前知名的分布式Ai数智共享商城哪家好
人工智能·分布式
大鹏说大话2 小时前
分布式事务怎么选型?2PC、TCC、SAGA、本地消息表一次讲清
分布式
益莱储中国2 小时前
益莱储任命 Vincent Kwa为亚太区副总裁兼总经理
大数据·人工智能
ha_lydms2 小时前
Json Functions(JSON 函数)
大数据·hadoop·spark·json·数据处理·dataworks·maxcompute
171320330计算机毕设编程3 小时前
计算机毕业设计 基于Hadoop的新能源汽车发展前景分析 LW PPT
java·大数据·hadoop·python·算法·随机森林·线性回归
Pocker_Spades_A3 小时前
论文精读(十五):自主机器人多智能体软件架构及伴随行为机制:从Structure-in-5看启元机器人控制软件架构设计方法论
大数据·机器人
data analyse 4563 小时前
服务端统计时区切换的日期归并
大数据·前端·数据库·人工智能·数据分析
ha_lydms3 小时前
Conditional Functions(条件函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute