一、准备工作

1.把集群全部停掉

在三台节点上都做(在xshell通过右键----> 发送输入到--->所有会话)

2..在/export/servers下创建HA目录

sudo mkdir -p /export/servers/HA

3.创建用户和设置所属主和所属组

#创建用户
sudo adduser ygre
#设置密码
sudo passwd ygre
# 创建用户组
sudo chown ygre:ygre HA

 4.将原hadoop拷贝到/export/servers/HA下(在hadoop1上即可--后面会分发)

cp -r /export/servers/hadoop /export/servers/HA

 5.将/export/servers/HA下的hadoop里面的data logs 和/tmp/* 全部删除

rm -rf data logs
sudo rm -rf /tmp/*

6.配置环境变量(将指向/export/servers/hadoop 修改成指向/export/servers/HA/hadoop)

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/HA/hadoop
# 保存退出
:wq
#初始化环境变量
source /etc/profile

 7.分发环境变量

#将系统环境变量文件分发至虚拟机Hadoop2的/etc目录
scp /etc/profile root@hadoop2:/etc 
#将系统环境变量文件分发至虚拟机Hadoop3的/etc目录
scp /etc/profile root@hadoop3:/etc 
# 分别在hadoop2和hadoop3中初始化环境变量
source /etc/profile 
# 每台节点一定要验证
echo $HADOOP_HOME

 二、配置HDFS

1.配置core-site.xml

<configuration><!-- 默认文件系统地址(HA 集群逻辑名称) --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- Hadoop 临时目录 --><property><name>hadoop.tmp.dir</name><value>/export/servers/HA/hadoop/data</value></property><!-- ZooKeeper 集群地址 --><property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 启用自动故障转移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- ZKFC 会话超时时间 --><property><name>ha.zookeeper.session-timeout.ms</name><value>5000</value></property>
</configuration>

2. 配置hdfs-site.xml

注意:在hadoop2.x中只能有两个NameNode,但是在hadoop3.x中可以有无限个

<configuration><!-- NameNode数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode数据存储目录 --><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/data</value></property><!-- JournalNode数据存储目录 --><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名称 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中NameNode节点都有哪些 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop2:8020</value></property><!-- NameNode的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop2:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn3</name><value>hadoop3:50070</value></property><!-- 指定NameNode元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!-- 访问代理类:client用于确定哪个NameNode为Active --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔离机制时需要ssh秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/ygre/.ssh/id_rsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>

 三、配置YARN

1.配置yarn-site.xml

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 启用resourcemanager ha --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 声明两台resourcemanager的地址 --><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><!--指定resourcemanager的逻辑列表--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2,rm3</value></property>
<!-- ========== rm1的配置 ========== --><!-- 指定rm1的主机名 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop1</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop1:8088</value></property><!-- 指定rm1的内部通信地址 --><property><name>yarn.resourcemanager.address.rm1</name><value>hadoop1:8032</value></property><!-- 指定AM向rm1申请资源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm1</name>  <value>hadoop1:8030</value></property><!-- 指定供NM连接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm1</name><value>hadoop1:8031</value></property><!-- ========== rm2的配置 ========== --><!-- 指定rm2的主机名 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop2:8088</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>hadoop2:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop2:8030</value></property><property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>hadoop2:8031</value></property><!-- ========== rm3的配置 ========== --><!-- 指定rm1的主机名 --><property><name>yarn.resourcemanager.hostname.rm3</name><value>hadoop3</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm3</name><value>hadoop3:8088</value></property><!-- 指定rm1的内部通信地址 --><property><name>yarn.resourcemanager.address.rm3</name><value>hadoop3:8032</value></property><!-- 指定AM向rm1申请资源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm3</name>  <value>hadoop3:8030</value></property><!-- 指定供NM连接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm3</name><value>hadoop3:8031</value></property><!-- 指定zookeeper集群的地址 --> <property><name>yarn.resourcemanager.zk-address</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 启用自动恢复 --> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定resourcemanager的状态信息存储在zookeeper集群 --> <property><name>yarn.resourcemanager.store.class</name>     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</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>
</configuration>

四、运行HA高可用集群和查看WebUI

1.分发HA中的hadoop安装目录

#将Hadoop安装目录分发至虚拟机HA中的hadoop2中存放安装程序的目录
scp -r /export/servers/HA/hadoop root@hadoop2:/export/servers/HA
#将Hadoop安装目录分发至虚拟机HA中的hadoop3中存放安装程序的目录
scp -r /export/servers/HA/hadoop root@hadoop3:/export/servers/HA

 2.在(hadoop1,hadoop2,hadoop3)启动journalnode

  hdfs start journalnode     

3.在[hadoop1]上,对其进行格式化

hdfs namenode -format

 4.在hadoop2上同步元数据

hdfs namenode -bootstrapStandby

 5.启动Zookeeper

# 启动zookeeper
/export/servers/zookeeper/bin/zhServer.sh start
# 验证集群状态
/export/servers/zookeeper/bin/zhServer.sh status

输出Mode:leader或Mode:follwer 表示集群正常运行

6.启动HDFS服务和启动YARN服务

# 启动hdfs服务
start-dfs.sh
# 启动yarn服务
start-yarn.sh

7.验证

jps

 

 

 五、恢复到原来Hadoop集群

1.关闭所有服务

2.修改环境变量

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/hadoop
# 保存退出:
:wq
#初始化环境变量
source /etc/profile

3.分发环境变量

#将系统环境变量文件分发至虚拟机Hadoop2的/etc目录
scp /etc/profile root@hadoop2:/etc 
#将系统环境变量文件分发至虚拟机Hadoop3的/etc目录
scp /etc/profile root@hadoop3:/etc 
# 分别在hadoop2和hadoop3中初始化环境变量
source /etc/profile 
# 每台节点一定要验证
echo $HADOOP_HOME

 3.每台节点都需要删除/tmp/*

sudo rm -rf /tmp/*

4.启动原集群:

start-all.sh

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910384.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910384.shtml
英文地址,请注明出处:http://en.pswp.cn/news/910384.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 CAN位同步、错误处理

一、接收方数据采样 CAN总线没有时钟线&#xff0c;总线上的所有设备通过约定波特率的方式确定每一个数据位的时长发送方以约定的位时长每隔固定时间输出一个数据位接收方以约定的位时长每隔固定时间采样总线的电平&#xff0c;输入一个数据位理想状态下&#xff0c;接收方能依…

django serializer __all__中 额外添加外键里的某一个属性

在Django中使用序列化器&#xff08;Serializer&#xff09;时&#xff0c;你可能会遇到需要将模型&#xff08;Model&#xff09;中的外键字段转换成其关联对象的一部分属性的情况。默认情况下&#xff0c;序列化器会自动序列化外键字段&#xff0c;但如果你想要在序列化结果中…

Redis快的原因

Redis 高性能的核心原因 Redis 之所以能达到极高的性能&#xff08;10万 QPS&#xff09;&#xff0c;主要源于以下几个关键设计&#xff1a; 1. 纯内存操作 核心优势&#xff1a;所有数据存储在内存中&#xff0c;避免了磁盘 I/O 瓶颈 内存访问速度比磁盘快 10万倍以上&am…

【大模型微调】6.模型微调实测与格式转换导出

引言 本文继续研究 LLaMA-Factory 微调数据的流程&#xff0c;侧重于微调结果与模型导出。 数据集准备 首先参考 LLaMA-Factory 核心开发者的文章[1]&#xff0c;下载用于微调的公开的商品文案数据集 AdvertiseGen。 下载地址&#xff1a;https%3A//cloud.tsinghua.edu.cn/…

3085. 成为 K 特殊字符串需要删除的最少字符数

3085. 成为 K 特殊字符串需要删除的最少字符数 给你一个字符串 word 和一个整数 k。 如果 |freq(word[i]) - freq(word[j])| < k 对于字符串中所有下标 i 和 j 都成立&#xff0c;则认为 word 是 k 特殊字符串。 此处&#xff0c;freq(x) 表示字符 x 在 word 中的出现频…

分布式系统中的 Kafka:流量削峰与异步解耦(二)

Kafka 在分布式系统中的应用案例 电商订单系统 在电商领域&#xff0c;订单系统是核心业务模块之一&#xff0c;涉及多个复杂的业务环节和系统组件之间的交互。以常见的电商购物流程为例&#xff0c;当用户在电商平台上下单后&#xff0c;订单创建服务会首先接收到用户的订单…

从事登高架设作业需要注意哪些安全事项?

从事登高架设作业&#xff08;如脚手架搭设、高空维修、外墙清洗等&#xff09;属于高风险特种作业&#xff0c;必须严格遵守安全规范。以下是关键安全注意事项&#xff0c;涵盖作业前准备、作业中操作、应急处理三大环节&#xff0c;符合国家《高处作业安全技术规范》&#xf…

RA4M2开发IOT(6)----涂鸦模组快速上云

RA4M2开发IOT.6--涂鸦模组快速上云 概述视频教学样品申请硬件准备参考程序涂鸦官网链接创建一个项目选择对应产品产品基本配置添加标准功能APP界面配置硬件选择产品配置硬件详情PCB原理图涂鸦调试文件下载进入调试涂鸦模块串口协议心跳检测查询产品信息查询工作模式AP配网APP链…

AI时代SEO关键词革新

内容概要 在人工智能&#xff08;AI&#xff09;技术快速发展的背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;关键词策略正经历根本性变革。本文将系统阐述AI如何重塑关键词研究、优化及效果评估的全流程。具体而言&#xff0c;首先解析智能研究方法在挖掘用户意…

JavaEE初阶第三期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(一)

专栏&#xff1a;JavaEE初阶起飞计划 个人主页&#xff1a;手握风云 目录 一、认识线程 1.1. 概念 1.2. 为什么要使用线程 1.3. 进程和线程的关系 1.4. 多线程模型 二、多线程的创建 2.1. 继承Thread类 2.2. 实现Runnable接口 2.3. 匿名内部类 2.4. lambda表达式 一、…

【StarRocks系列】建表优化

目录 一、数据模型选择 (核心优化) 二、分区与分桶策略 (数据分布优化) 三、字段类型与压缩 四、索引策略 五、高级特性应用 六、建表示例&#xff08;关键优化整合&#xff09; 参考官网 优化性能 | StarRocks 在 StarRocks 中创建表时&#xff0c;合理的表设计是性能优…

linux-vim编辑器

linux-vim编辑器 前言一、命令模式1. 跳转功能2. 文本编辑3. 模式切换 二、输入模式1. 进入输入模式2. 快捷键 三、末行模式1. 进入末行模式2. 文件操作3. 查找与替换4. 行操作 四、替换模式五、可视模式1. 进入可视模式2. 文本操作 六、相关配置 前言 vim - Vi IMproved, a p…

SQL关键字三分钟入门: 表结构管理与分区设计。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)

前面我们已经学习了如何查询数据&#xff08;SELECT&#xff09;、筛选数据&#xff08;WHERE&#xff09;等操作。现在我们要进入数据库的另一个重要领域 —— 表结构管理与分区设计。 本文带你快速认识以下关键字&#xff1a; ✅ ALTER✅ MODIFY✅ CHANGE✅ DEFAULT✅ VALU…

深度剖析:RTTI轻量框架实现原理与架构(C++ 17 高级编程)

&#x1f680; C RTTI反射系统深度设计文档 &#x1f30c; 核心架构图 #mermaid-svg-aWkaWoFklq1ylap6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aWkaWoFklq1ylap6 .error-icon{fill:#552222;}#mermaid-svg-a…

03-D3.js SVG text标签​

Data Visualization D3.js • SuperHiLearn how to create interactive, engaging experiences using HTML, CSS, SVG and Javascript.https://www.superhi.com/catalog/data-visualization-with-d3 text - SVG&#xff1a;可缩放矢量图形 | MDNtext元素定义了一个由文字组成…

Python 使用Gitlab Api

代码 REST API 见自带帮助文档 python 安装python-gitlab pip install --upgrade python-gitlab使用API 参考&#xff1a;https://python-gitlab.readthedocs.io/en/stable/api-usage.html import gitlab# anonymous read-only access for public resources (GitLab.com…

中医体质识别:理论、方法与应用的简要综述

中医体质识别&#xff1a;理论、方法与应用的简要综述 摘要 中医体质识别是中医“治未病”及个性化诊疗的关键环节。本文系统阐述中医体质识别&#xff0c;涵盖理论基础、常见体质类型、识别方法、现代技术应用及临床实践。中医体质理论源远流长&#xff0c;《黄帝内经》奠定…

稀疏表原理及应用场景

1 概述 稀疏表&#xff08;Sparse Table&#xff0c;ST&#xff09;是一种用于高效解决 静态区间查询&#xff08;Range Query&#xff09; 问题的数据结构&#xff0c;主要用于 可重复贡献问题&#xff08;Idempotent Range Queries&#xff09;&#xff0c;例如区间最小值&a…

【深度学习与机器学习的区别】从本质到应用的全景对比

目录 前言 一、三者关系&#xff1a;深度学习是机器学习的子集 1.1 概念关系 1.2 类比理解&#xff1a;动物 vs 哺乳动物 1.3 举个例子更清楚 1.4 为什么“机器学习 ≠ 深度学习”&#xff1f; 1.5 最容易搞混的地方 二、核心区别总览&#xff08;对比表&#xff09; …

Masscan常用命令详解

一、工具介绍 Masscan是一款开源、高速的网络端口扫描工具&#xff0c;设计目标是实现最快的扫描速度。它能够在极短的时间内完成大规模的网络扫描&#xff0c;适用于互联网级别的扫描任务。它采用异步传输和自定义TCP/IP协议栈技术&#xff0c;最快可实现每秒160万数据包的扫…