Hadoop集群安装
集群规划
| node01 | node02 | node03 | |
|---|---|---|---|
| 角色 | 主节点 | 从节点 | 从节点 |
| NameNode | √ | ||
| DataNode | √ | √ | √ |
| ResourceManager | √ | ||
| NodeManager | √ | √ | √ |
| SecondaryNameNode | √ | ||
| Historyserver | √ |
上传安装包到node01
解压到指定目录
tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/
创建软链接
cd /bigdata/server
ln -s hadoop-3.3.3/ hadoop
常见的Hadoop软件目录说明
| 目录 | 作用 | 说明 |
|---|---|---|
| bin/ | Hadoop最基本的管理脚本和使用脚本 | hdfs: 文件上传命令 hadoop文件管理基础命令 yarn: 资源调度相关 mapred: 程序运行, 启动历史服务器 |
| etc/ | Hadoop配置文件的目录 | core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml |
| include/ | 对外提供的编程库头文件 | 对外提供的编程库头文件(具体动态库和静态库在lib目录中), 这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序 |
| lib/ | 动态库和静态库 | 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。 |
| libexec/ | shell配置文件 | 各个服务对用的shell配置文件所在的目录, 可用于配置日志输出、启动参数(比如JVM参数)等基本信息。 |
| sbin/ | Hadoop管理命令 | 主要包含HDFS和YARN中各类服务的启动/关闭脚本 |
| share/ | 官方自带示例 | Hadoop各个模块编译后的jar包所在的目录 |
Hadoop配置文件修改
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp分发给其他各个从节点机器。
hadoop-env.sh
文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。
vim hadoop-env.sh
54行的JAVA_HOME的设置
export JAVA_HOME=/bigdata/server/jdk1.8
在文件末尾添加如下内容
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
core-site.xml
hadoop的核心配置文件,有默认的配置项core-default.xml。
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim core-site.xml在文件的configuration的标签中添加以下内容:
<property><name>fs.defaultFS</name><value>hdfs://node01:8020</value> </property><property><name>hadoop.tmp.dir</name><value>/bigdata/data/hadoop</value> </property><!-- 设置HDFS web UI用户身份 --> <property><name>hadoop.http.staticuser.user</name><value>root</value> </property><!-- 整合hive --> <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property><property><name>hadoop.proxyuser.root.groups</name><value>*</value> </property>
hdfs-site.xml
HDFS的核心配置文件,有默认的配置项hdfs-default.xml。
hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim hdfs-site.xml
<!-- 指定secondarynamenode运行位置 --><property><name>dfs.namenode.secondary.http-address</name><value>node02:50090</value></property>
mapred-site.xml
MapReduce的核心配置文件,有默认的配置项mapred-default.xml。
mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim 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>
yarn-site.xml
YARN的核心配置文件,有默认的配置项yarn-default.xml。
yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim yarn-default.xml
<!-- 指定YARN的主角色(ResourceManager)的地址 --><property><name>yarn.resourcemanager.hostname</name><value>node01</value></property><!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 是否将对容器实施物理内存限制 --><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.log-aggregation-enable</name><value>true</value></property><!-- 设置yarn历史服务器地址 --><property><name>yarn.log.server.url</name><value>http://node02:19888/jobhistory/logs</value></property><!-- 保存的时间7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
workers
workers文件里面记录的是集群主机名。主要作用是配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候workers文件里面的主机标记的就是从节点角色所在的机器。
cd /bigdata/server/hadoop/etc/hadoop/
vim workers
node01 node02 node03
同步hadoop软件包到node02和node03
scp -r hadoop-3.3.3/ node02:$PWD
scp -r hadoop-3.3.3/ node03:$PWD
在node02节点配置软链接
ln -s hadoop-3.3.3/ hadoop
在node03节点配置软链接
ln -s hadoop-3.3.3/ hadoop
[所有节点]配置环境变量
vim /etc/profile
export HADOOP_HOME=/bigdata/server/hadoop
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
Hadoop集群启动
启动方式
要启动Hadoop集群,需要启动HDFS和YARN两个集群。
注意:首次启动HDFS时,必须在主节点node01对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。
hadoop namenode -format
手动单个节点启动
在主节点node01启动namenode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start namenode
在node02启动secondarynamenode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start secondarynamenode
在所有节点启动datanode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start datanode
查看进程情况
jpg
netstat -ntlp
其中hdfs的web端口: node01:9870已经可以正常访问
在主节点node01启动ResouceManager
cd /bigdata/server/hadoop/bin
./yarn --daemon start resourcemanager
在所有节点启动Nodemanager
cd /bigdata/server/hadoop/bin
./yarn --daemon start nodemanager
如果想要停止某个节点上某个角色,只需要把命令中的
start改为stop即可。
一键脚本启动
如果配置了etc/hadoop/workers和ssh免密登录,则可以使用程序脚本启动所有Hadoop两个集群的相关进程,在主节点所设定的机器上执行。
hdfs:/bigdata/server/hadoop/sbin/start-dfs.sh
yarn:/bigdata/server/hadoop/sbin/start-yarn.sh
停止脚本
hdfs:/bigdata/server/hadoop/sbin/stop-dfs.sh
yarn:/bigdata/server/hadoop/sbin/stop-yarn.sh
完整的一键启动hdfs和yarn脚本
start-all.sh: 启动所有的hdfs和yarn的脚本
stop-all.sh: 停止所有的hdfs和yarn的脚本
启动后的效果



集群Web访问UI
hdfs: http://node01:9870

yarn:http://node01:8088

MapReduce JobHistory
JobHistory用来记录已经finished的mapreduce运行日志,日志信息存放于HDFS目录中,默认情况下没有开启此功能,需要在mapred-site.xml中配置并手动启动。
修改mapred-site.xml
cd /bigdata/server/hadoop/etc/hadoop/
vim mapred-site.xml
<property><name>mapreduce.jobhistory.address</name><value>node02:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node02:19888</value></property>
scp mapred-site.xml node02: P W D s c p m a p r e d − s i t e . x m l n o d e 03 : PWD scp mapred-site.xml node03: PWDscpmapred−site.xmlnode03:PWD
在node02节点启动JobHistory
cd /bigdata/server/hadoop/bin
./mapred --daemon start historyserver
访问web管理界面
http://node02:19888/jobhistory
运行演示程序
在hdfs创建一个目录:
hdfs dfs -mkdir /input
上传文件到hdfs的/input目录
hdfs dfs -put start-all.sh /input
运行示例程序
hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output


http://node02:19888/jobhistory`
运行演示程序
在hdfs创建一个目录:
hdfs dfs -mkdir /input
上传文件到hdfs的/input目录
hdfs dfs -put start-all.sh /input
运行示例程序
hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output
[外链图片转存中…(img-sGiM0nUt-1728869465896)]
[外链图片转存中…(img-P7KlMe3y-1728869465896)]

相关文章:
Hadoop集群安装
集群规划 node01node02node03角色主节点从节点从节点NameNode√DataNode√√√ResourceManager√NodeManager√√√SecondaryNameNode√Historyserver√ 上传安装包到node01 解压到指定目录 tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/ 创建软链接 cd…...
VuePress集成到Vue项目的方法
VuePress 可以作为一个独立的静态站点生成器来使用,也可以集成到现有的 Vue 项目中。以下是将 VuePress 集成到 Vue 项目的几种方法: 1. 作为本地依赖集成 如果你想在现有的 Vue 项目中使用 VuePress 来管理文档,你可以将 VuePress 安装为本…...
【ROS】ROS局域网下多机通讯方法
最近工作中需要用到多机通讯,这里稍微总结一下使用方法。 目录 一、网络配置 二、修改两个设备的hosts文件 三、修改两个ros设备的.bashrc 四、launch文件中给节点设定运行的设备 一、网络配置 首先确保两个ros设备连接到同一局域网下,然后查询两个…...
linux 系统怎么使用
Linux系统的使用涉及多个方面,包括文件管理、目录操作、用户管理、进程管理、网络配置等。以下是对Linux系统基础使用的详细介绍: 一、文件管理 查看文件和目录 ls:列出当前目录的内容。ls -l:以长格式列出当前目录的内容&#x…...
Java线程池知识点梳理
Java线程池知识点梳理 什么是线程池? 线程在系统中创建的成本是相对比较高的,所以使用”池化“的思想,设计线程池,有大量任务需要执行时,可以直接从线程池中使用已经创建好的线程直接去执行。减少线程的创建和销毁带…...
SFT、RLHF、DPO、IFT —— LLM 微调的进化之路_如何搭建自己的dpo
TL;DR • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐; • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确; • 虽然…...
CSS 选择器简单回顾
引言 当我们探讨网页设计和开发时, CSS(层叠样式表) 无疑是一个不可或缺的技术, 它使我们能够精确控制网页的外观和布局, 为用户创造出独特的视觉体验、以及良好的交互体验!! 而一个完整的 CSS 规则则是由两个主要部分组成: 选择器和声明块 那么今天我们就来盘点下常见的几种选…...
uniapp配置微信小程序分包(分包优化)
1.manifest.json中 源码视图中找到mp-weixin,新增代码"optimization":{"subPackages":true},如下图所示 "optimization" : {"subPackages" : true } 2.pages.json中 分包内静态文件示例 "subPackages&…...
MySQL-10.DML-添加数据insert
一.DML(INSERT) -- DDL:数据操作语言 -- DML:插入数据 - insert -- 1.为tb_emp表的username,name,gender字段插入值 insert into tb_emp (username,name,gender) values (wuji,无忌,1); -- 这样会报错,因为create_ti…...
ARM/Linux嵌入式面经(四八):tp-link联洲国际
文章目录 1. **模电基础**:请解释共射电路的工作原理,并描述如何计算其放大倍数。工作原理放大倍数计算面试官追问及回答2. **DCDC损耗**:有哪些方法可以降低DCDC转换器的损耗?3. **示波器使用**:如何用示波器正确测量DCDC的开关纹波?4. **IIC通信**:IIC通信协议中是否需…...
代码实践篇四 形状检测与规则重建
本节内容主要涉及形状检测(Shape Detection)与形状重建(Shape Reconstruction),具体算法步骤会在后续章节介绍。CGAL在6.0重点更新了形状重建部分的一些模块——动态空间分割与动态形状重建等,也会在后续详…...
JVM(HotSpot):GC之垃圾回收阶段
文章目录 前言一、标记清除算法(Mark Sweep)二、标记整理算法(Mark Compact)三、复制算法(Copy) 前言 标记出垃圾对象之后,就要进行清理。 那么,如何清理? 这里也有相应的算法。 主要有三种。 一、标记清除算法(Mark Sweep) 原理说明&…...
Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!
导读: 在 Go 项目中,虽然没有像 MyBatis Plus 这样特定的 ORM 插件,但可以使用功能相似的 Go ORM 框架,比如 GORM,它支持链式查询、自动迁移、预加载等功能,与 MyBatis Plus 有相似之处。通过一些插件或扩…...
《深度学习》Dlib库 CNN卷积神经网络 人脸识别
目录 一、如何实现CNN人脸识别 1、CNN核心概念 1)卷积层 2)池化层 3)激活函数 4)全连接层 2、步骤 1)加载预训练的人脸识别模型 2)读取图像并检测人脸 3)提取人脸特征向量 4…...
滚雪球学Redis[7.1讲]:Redis实战案例
全文目录: 🎉前言🚦1. 使用Redis实现会话管理在Web应用中使用Redis管理会话会话过期与刷新策略安全性考虑与优化 🧩2. 使用Redis实现缓存系统缓存的基本原理Redis缓存的应用场景缓存失效策略与雪崩预防 ✨3. Redis在排行榜系统中的…...
WordPress外部图片本地化插件
一款用于本地化文章的外部图片的插件,支持如下功能: 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章批量本地化。 源码下载:https://download.csdn.net/download/m0_66047725/898963…...
Linux基础-shell的简单实现
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Linux基础-shell的简单实现 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1, 全局变…...
Tomcat日志文件详解及catalina.out日志清理方法
目录 前言1. Tomcat日志文件详解1.1 catalina.out1.2 localhost_access_log1.3 catalina.<date>.log1.4 host-manager.<date>.log 和 manager.<date>.log1.5 localhost.<date>.log 2. catalina.out文件管理与清理方法2.1 为什么不能直接删除catalina.o…...
react 中的hooks中的useState
(1). State Hook让函数组件也可以有state状态, 并进行状态数据的读写操作 (2). 语法: const [xxx, setXxx] React.useState(initValue) (3). useState()说明:参数: 第一次初始化指定的值在内部作缓存返回值: 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的…...
STM32学习笔记---DMA
目录 一、什么是DMA 1、DMA是什么 2、DMA的工作流程 3、DMA控制器与外设控制器 二、如何配置DMA 1、DMA框图 2、功能说明 2.1 通道选择 2.2 仲裁器 2.3 源、目标和传输模式 2.4 指针递增 2.5 循环模式 2.6 DMA流控制器和外设流控制器 3、程序设计 三、具体使用DMA…...
CAPL不只是写脚本:揭秘它在整车V流程中的五大实战角色(仿真/测试/诊断)
CAPL不只是写脚本:揭秘它在整车V流程中的五大实战角色(仿真/测试/诊断) 当汽车电子工程师第一次接触CAPL时,往往会被它的"脚本语言"标签所局限。实际上,在整车开发的V流程中,CAPL更像是一把瑞士军…...
四旋翼姿态解算实战:MahonyAHRS算法中的初始姿态角优化策略
1. 四旋翼姿态解算与MahonyAHRS算法基础 四旋翼飞行器的姿态解算是飞行控制系统的核心环节,它直接决定了飞行器的稳定性和操控性。简单来说,姿态解算就是通过传感器数据计算出飞行器当前的俯仰、横滚和偏航角度。这就像我们人类闭着眼睛也能感知自己身体…...
小功率风冷电堆市场:68.65MW产能下的氢燃料电池产业新局
氢燃料电池产业在发展进程中,经历了显著的变革与细分。最初,该产业主要聚焦于高功率水冷电堆,此类液冷电堆凭借高额定功率与复杂的热管理系统,成为乘用车和商用车辆大规模部署的坚实基础。然而,随着市场需求的不断演变…...
Tsuru日志聚合性能优化:10个提升吞吐量与降低延迟的终极技巧
Tsuru日志聚合性能优化:10个提升吞吐量与降低延迟的终极技巧 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru Tsuru作为开源且可扩展的Platform as a Service (PaaS)平…...
如何快速提升技术文档专业度:Obsidian代码美化插件终极指南
如何快速提升技术文档专业度:Obsidian代码美化插件终极指南 【免费下载链接】obsidian-better-codeblock Add title, line number to Obsidian code block 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-better-codeblock 还在为技术笔记中单调乏味…...
新手友好:5步完成Llama3-8B对话系统的本地部署
新手友好:5步完成Llama3-8B对话系统的本地部署 1. 引言:为什么选择Llama3-8B? 如果你对AI对话模型感兴趣,想自己动手搭建一个,但又担心过程太复杂、电脑配置不够,那今天这篇文章就是为你准备的。 Meta-L…...
12. C++14新特性-字符串操作与标准用户定义字面量
一、引言C11 引入了用户定义字面量(User-Defined Literals, UDL)的底层机制,允许开发者通过重载 operator "" 为基础类型附加上下文语义。然而,C11 标准库自身并未提供预置的后缀实现。C14 填补了这一标准库层面的空白&…...
别再用Keil MDK-ARM了?手把手教你用VSCode+GCC搭建STM32F103C8T6开发环境(附标准库模板)
逃离Keil:用VSCodeGCC打造高效STM32开发环境 在嵌入式开发领域,Keil MDK-ARM长期以来都是STM32开发的主流选择。但近年来,越来越多的开发者开始寻求更轻量、更现代化的替代方案。如果你也对Keil的笨重界面、高昂授权费用和有限的定制能力感到…...
Apache Answer深度体验:除了当问答系统,它还能这样玩?
Apache Answer深度体验:除了当问答系统,它还能这样玩? 当大多数人提起Apache Answer时,第一反应往往是"开源问答系统"。但如果你只把它当作一个简单的Q&A工具,那就太小看这个13.9K Star的项目了。作为一…...
工业五官:05 工厂也要做体检?五大传感器告诉你设备健康状况
05 工厂也要做体检?五大传感器告诉你设备健康状况 今天聊的这五大传感器——温度、压力、液位、流量、力,就是工厂的“全套体检套餐”。机器跟人一样,也得量体温、测血压、查血量、看血流、试力气。要是全靠师傅用手摸、用眼看,那多原始啊?这些小医生24小时在线,一有风吹…...
