当前位置: 首页 > news >正文

Hadoop最新版本hadoop-3.4.1搭建伪分布式集群以及相关报错解决

一:概述

        Hadoop 是一个开源的分布式计算框架,广泛应用于大数据处理。伪分布式集群是 Hadoop 的一种部署模式,它可以在单台机器上模拟集群环境,适合初学者进行学习和实验。本文将详细介绍如何在单台机器上搭建 Hadoop 3.4.1 的伪分布式集群。

二:具体说明

        2.1 环境准备

需要安装好虚拟机CentOS8,并且已经配置了SSH远程连接,以便于更好的操作。

我演示的是在CentOS8中配置伪分布式集群搭建。

        首先,我们需要在虚拟机中配置java环境,详细过程如下所示:
 

  首先将jdk的安装包,通过文件传输工具传输到/usr/local/soft/jdk中,让后将其解压的jdk8目录中

接下来在/etc/profile中配置环境变量

vim /etc/profile

在文件中添加如下的内容

JAVA_HOME路径为jdk的解压根目录。

配置完成之后,保存。

为了能够使这个配置生效,需要使用以下的命令来重新加载这个配置文件。

source /etc/profile

接着查看是否配置成功,这里和Win中查看方法相同

java -version

如果出现以下图片的内容,则证明配置成功。

如果没有,说明配置文件中配置的路径有误或者未执行重新加载配置文件的命令。

 2.2 搭建Hadoop伪分布式集群

        将hadoop的安装包上传到虚拟机的/opt目录中

   配置免密登录

        修改主机名

vim /etc/hostname
# 或者使用以下的命令
hostnamectl set-hostname master

将默认的主机名改为master,保存并退出

接下来修改hosts文件

vim /etc/hosts

 接着重启虚拟机,并生成公钥和私钥对。

cd .ssh
ssh-keygen -t rsa

        接着使用下面命令进行免密登录配置

ssh-copy-id master

        利用以下的命令检查免密登录是否成功。

ssh master

        如果出现上图中的内容,则说明配置免密登录成功了。

配置HDFS

        将上传到/usr/local/soft/hadoop/hadoop3.4.1中的压缩包解压到/usr/local/soft/hadoop/hadoop3.4.1/中

通过以下的命令配置hadoop-env.sh文件

cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/etc/hadoop
cd /etc/hadoop

         接着去编辑这个hadoop目录中的hadoop-env.sh文件,在里面添加JDK的家目录

        通过以下的步骤去进行。

如果你不知道这个已经配置好的jdk家目录中,可以使用以下的命令打印出这个路径

echo $JAVA_HOME
vim hadoop-env.sh

        

 然后保存并且退出。

        接下来配置core-site.xml
vim core-site.xml
<configuration>
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://master:8020</value>
 </property>
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/data</value>
 </property>
</configuration>

        再接下来配置hdfs-site.xml

vim hdfs-site.xml
<configuration>
 <property>
     <name>dfs.replication</name>
     <value>1</value>
 </property>
</configuration
        接下来,格式化HDFS

hdfs namenode -format

        2.3 HDFS的启动和停止

        启动之前,需要做一些准备

   进入到sbin目录中,修改四个文件

对于start-dfs.sh和stop-dfs.sh文件,尾部添加如下的参数
cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/sbin
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
[root@master sbin]# vim start-dfs.sh
[root@master sbin]# vim stop-dfs.sh
[root@master sbin]# vim start-yarn.sh
[root@master sbin]# vim stop-yarn.sh
     
对于start-yarn.sh和stop-yarn.sh文件,尾部添加下列参数:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1
# 启动命令
sbin/start-dfs.sh
# 关闭命令
sbin/stop-dfs.sh

        

        在 Hadoop 的配置文件中定义运行服务的用户。编辑   

$HADOOP_HOME/etc/hadoop/hadoop-env.sh   文件,添加以下内容:bashexport HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"


        注意:虽然这里使用了   root   用户,但在实际生产环境中,建议使用非   root   用户来运行 Hadoop 服务,以增强安全性

    

        我们发现,现在执行,刚才那个错误已经没有了,但是又出现了一个错误。这个要去将/etc/hosts中以下内容注释掉

vim /etc/hosts

        接着杀死,已经启动的进程,然后重新启动,看是否还有这个错误/警告。

        重现启动,发现已经没有了警告。

        

        

        2.4 YARN的相关配置 
        (1)配置yarn-site.xml

vim yarn-site.xml
<configuration>
 <property>
    <name>yarn.resourcemanager.hostsname</name>
    <value>master</value>
 </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
</configuration>


        (2)配置mapred-site.xml

        把mapred-site.xml.template修改成mapred-site.xml,如果不是则不需要修改

# cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>
</configuration>

        启动和停止YARN

启动命令:

start-dfs.sh

 暂停命令:

stop-dfs.sh

同理dfs的启动,若不能成功启动,则需退回/opt/hadoop目录下使用sbin/start-yarn.sh或sbin/stop-yarn.sh

        

        在 Hadoop 的配置文件中定义运行服务的用户。编辑   $HADOOP_HOME/etc/hadoop/hadoop-env.sh   文件,添加以下内容:export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"

        

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

        接下来,就可以顺利启动成功了!!

        

                2.5 web页面访问管理

首先需要关闭防火墙,我们这里直接关闭,一般开发中,只是开放指定端口

[root@master hadoop3.4.1]# systemctl stop firewalld
[root@master hadoop3.4.1]# systemctl disable firewalld 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

        接下来去访问HDFS和YARN的Web界面

http://master:9870/
http://master:8088/

        

          dfs.namenode.http-address  :NameNode 的 HTTP 服务端口(默认为   50070  ,Hadoop 3.x 中为   9870  )。•   dfs.datanode.http.address  :DataNode 的 HTTP 服务端口(默认为   50075  ,Hadoop 3.x 中为   9864  )

相关文章:

  • 减少内存占用的两种方法|torch.no_grad和disable_torch_init
  • python-leetcode-最长公共子序列
  • 从二维随机变量到多维随机变量
  • P9420 [蓝桥杯 2023 国 B] 双子数--最高效的质数筛【埃拉托斯特尼筛法】
  • 【uniapp】在UniApp中实现持久化存储:安卓--导出数据为jsontxt
  • 【全干货】cocos简短demo制作-三消类游戏
  • 测试的BUG分析
  • 第二十九:5.7.【$subscribe】侦听数据
  • SpringBoot集成easy-captcha图片验证码框架
  • 《Somewhat Practical Fully Homomorphic Encryption》笔记 (BFV 源于这篇文章)
  • 前端Javascrip后端Net6前后分离文件上传案例(完整源代码)下载
  • 2025 最新版鸿蒙 HarmonyOS 开发工具安装使用指南
  • Go入门之文件
  • 华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置
  • 练习题:57
  • JDBC 进阶(未完结)
  • C# 确保程序只有一个实例运行
  • 如何确保邮件内容符合不同地区用户的文化习惯
  • 原子性(Atomicity)和一致性(Consistency)的区别?
  • 【备份】php项目处理跨域请求踩坑
  • 河南:响鼓重锤对违规吃喝问题露头就打、反复敲打、人人喊打
  • 上海市重大工程一季度开局良好,多项生态类项目按计划实施
  • 张广智︱“编年事辑”:打开学人心路历程的窗户
  • 习近平在中拉论坛第四届部长级会议开幕式的主旨讲话(全文)
  • 第二期人工智能能力建设研讨班在京开班,近40国和区域组织代表参加
  • 人民日报整版聚焦:专家学者看2025中国经济增长点