CentOS7搭建Hadoop集群(V3.3.4)

本文详细介绍如何在Centos7环境下搭建Hadoop 3.3.4集群,包括前期准备、环境安装、配置修改、初始化与启动步骤及Web页面访问等内容。


本次安装Hadoop版本为3.3.4
安装规划(3台机器)

node01 :192.168.117.20     NameNode DataNode
node02 :192.168.117.21     DataNode
node03 :192.168.117.22     DataNode SecondaryNameNode

一、准备工作

1、配置hostname

hostname分别为node01,node02,node03

# 三台机器分别执行
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03

在这里插入图片描述

2、hosts映射

# 三台机器均要执行
vim /etc/hosts
192.168.117.20 node01
192.168.117.21 node02
192.168.117.22 node03

3、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

4、同步时间

yum install ntpdate
ntpdate ntp5.aliyun.com

在这里插入图片描述

5、关闭selinux

vim /etc/selinux/config
修改为 SELINUX=disabled

在这里插入图片描述

6、配置ssh免密登陆

# 三台机器均执行一下命令
ssh-keygen -t rsa
# 将每台机器的公钥拷贝给每台机器
ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03

测试
在这里插入图片描述

7、重启

reboot

二、安装所需环境

1、jdk安装

# 三台机器均执行
cd /etc/profile.d
vim jdk.sh
# 写入内容
export JAVA_HOME=/opt/button/jdk
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
# 使配置生效
source /etc/profile

验证

java -version

在这里插入图片描述

2、hadoop安装

下载安装包
配置环境变量

# 三台机器均执行
vim /etc/profile.d/hadoop.sh
# 写入内容
export HADOOP_HOME=/opt/button/hadoop/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 使配置生效
source /etc/profile

验证

hadoop version

在这里插入图片描述
创建hadoop数据目录:

mkdir /opt/button/hadoop/data
cd /opt/button/hadoop
chmod -R 777 ./data/

三、修改配置

配置位于hadoop解压目录etc/hadoop目录下,三台机器配置保持一致
在这里插入图片描述

hadoop-env.sh

vim hadoop-env.sh
# jdk修改为自己的路径
export JAVA_HOME=/opt/button/jdk

在这里插入图片描述

注:相关配置具体说明可以查看官网

官网地址
在这里插入图片描述

core-site.xml

<!-- 指定HADOOP所使用的文件系统schema,NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://node01:9000</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/button/hadoop/data</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
	<name>hadoop.http.staticuser.user</name>
	<value>root</value>
</property> 
<!-- 文件系统垃圾桶保存时间 -->
<property>
	<name>fs.trash.interval</name>
	<value>1440</value>
</property>

hdfs-site.xml

<!-- HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- nn web端访问地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>node01:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>node03:9868</value>
</property>

mapred-site.xml

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node01:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node01:19888</value>
</property>

yarn-site.xml

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!-- ResourceManager的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node01</value>
</property>
<!-- 环境变量的继承 -->
<property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!--yarn单个容器允许分配的最大最小内存 -->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>4096</value>
 </property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
	<name>yarn.nodemanager.pmem-check-enabled</name>
	<value>false</value>
</property>
<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>
<property>
     <name>yarn.application.classpath</name>
     <value>org.apache.hadoop.mapreduce.v2.app.MRAppMaster</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://node01:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

workers

vim workers
# 写入如下内容
node01
node02
node03

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行

四、初始化并启动

1、初始化

如果第一次启动集群需格式化NameNode,主节点操作(format首次初始化执行一次即可,后续如果执行除了会造成数据丢失,还会导致hdfs集群主从角色互不识别的问题,三思呀!!!)

hdfs namenode –format

如果该命令格式化无效,可以试试如下命令

hadoop namenode -format

格式化成功的样子如下所示即可
在这里插入图片描述

注:如果不是第一次,需要先执行stop-all.sh,然后删除data与logs中的文件再执行初始化命令,此操作不建议执行,可能会遇到很多问题。

2、启动

在node01节点上的sbin目录找到start-all.sh并执行即可
在这里插入图片描述
执行如下操作解决此问题

vim /etc/profile.d/my_env.sh
# 添加如下内容
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
# 使配置生效
source /etc/profile

重新执行start-all.sh
在这里插入图片描述
查看启动的服务
在这里插入图片描述

3、相关说明

  • 这里执行start-all.sh会启动所有服务,如果只想启动自己所需要的服务,可以执行对应的脚本即可。
    比如启动hdfs可以执行start-dfs.sh即可。

在这里插入图片描述

  • 如果只想操作某个角色的进程,可以使用如下命令
# HDFS 
hdfs --daemon start namenode|datanode|secondarynamenode
hdfs --daemon stop namenode|datanode|secondarynamenode
# YARN
yarn --daemon start resourcemanager|nodemanager
yarn --daemon stop resourcemanager|nodemanager
  • 如果启动过程没有那么顺利,我们可以通过查看日志来排查问题。当执行启动脚本时,会自动在hadoop目录下帮我们创建logs文件夹,我们可以在logs文件夹下查询对用的日志文件。
    在这里插入图片描述

4、Web页面

HDFS集群Web UI默认端口9870,ip则为namenode的IP地址
http://192.168.117.20:9870/
在这里插入图片描述
注:在windows上使用web ui上传文件时,由于没法识别node01,node02,node03,所以上传文件会失败,只需要在windows的hosts文件加上对应的解析就可以正常操作了

# C:\Windows\System32\drivers\etc
192.168.117.20 node01
192.168.117.21 node02
192.168.117.22 node03

在这里插入图片描述

Yarn集群WEB Ui默认端口8088,ip则为resourcemanager的IP地址
http://192.168.117.20:8088/
在这里插入图片描述

五、测试hdfs

hadoop fs -mkdir /hfile
hadoop fs -put input.txt /hfile
hadoop fs -ls /hfile

在这里插入图片描述

六、Springboot整合Hdfs

Springboot整合hdfs-spring-boot-starter实现基本操作
Springboot整合hdfs-client实现基本操作

### 安装和配置Hadoop集群 #### 准备工作 为了在 CentOS 上成功搭建 Hadoop 集群,需先确保所有节点的操作系统已更新至最新版本并安装必要的依赖包[^1]。 ```bash sudo yum update -y sudo yum install java-1.8.0-openjdk-devel -y ``` #### 下载与解压 Hadoop 前往 Apache 官方网站下载适合的 Hadoop 版本,并将其放置于合适目录下完成解压缩操作。 ```bash wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz tar zxvf hadoop-3.3.4.tar.gz -C /usr/local/ ln -s /usr/local/hadoop-3.3.4 /usr/local/hadoop ``` #### 修改环境变量 编辑 `~/.bashrc` 文件,在文件末尾追加如下内容以便设置 Hadoop 的环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=${HADOOP_INSTALL} export HADOOP_COMMON_HOME=${HADOOP_INSTALL} export HADOOP_HDFS_HOME=${HADOOP_INSTALL} export YARN_HOME=${HADOOP_INSTALL} source ~/.bashrc ``` #### 编辑核心配置文件 进入 `/usr/local/hadoop/etc/hadoop/` 目录修改以下四个主要配置文件:core-site.xml, hdfs-site.xml, yarn-site.xml 和 mapred-site.xml。这些文件用于定义整个分布式系统的参数设定以及各组件之间的交互方式。 对于单 Master 多 Slave 架构而言,具体调整如下所示(假设 IP 地址分别为 master: 192.168.1.100; slave1: 192.168.1.101; slave2: 192.168.1.102) ##### core-site.xml ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration> ``` ##### hdfs-site.xml ```xml <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hdfs/datanode</value> </property> </configuration> ``` ##### yarn-site.xml ```xml <configuration> <!-- ResourceManager --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- NodeManager local directories --> <property> <name>yarn.nodemanager.local-dirs</name> <value>/data/yarn/local</value> </property> <!-- Log aggregation settings --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ``` ##### mapred-site.xml ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` #### 初始化 NameNode 并启动服务 回到 Master 节点执行初始化命令之后再依次开启各个守护进程。 ```bash /usr/local/hadoop/bin/hdfs namenode -format start-all.sh jps ``` 通过以上步骤即可实现基于 CentOS 操作系统的简易版 Hadoop 集群部署过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值