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 )