Hadoop集群环境配置搭建
一、简单介绍
Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎
Lucene,这个搜索引擎在2001年成为Apache基金会的一个子项目,也是 ElasticSearch等重要搜索引擎的底层基础。
项目官方:https://hadoop.apache.org/
二、Linux环境搭建
首先准备三台Linux服务器,预装CentOS7。三台服务器之间需要网络互通。本地测试环境的IP地址分别为:192.168.2.128,192.168.2.129,
192.168.2.130
内存配置建议不低于4G,硬盘空间建议不低于50G。
1、配置hosts
vi /etc/hosts

这里是给每个机器配置一个机器名。后续集群中都会通过机器名进行配 置管理,而不会再关注IP地址。
2、关闭防火墙
Hadoop集群节点之间需要进行频繁复杂的网络交互,在实验环境建议关闭防火墙。生产环境下,可以根据情况选择是按照端口配置复杂的防火墙规则或者关闭内部防火墙,使用堡垒机进行统一防护。
systemctl stop firewalld
systemctl disable firewalld.service
3、配置SSH免密
1、在node01下执行,一路回车(四次)
ssh-keygen -t rsa
2、然后在 node01上执行
ssh-copy-id node01
3、输入 yes,然后回车,接着输入 root 密码,然后会得到如下日志

4、验证一下,在 node01节点执行
ssh node01

5、在node02,node03节点分别执行上述四个步骤(注意节点名称的替换)
6、最后分别在node01上执行
ssh-copy-id node02
ssh-copy-id node03
在node02上执行
ssh-copy-id node01
ssh-copy-id node03
同理,在node03上执行
ssh-copy-id node01
ssh-copy-id node02
7、查看是否成功免密登录

4、安装JDK
尽量不要使用Linux自带的OpenJDK。
卸载指令 :rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
自行下载JDK jdk-8u212-linux-x64.tar.gz。解压到/usr/java目录。
最后配置一下jdk的环境变量
(注:node01、node02、node03三个节点都按装部署jdk环境)
export JAVA_HOME=/usr/java/jdk1.8.0_291
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

5、创建用户(可选)
这里直接使用系统提供的root用户来直接进行操作。
通常在正是的生产环境中,root用户都是要被严格管控的,这时就需要单独创建一个用户来管理这些应用
三、Hadoop集群搭建
1、版本选择
这里选择的是3.2.2版本 hadoop-3.2.2.tar.gz ,下载地址:https://hadoop.apache.org/release/3.2.2.html
2、 集群机器角色规划

其中,HDFS是一个分布式的文件系统,主要负责文件的存储。由NameNode、Secondary
NameNode和DataNode三种节点组成。HDFS上的文件,会以文件块(Block)的形式存储到不同的DataNode节点当中。NameNode则用来存储文件的相关元数据,比如文件名、文件目录结果、文件的块列表等。然后SecondaryNameNode则负责每隔一段时间对NameNode上的元数据进行备份。
Yarn是一个资源调度的工具,负责对服务器集群内的计算资源,主要是CPU和内存,进行合理的分配与调度。由ResourceManager和NodeManager两种节点组成。ResourceManager负责对系统内的计算资源进行调度分配,将计算任务分配到具体的NodeManger节点上执行。而NodeManager则负责具体的计算任务执行。
3、按装Hadoop
1、在所有虚拟机根目录下新建文件夹export,export文件夹中新建data、servers和software文件
mkdir -p /export/data
mkdir -p /export/servers
mkdir -p /export/software
2、解压Hadoop安装包
cd /export/software
tar -zxvf hadoop-3.2.2.tar.gz -C /export/servers/
3、配置hadoop环境变量
打开配置文件
vi /etc/profile
配置文件最后追加的配置
export HADOOP_HOME=/export/servers/hadoop-3.2.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置文件生效
source /etc/profile
4、查看是否配置成功
hadoop version

4、Hadoop集群配置
配置前先介绍一下配置文件
以下所有的配置文件都在hadoop安装目录下etc文件中,路径如下:

需要配置的文件有以下6个

1、配置hadoop-env.sh文件
vi hadoop-env.sh
#找到相应位置添加这段
export JAVA_HOME=/usr/java/jdk1.8.0_291

2、配置core-site.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><!-- 指定 NameNode 的地址 --><property><name>fs.defaultFS</name><value>hdfs://node01:8020</value></property><!-- 指定 hadoop 数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/export/servers/hadoop-3.2.2/data</value></property><!-- 配置 HDFS 网页登录使用的静态用户为当前操作系统用户 --><property><name>hadoop.http.staticuser.user</name><value>root</value></property>
</configuration>
3、配置hdfs-site.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><!-- NameNode web 端访问地址--><property><name>dfs.namenode.http-address</name><value>node01:9870</value></property><!-- 2NameNode web 端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>node03:9868</value></property><!-- 备份数量 --><property><name>dfs.replication</name><value>2</value></property><!-- 打开webhdfs --><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
</configuration>
4、配置yarn-site.xml文件
<?xml version="1.0"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
-->
<configuration><!-- 指定 MR 走 shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定 ResourceManager 的地址--><property><name>yarn.resourcemanager.hostname</name><value>node02</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><!-- 开启日志聚集功能 --><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>
</configuration>
5、配置mapred-site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><!-- 指定 MapReduce 程序运行在 Yarn 上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 历史服务器 web 端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>node01:19888</value></property>
</configuration>
6、配置workers文件
node01
node02
node03
7、将配置完成后的hadoop整体分发到另外的节点(完成node02、node03两个节点和node01相同的配置)
scp ~/.bash_profile root@node02:~
scp -r /export/servers/hadoop-3.2.2 root@node02:/export/servers/hadoop-3.2.2
scp ~/.bash_profile root@node03:~
scp -r /export/servers/hadoop-3.2.2 root@node03:/export/servers/hadoop-3.2.2
5、启动Hadoop集群
1、先启动hdfs服务(在node01上启动NameNode、DataNode)
第一次启动hdfs服务时,需要先对NameNode进行格式化。在NameNode所
在的node01机器,执行hadoop namenode -format执行,完成初始化。初始化完成后,会在 /export/servers/hadoop-3.2.2/data/dfs/name/current目录下创建一个NameNode的镜像。
接下来可以尝试启动hdfs了。 hadoop的启动脚本在hadoop下的sbin目录
下。 start-dfs.sh就是启动hdfs的脚本。
当前版本hadoop如果不创建单独用户,而是直接使用root用户启动,会报错。这时就需要添加之前配置的HDFS_NAMENODE_USER 等几个环境变量。
打开配置文件vi /etc/profile在最后追加如下内容,保存退出source /etc/profile(node02、node03节点不要忘记配置)
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
export HADOOP_PID_DIR=/export/servers

2、接下来启动Yarn(node02上启动ResourceManager、DataNoda)
注意下在yarn-site.xml中配置了日志聚合,将yarn的执行日志配置到了
hdfs上。所以yarn建议在hdfs后启动。当然,在生产环境下需要评估这
种日志方式是否合适。

3、查看各个节点服务启动进程
DataNode: 数据节点。
NameNode 名称服务;
SecondaryNameNode 备份名称服务



4、访问HDFS的Web页面
配置window下的host文件 C:\Windows\System32\drivers\etc打开hosts文件
192.168.2.128 node01
192.168.2.129 node02
192.168.2.130 node03
http://node01:9870/

5、访问yarn的管理页面
http://node02:8088/

hadoop集群环境配置搭建完成!
相关文章:
Hadoop集群环境配置搭建
一、简单介绍 Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎 Lucene,这个搜索引擎在2001年成为Apache基金会的一个子项目,也是 ElasticSearch等重要搜索引擎的底层基础。 项目官方:https://hadoop.apache.org/ 二、Linux环…...
Thread类的基本用法
Thread类的基本用法🔎1.线程创建🌻继承Thread类🌼继承Thread重写run()方法🌼继承Thread匿名内部类🌻实现Runnable接口🌼实现Runnable接口重写run()方法🌼实现Runnable接口匿名内部类ἳ…...
YOLOV8改进:如何增加注意力模块?(以CBAM模块为例)
YOLOV8改进:如何增加注意力模块?(以CBAM模块为例)前言YOLOV8nn文件夹modules.pytask.pymodels文件夹总结前言 因为毕设用到了YOLO,鉴于最近V8刚出,因此考虑将注意力机制加入到v8中。 YOLOV8 代码地址&am…...
Spark Streaming DStream的操作
一、DStream的定义 DStream是离散流,Spark Streaming提供的一种高级抽象,代表了一个持续不断的数据流。DStream可以通过输入数据源来创建,比如Kafka、Flume,也可以通过对其他DStream应用高阶函数来创建,比如map、redu…...
蓝桥杯冲刺 - week1
文章目录💬前言🌲day192. 递归实现指数型枚举843. n-皇后问题🌲day2日志统计1209. 带分数🌲day3844. 走迷宫1101. 献给阿尔吉侬的花束🌲day41113. 红与黑🌲day51236. 递增三元组🌲day63491. 完全…...
Leetcode27. 移除元素
目录一、题目描述:二、解决思路和代码1. 解决思路2. 代码一、题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用…...
ViewService——一种保证客户端与服务端同步的方法
简介在分布式系统中,最常见的场景就是主备架构。但是如果主机不幸宕机,如何正确的通知客户端当前后端服务器的状况成为一个值得研究的问题。本文描述了一种简单的模型用于解决此问题。背景以一个分布式的Key-Value数据库为背景。数据库对外提供3个接口Ge…...
使用STM32F103ZE开发贪吃蛇游戏
目录 前言 一、设置FreeROTS用户任务 (1)事件event任务 (2)按键输入方向控制任务 (3)果实食物任务 (4)显示任务函数 (3)开始任务 二、主函数 三、ADC采样…...
如何利用Web3D技术打造在线虚拟展览馆
随着Web3D技术的不断发展,越来越多的企业和组织开始将其应用于虚拟展览馆的建设中。虚拟展览馆可以为观众提供高度沉浸式的展览体验,让观众可以随时随地参观各种展览,同时也为展览组织者提供了更多的展示方式和机会。下面将介绍如何利用Web3D…...
第二十三章 opengl之高级OpenGL(实例化)
OpenGL实例化实例化数组绘制小行星带实例化 综合应用。 如果绘制了很多的模型,但是大部分的模型包含同一组顶点数据,只是不同的世界空间变换。 举例:一个全是草的场景,每根草都是一个包含了几个小三角形的模型。需要绘制很多根草…...
C++ String类总结
头文件 #include <string>构造函数 default (1) basic_string();explicit basic_string (const allocator_type& alloc); copy (2) basic_string (const basic_string& str);basic_string (const basic_string& str, const allocator_type& alloc); su…...
内网升级“高效安全”利器!统信软件发布私有化更新管理平台
随着数字化的深度推进,信息安全重要性进一步凸显。建设自主可控的国产操作系统,提升信息安全自主能力,已成为国家重要战略之一。 操作系统安全对计算机系统的整体安全发挥着关键作用,各类客户往往需要在第一时间获取更新与安全补…...
JAVA开发(自研项目的开发与推广)
https://live.csdn.net/v/284629 案例背景: 作为JAVA开发人员,我们可以开发无数多的web项目,电商系统,小程序,H5商城。有时候作为技术研发负责人,项目做成了有时候也需要对内进行内测,对外进行…...
Mysql用户权限分配详解
文章目录MySQL 权限介绍一、Mysql权限级别分析(1)全局级别(1.1) USER表的组成结构(1.1.1) 用户列(1.1.2) 权限列(1.1.3) 安全列(1.1.4)…...
【TypeScript 入门】13.枚举类型
枚举类型 枚举类型:定义包含被命名的常量的集合。比如 TypeScript 支持枚举数字、字符两种常量值类型。 使用方式: enum + 枚举名字 + 花括弧包裹被命名了的常量成员: enum Size {S,M,L } const a = Size.M console.log(Size, Size)...
Python科学计算:偏微分方程1
首先,我们来看初边值问题:伯格斯方程:假设函数是定义在上的函数,且满足:右侧第一项表示自对流,第二项则表示扩散,在许多物理过程中,这两种效应占据着主导地位,为了固定一…...
PLS-DA分类的实现(基于sklearn)
目录 简单介绍 代码实现 数据集划分 选择因子个数 模型训练并分类 调用函数 简单介绍 (此处取自各处资料) PLS-DA既可以用来分类,也可以用来降维,与PCA不同的是,PCA是无监督的,PLS-DA是有监督的…...
常用hook
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。理解:hook是react提供的函数API官方提供的hook基础hookuseState APIconst [state, setState] useState(initialState); //返回state值 以及更新state的方法 …...
TryHackMe-GoldenEye(boot2root)
GoldenEye 这个房间将是一个有指导的挑战,以破解詹姆斯邦德风格的盒子并获得根。 端口扫描 循例nmap Web枚举 进入80 查看terminal.js 拿去cyberchef解码 拿着这组凭据到/sev-home登录 高清星际大战 POP3枚举 使用刚刚的凭据尝试登录pop3 使用hydra尝试爆破 这…...
Elasticsearch基本安全加上安全的 HTTPS 流量
基本安全加上安全的 HTTPS 流量 在生产环境中,除非您在 HTTP 层启用 TLS,否则某些 Elasticsearch 功能(例如令牌和 API 密钥)将被禁用。这个额外的安全层确保进出集群的所有通信都是安全的。 当您在模式下运行该elasticsearch-ce…...
LangGPT:革新自然语言编程的结构化提示词框架
LangGPT:革新自然语言编程的结构化提示词框架 【免费下载链接】LangGPT LangGPT: Empowering everyone to become a prompt expert!🚀 Structured Prompt,Language of GPT, 结构化提示词,结构化Prompt 项目地址: https://gitcod…...
PWM技术原理与电机调速应用详解
PWM技术原理与电机调速应用详解1. PWM基础概念解析1.1 脉冲宽度调制定义PWM(Pulse Width Modulation)即脉冲宽度调制,是一种通过调节脉冲信号的宽度(占空比)来实现能量控制的电子电力技术。该技术在直流电机调速、开关电源、逆变器等电力电子领域有广泛应用。1.2 脉…...
【概率统计】从直方图到核密度估计:数据分布可视化的进阶之路
1. 直方图:数据可视化的第一课 第一次接触数据分布可视化时,大多数人都是从直方图开始的。记得我刚学数据分析时,导师扔给我一组销售数据说:"先画个直方图看看分布情况。"当时我盯着matplotlib的hist函数参数一脸茫然—…...
2026年03月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析
本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第 1 题 在 2026 年春晚的《武 BOT》节目中,一群机器人表演空翻:它们落地后晃一下又能站稳,还会移动保持队形整齐。如果…...
OpenClaw多模态扩展:Qwen3.5-4B-Claude处理截图与PDF
OpenClaw多模态扩展:Qwen3.5-4B-Claude处理截图与PDF 1. 为什么需要多模态能力? 去年夏天,我遇到一个头疼的问题:需要从几百份PDF报告里提取关键数据。手动复制粘贴不仅耗时,还容易出错。当时我就在想,如…...
气候降尺度全流程实战:从 CMIP6 数据到极端气候预估,科研人一站式通关
做水文气象、气候学、地理遥感、生态环境等领域的科研人,是不是都逃不过这些噩梦:尺度鸿沟难跨越:GCM 粗网格(>100km)和流域 / 城市精细尺度(<10km)不匹配,动力降尺度成本太高…...
告别杂乱农场:星露谷物语规划神器助你打造高效田园
告别杂乱农场:星露谷物语规划神器助你打造高效田园 【免费下载链接】stardewplanner Stardew Valley farm planner 项目地址: https://gitcode.com/gh_mirrors/st/stardewplanner 你是否曾在星露谷物语中面对一片荒地感到无从下手?种植区域混乱、…...
SparkFun ICM-20948 Arduino库:DMP硬件协处理器深度实践指南
1. 项目概述SparkFun ICM-20948 Arduino Library 是面向 TDK InvenSense ICM-20948 九轴惯性测量单元(9DoF IMU)的官方 Arduino 封装库,专为 SparkFun 9DoF IMU Breakout - ICM-20948(Qwiic 接口版本,型号 SEN-15335&a…...
ABC系统实战指南:逻辑综合与形式验证的数字电路设计工具
ABC系统实战指南:逻辑综合与形式验证的数字电路设计工具 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc 在现代数字电路设计流程中,逻辑综合与形式…...
WeChatExporter深度解析:如何三步搞定iOS微信聊天记录完整导出
WeChatExporter深度解析:如何三步搞定iOS微信聊天记录完整导出 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为无法备份微信聊天记录而烦恼吗ÿ…...
