创建并配置一个伪分布式Hadoop3.x版本集群(三)

前言

为了保证应用高可用性,一般我们都会搭建一个应用的集群环境,这样即使其中一个应用出现故障,集群中的其他应用仍可继续对外提供访问。本章将介绍如何安装和配置一个伪分布式集群。

以下是本章主要内容:

  • hadoop环境准备
  • 搭建一个简单的伪分布式Hadoop集群
  • 操作hadoop集群
  • 使用hadoop运行测试程序

1. Hadoop 集群搭建模式

官方给我们提供了三种安装Hadoop集群的方式如下图所示:
在这里插入图片描述

  • 单机模式(Standalone )

hadoop默认情况是以非分布式单机方式运行的,所有的Hadoop服务都是运行在一个JVM虚拟机上,这种模式下Hadoop采用操作系统本地文件而不是HDFS(Hadoop File System)进行数据的存储。此种模式适合开发人员进行代码测试工作。

  • 伪分布式(Pseudo-Distributed )

此模式可以模拟真实的多节点集群,可以让Hadoop守护进程(DataNode、NameNode和ResourceManager)运行在单一服务器上,但这也意味着这种单节点的Hadoop集群无法保证高可用性与数据的安全性,生产环境不推荐使用。

  • 全分布式(Fully-Distributed)

Hadoop守护进程(DataNode、NameNode和ResourceManager)在不同的机器上运行着,这种模式可以保证Hadoop集群的高可用性、数据安全性。常应用在生产环境中。

2. 伪分布式集群搭建环境准备

在实际安装集群前,必须满足如下要求,才能够成功在Linux环境下安装软件。

2.1 SSH免密登录设置

Hadoop应用提供了很多脚本用来管理和维护Hadoop守护进程,这其中就用了SSH登录相关命令,所以这里需要配置一个免密登录localhost的配置,具体步骤如下:

  • 生成SSH密钥
## 生成密钥命令:ssh-keygen -t rsa
[root@hadoop104 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:81ORH1ajaBDTFlQPo+yWLWTVXzeVe9QWooqqYbSbRr4 root@hadoop104
The key's randomart image is:
+---[RSA 2048]----+
|         ++oo*.oB|
|          +o=.*=B|
|          .Oo.o+*|
|        . * o+ oo|
|   .   .S. =... .|
|  ... .  o...    |
|  o+ .    o      |
|  .o=      .     |
|  .E.            |
+----[SHA256]-----+
  • 拷贝公钥
## 将公钥拷贝到~/.ssh/authorized_keys 下
[root@hadoop104 ~]# ssh-copy-id root@localhost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:YjPIJdatopqmPsZtdK/5JyTSgahk7tdP+QIuLbuw81U.
ECDSA key fingerprint is MD5:02:6f:99:e3:62:3b:e1:28:d8:05:34:70:dc:d3:99:89.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@localhost's password:
## 输入用户名与密码
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@localhost'"
and check to make sure that only the key(s) you wanted were added.
  • 使用ssh免密登录本地
## 免密登录
[root@hadoop104 ~]# ssh root@localhost
Last login: Wed Sep 28 12:08:58 2022 from 192.168.10.1
## 退出当前连接
[root@hadoop104 ~]# exit
logout
Connection to localhost closed.
[root@hadoop104 ~]#

2.2 Java 环境准备

hadoop 3.x版本目前要求最低的JDK版本为1.8版本,所以这里我们在服务器配置一下JDK环境即可:
在这里插入图片描述
这里可以直接访 oracle 官网 直接下载JDK8,也可以使用我提供的百度云网址如下:

链接:https://pan.baidu.com/s/10e19hoiDjW61rHrhh-KtBQ?pwd=zyk5
提取码:zyk5

然后将JDK安装包上传到Linux服务器上,解压并配置Java环境变量。具体操作步骤如下:

  • 创建目录
# 1. 创建安装包保存路径与解压安装包路径
[root@hadoop104 ~]# mkdir -p /soft/{service,packages}
  • 上传安装包在这里插入图片描述
    在这里插入图片描述- 解压安装包
# 解压到指定目录
[root@hadoop104 packages]# tar -zxvf jdk-8u341-linux-x64.tar.gz -C /soft/service/
  • 配置环境变量
[root@hadoop104 ~]# vim /etc/profile.d/java.sh

编辑环境脚本内容如下:
在这里插入图片描述

## 刷新环境变量
[root@hadoop104 ~]# source /etc/profile
## 验证JDK环境
[root@hadoop104 ~]# java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
[root@hadoop104 ~]#

2.3 Hadoop环境准备

## 设置Hadoop环境变量
[hdfs@hadoop104 hadoop]$ vim /etc/profile.d/hadoop.sh

在这里插入图片描述

2.4 其他环境准备

  • 安装epel-release
yum install -y epel-release
  • 安装vim
yum install -y vim*
  • 安装 net-tools
yum install -y net-tools
  • 同步时间
yum install -y ntpdate
ntpdate ntp4.aliyun.com
  • 停用防火墙
systemctl stop firewalld
## 查看防火墙状态
firewall-cmd --state

3. Hadoop初始配置

首先我们需要从官网上下载Hadoop安装包,这里选用3.1.4版本进行安装。

cd /soft
 wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz

解压安装包:

## 将hadoop3.1.4安装包解压到/soft/service 目录下
[root@hadoop104 packages]# tar -zxvf hadoop-3.1.4.tar.gz -C /soft/service/

配置Hadoop环境变量:

export HADOOP_HOME=/soft/service/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

验证hadoop是否安装成功:

## 查看hadoop安装版本
[root@hadoop104 hadoop-3.1.4]# hadoop version

输出如下结果则Hadoop安装成功
在这里插入图片描述

3.1 创建Hadoop用户

hadoop每个关键的守护进程都需要造单独的用户下运行,所以这里创建三个用户用来对应不同的hadoop守护进程:

用户说明
yarn用来管理ResourceManager服务
mapred用来管理MapReduce服务
hdfs用来管理HDFS文件系统
## 创建hadoop组
[root@hadoop104 packages]# groupadd hadoop
## 创建yarn用户
[root@hadoop104 packages]# useradd -g hadoop yarn
## 创建hdfs用户
[root@hadoop104 packages]# useradd -g hadoop hdfs
## 创建mapred用户
[root@hadoop104 packages]# useradd -g hadoop mapred

3.2 创建目录

在Hadoop中我们需要明确 NameNodeSecondaryNameNodeDataNode 的数据目录以及日志目录,下面创建以下目录

  • 创建NameNode数据目录
mkdir -p /soft/data/hadoop/hdfs/nn
  • 创建SecondaryNameNode数据目录
mkdir -p /soft/data/hadoop/hdfs/snn
  • 创建DataNode数据目录
 mkdir -p /soft/data/hadoop/hdfs/dn
  • 授权目录给hdfs用户
chown -R  hdfs:hadoop /soft/data/hadoop/
  • 创建yarn用户日志目录
 mkdir -p /soft/log/hadoop/logs
  • 授权目录给yarn用户
chown -R  yarn:hadoop /soft/log/hadoop/

3.3 认识Hadoop相关配置文件

Hadoop使用了多个配置文件,且每一个都会影响集群操作的不同方面,如HDFS操作、Yarn操作、MapReduce操作,每一个操作都有与之对应的配置文件,这些配置文件基本上都是XML格式的,Hadoop的配置文件有很多参数,如果没有自定义配置参数的值,大部分都会使用默认值,总的来说Hadoop中一共有以下类型的配置文件:

  • 环境变量文件
    在这里插入图片描述
    Hadoop为启动和停止Hadoop应用提供了以上三个环境变量脚本,其中 hadoop-env.sh用来设置hadoop运行环境相关的配置mapred-env.sh用来指定mapReduce操作环境相关配置、yarn-env.sh是用来指定yarn使用的环境变量的值。

  • 默认配置文件
    在这里插入图片描述
    默认配置文件如上,顾名思义当我们没有在自定义配置文件中配置参数对应的值,则默认以xx.default.xml配置的值为准,否则以自定义xx.site的值为准,下面介绍每个配置文件的作用:

    • core-default.xml:hadoop核心配置文件,可以在core-site.xml中设置变量来覆盖此文件的默认配置值。
    • hdfs-default.xml :HDFS相关服务的默认配置文件,可以设置hdfs-site.xml覆盖此文件中的默认配置值。
    • yarn-default.xml:YARN默认配置文件,可以设置yarn-site.xml覆盖此文件中默认配置值。
    • mapred-default.xml:MapReduce默认配置文件,可以设置mapred-site.xml覆盖此文件中默认配置值。
  • site专用配置文件
    在这里插入图片描述
    site自定义配置文件是我们在实际中需要经常打交道的配置文件,此类型文件设置的值会默认覆盖xx-default.xml中配置的默认值。

3.3.1 配置文件的优先级

主节点上的 hdfs-site.xmlyarn-site.xmlhdfs-default.xmlyarn-default.xml 并不是唯一可以配置HDFSYARN的方法,假设已经在hdfs-site.xml文件中将:dfs.replication参数设置值为3,即设置文件副本个数为6。如果在客户端的代码中配置了此参数的值为6。实际上文件上传后文件副本个数为3,在Hadoop中配置文件参数的优先级从大到小如下:
在这里插入图片描述
如果有时候并不希望客户端修改配置的参数值,即让上图中优先级为4服务器自定义配置文件参数值优先级最高,例如我们设置文件副本个数为3,客户端不可修改。只需要在hdfs-site.xml中这样配置:

  <property>
    <name>fs.replication</name>
    <value>3</value>
    <final>true</final>
  </property>

如果在生产开发中,遇到了有些参数客户端不可修改的需求时,这个时候就可以将参数标记为final即可。

3.3.2 配置Hadoop守护进程环境变量

hadoop中默认为我们设置了 hadoop-env.shmapred-env.shyarn-env.sh,可以使用如下参数配置每个hadoop守护程序:

参数说明
YARN_RESOURCEMANAGER_OPS设置ResourceManager JVM变量值
YARN_NODEMANAGER_OPS设置NodeManagerJVM变量值
HADOOP_NAMENODE_OPS设置NameNode JVM变量值
HADOOP_DATANODE_OPS设置DataNode JVM变量值
HADOOP_SECONDARYNAMENODE_OPS设置SecondaryNameNodeJVM变量值
例如设置上述每一个守护进程最大堆内存大小为2g:

YARN_RESOURCEMANAGER_OPS = Xmx2g
YARN_NODEMANAGER_OPS = Xm2g
HADOOP_NAMENODE_OPS = Xmx2g
HADOOP_DATANODE_OPS = Xmx2g
HADOOP_SECONDARYNAMENODE_OPS = Xmx2

3.3.3 配置Hadoop核心属性(core-site.xml)

  • fs.defaultFS

设置文件系统的名称以及NameNode所在主机和端口信息:

<property>
   <name>fs.defaultFS</name>
   <value>hdfs://hadoop104:8020</value>
</property>
  • hadoop.http.staticuser.user

设置操作hdfs为用户为hdfs:

<property>
  <name>hadoop.http.staticuser.user</name>
  <value>hdfs</value>
</property>
  • hadoop.tmp.dir

设置hadoop本地数据存储目录:

<property>
   <name>hadoop.tmp.dir</name>
   <value>/soft/data/hadoop/tmpDir</value>
</property>
  • fs.trash.interval

设置Hadoop文件存储在垃圾箱中的时间,默认值为0,即永久删除被删除的所有文件库,这里我们默认设置1440分钟(1天)

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>

3.3.4 配置Mapreduce(mapred-site.xml)

  • mapreduce.framework.name

设置hadoop使用YARN作为执行MapReduce的框架。

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
 </property>
  • yarn.app.mapreduce.am.env

指定mapruce APP MASTER 环境变量

  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  • mapreduce.map.env

指定mapreduce Reuce Task 环境变量

  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  • mapreduce.reduce.env

指定mapreduce Reuce Task 环境变量

  <property>
    <name>mapreduce.reduce.env</name>
     <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>

3.3.5 配置Yarn(yarn-site.xml)

  • yarn.nodemanager.aux-services

此属性可以让NodeManager指定MapReduce容器从map任务到reduce任务所需要执行的shuffle操作,只有设置了这个值才可以运行MapReduce任务。

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  • yarn.nodemanager.aux-services.mapreduce_shuffle.class

设置YARN使用这个设置值对应的类执行shuffle操作

  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  • yarn.nodemanager.resource.memory-mb

设置YARN在每一个节点消耗的总内存值单位MB

   <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>
  • yarn.scheduler.minimum-allocation-mb

设置每一个启动的容器节点最小内存单位MB

   <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
  </property>
  • yarn.scheduler.maximum-allocation-mb

设置每一个启动容器最大的内存单位MB

  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>1024</value>
  </property>
  • yarn.nodemanager.vmem-pmem-ratio

设置容器虚拟内存与真实物理内存直接比率

 <property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2</value>
  </property>

3.3.6 配置HDFS(hdfs-site.xml)

  • dfs.namenode.secondary.http-address

设置SecondaryNameNode运行主机和端口

  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop104:9868</value>
  </property>
  • dfs.replication

此参数配置默认的文件块数量为3,但我们这里搭建伪分布式所以需要设置为1

  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  • dfs.datanode.data.dir

设置DataNode数据快本地存储目录

   <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/soft/data/hadoop/hdfs/dn</value>
  </property>
  • dfs.namenode.name.dir

设置NameNode核心文件如fsimage如edit日志文件存储位置,只有NameNode服务可以读取和写入这些文件。

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/soft/data/hadoop/hdfs/nn</value>
  </property>
  • dfs.namenode.checkpoint.dir

指定SecondaryNameNode存储元数据文件位置

  <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file:/soft/data/hadoop/hdfs/snn</value>
  </property>

4. 操作集群

上面的配置文件配置好了,接下来就是来启动集群了,不过在正常启动集群前还需要进一步操作

4.1 格式化集群

使用hdfs用户执行NameNode格式化,需要注意的是NameNode的格式化只需要做一次就够了。

[hdfs@hadoop104 hadoop]$ hdfs namenode -format

执行完后如果有下图 successfully format 字样,则表明格式化成功在这里插入图片描述
可以看到在 /soft/data/hadoop/hdfs/nn 目录下已经有格式化好的current文件夹如下所示:
在这里插入图片描述

4.2 启动HDFS与YARN集群

  • 启动NameNode
 hdfs --daemon start namenode
  • 启动DataNode
hdfs --daemon start secondarynamenode
  • 启动SecondaryNameNode
hdfs --daemon start secondarynamenode
  • 启动ResourceManager
yarn --daemon start resourcemanager
  • 启动NodeManager
 yarn --daemon start nodemanager

查看进程:
在这里插入图片描述
访问HDFS管理端地址:http://192.168.10.128:9870/管理端首页如下:
在这里插入图片描述
访问 Yarn管理端地址:http://192.168.10.128:8088/cluster

在这里插入图片描述

4.3 关闭HDFS与YARN集群

  • 启动NameNode
 hdfs --daemon stop namenode
  • 启动DataNode
hdfs --daemon stop secondarynamenode
  • 启动SecondaryNameNode
hdfs --daemon stop secondarynamenode
  • 启动ResourceManager
yarn --daemon stop resourcemanager
  • 启动NodeManager
 yarn --daemon stop nodemanager

5. 伪分布式集群虚拟机环境

链接:https://pan.baidu.com/s/1MdUQp96yiR9EnFknhGekKQ?pwd=id4n
提取码:id4n

总结

本文中我们使用一台机器完成了Hadoop的伪分布式集群部署,在实际的生成活动中,此种模式只能用于开发人员进行测试使用,下一章将介绍如何搭建一个Hadoop的完全分布式集群,敬请期待。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置Hadoop分布式集群,可以按照以下步骤进行操作: 1. 安装和配置Java:确保机器上已经安装了Java Development Kit (JDK)。可以通过运行`java -version`命令来验证Java是否已安装。 2. 下载Hadoop:从Apache Hadoop官方网站(https://hadoop.apache.org/)下载所需版本Hadoop。选择适合你的操作系统和需求的版本。 3. 解压缩Hadoop:将下载的Hadoop压缩包解压到一个适当的位置,例如`/opt/hadoop`。 4. 配置环境变量:编辑`~/.bashrc`文件并添加以下行来设置Hadoop的环境变量: ``` export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 保存文件后运行`source ~/.bashrc`使修改生效。 5. 配置Hadoop:以下是一些关键配置文件的说明: - `core-site.xml`:配置Hadoop核心参数,如文件系统、端口和日志路径等。 - `hdfs-site.xml`:配置HDFS分布式文件系统)相关参数,如副本数量、数据块大小和数据目录等。 - `mapred-site.xml`:配置MapReduce相关参数,如任务跟踪器和任务分配器等。 - `yarn-site.xml`:配置YARN(资源管理器)相关参数,如资源分配、应用程序调度和容器管理等。 根据你的需求和集群规模,修改以上配置文件中的属性值。 6. 配置主机名映射:在每台机器的`/etc/hosts`文件中,将本地主机名(如`localhost`)映射到本地IP地址(如`127.0.0.1`)。这样可以确保每台机器能够通过主机名相互访问。 7. 配置SSH免密登录:为了在集群中进行节点间的通信,需要配置SSH免密登录。使用`ssh-keygen`生成密钥对,并将公钥分发到所有节点的`~/.ssh/authorized_keys`文件中。 8. 格式化HDFS:在单个节点上运行以下命令来格式化HDFS: ``` hdfs namenode -format ``` 9. 启动Hadoop分布式集群:运行以下命令来启动Hadoop分布式集群: ``` start-dfs.sh start-yarn.sh ``` 10. 验证集群:使用Hadoop自带的命令行工具(如`hdfs dfs -ls /`)来验证集群是否正常工作。你还可以通过Web界面(如http://localhost:50070)来查看Hadoop集群的状态和信息。 这些步骤将帮助你配置一个Hadoop分布式集群,让你能够在单个机器上模拟分布式环境进行开发和测试。根据需要,你可能还需要进行其他设置和调整。可以参考Hadoop官方文档和相关资源,以获取更详细的配置指南和实践建议。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值