当前位置: 首页 > news >正文

Hadoop集群的高可用(HA):NameNode和resourcemanager高可用的搭建

文章目录

  • 一、NameNode高可用的搭建
    • 1、免密配置
    • 2、三个节点都需要安装psmisc
    • 3、检查三个节点是否都安装jdk以及zk
    • 4、检查是否安装了hadoop集群
    • 5、修改hadoop-env.sh
    • 6、修改core-site.xml
    • 7、修改hdfs-site.xml
    • 8、检查workers 文件是否为三台服务
    • 9、分发给其他两个节点
    • 10、初始化ZKFC在zk中的Znode信息
    • 11、在三台服务器上启动journalnode
    • 12、对集群进行namenode的格式化
    • 13、启动hdfs
    • 14、启动第二个namenode
    • 15、第二次只需要正常启动zk和hadoop即可
  • 二、resourcemanager高可用搭建
    • 1、检查mapred-site.xml
    • 2、修改yarn-site.xml
    • 3、分发
    • 4、启动yarn
    • 5、查看是否配置成功
    • 6、遇到的问题


一、NameNode高可用的搭建

1、免密配置

2、三个节点都需要安装psmisc

yum install -y psmisc

3、检查三个节点是否都安装jdk以及zk

4、检查是否安装了hadoop集群

如果以前安装过了,则需要清空数据:

1.先停止集群:

stop-all.sh

2.清理集群中的data数据:

rm -rf /opt/installs/hadoop/tmp/ /opt/installs/hadoop/logs/

5、修改hadoop-env.sh

export JAVA_HOME=/opt/installs/jdk/ export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=rootexport HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

6、修改core-site.xml

<!--覆盖-->
<configuration><!--hdfs入口,设置虚拟地址,具体地址后面配置--><property><name>fs.defaultFS</name><value>hdfs://hdfs-cluster</value></property><!--hdfs集群的文件位置--><property><name>hadoop.tmp.dir</name><value>/opt/installs/hadoop/tmp</value></property><!--hdfs要访问zookeeper集群--><property><name>ha.zookeeper.quorum</name><value>node01:2181,node02:2181,node03:2181</value></property>
</configuration>

7、修改hdfs-site.xml

<!--覆盖-->
<configuration><!-- 副本数 --><property><name>dfs.replication</name><value>3</value></property><!-- 定义dhfs入口的命名服务 --><property><name>dfs.nameservices</name><value>hdfs-cluster</value></property><!-- 定义hdfs入口的命名服务下虚拟ip--><property><name>dfs.ha.namenodes.hdfs-cluster</name><value>nn1,nn2</value></property><!-- 虚拟ip地址1 RPC入口 --><property><name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name><value>node01:9820</value></property><!-- 虚拟ip地址1 HTTP入口 --><property><name>dfs.namenode.http-address.hdfs-cluster.nn1</name><value>node01:9870</value></property><!-- 虚拟ip地址2 PRC入口 --><property><name>dfs.namenode.rpc-address.hdfs-cluster.nn2</name><value>node02:9820</value></property><!-- 虚拟ip地址1 HTTP入口 --><property><name>dfs.namenode.http-address.hdfs-cluster.nn2</name><value>node02:9870</value></property><!-- 定义QJN在linux中保存文件磁盘目录 --><property><!-- Journal Edit Files 的存储目录:() --><name>dfs.journalnode.edits.dir</name><value>/opt/installs/journalnode/data/</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node01:8485;node02:8485;node03:8485/hdfs-cluster</value></property><!-- 是否开启故障切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 基于zookeeper的故障切换的代码类 --><property><name>dfs.client.failover.proxy.provider.hdfs-cluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 远程杀死namenode方式(防止namenode假死,导致双主出现) --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 指定私钥的文件目录,使用免密登录杀死NN进程 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 可以在hdfs上点击结果查看--><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
</configuration>

8、检查workers 文件是否为三台服务

9、分发给其他两个节点

分发脚本编写地址:脚本编写链接

cd /opt/installs/hadoop/etc/hadoopxsync.sh hadoop-env.sh core-site.xml hdfs-site.xml

10、初始化ZKFC在zk中的Znode信息

1.先启动zk

zk.sh start

2.在主节点进行即可

hdfs zkfc -formatZK

11、在三台服务器上启动journalnode

hadoop-daemon.sh start journalnode

12、对集群进行namenode的格式化

hdfs namenode -format

13、启动hdfs

14、启动第二个namenode

1.第一次需要运行如下命令,以后不需要:

hdfs namenode -bootstrapStandby

2.接着,启动第二个namenode:

hadoop-daemon.sh start namenode

15、第二次只需要正常启动zk和hadoop即可

需要先启动zk,再启动hadoop
namenode的web界面:node01:9870

二、resourcemanager高可用搭建

1、检查mapred-site.xml

里面只有yarn配置和historyServer的配置,不需要修改

2、修改yarn-site.xml

以前配置的yarn以及日志服务的配置不动,添加ha的相关配置即可:

<configuration><!--配置resourcemanager的HA--><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- RM 集群标识 --><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-cluster</value></property> <!-- RM 的逻辑 ID 列表 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property> <!-- RM1 的主机地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>node01</value></property><!-- RM1 的主机web管理界面地址 --> <property><name>yarn.resourcemanager.webapp.address.rm1</name><value>node01:8088</value></property><!-- RM2 的主机地址 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>node02</value></property> <!-- RM2 的主机web管理界面地址 -->  <property><name>yarn.resourcemanager.webapp.address.rm2</name><value>node02:8088</value></property><!-- ZooKeeper 集群的地址 -->  <property><name>yarn.resourcemanager.zk-address</name><value>node01:2181,node02:2181,node03:2181</value></property> <!-- 启用自动恢复 --> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property> <!-- 用于yarn故障转移持久化zk的类 --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property> <!-- 关闭虚拟内存检查 -->
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property></configuration>

3、分发

cd /opt/installs/hadoop/etc/hadoop/# 只需要同步一个,因为另一个根本没有修改。
xsync.sh yarn-site.xml

4、启动yarn

5、查看是否配置成功

yarn rmadmin -getAllServiceState

resourcemanager的web界面:node01:8088

6、遇到的问题

假如你在启动过程中,发现resourcemanager有两个,但是都是standby,有可能是版本兼容问题:
hadoop3.1.6 需要兼容 zookeeper 3.4.10 hadoop3.3.1 需要兼容 zookeeper 3.6.4 ,否则就会有问题。
namenode 高可用没问题,resourcemanager的高可用有问题。

相关文章:

Hadoop集群的高可用(HA):NameNode和resourcemanager高可用的搭建

文章目录 一、NameNode高可用的搭建1、免密配置2、三个节点都需要安装psmisc3、检查三个节点是否都安装jdk以及zk4、检查是否安装了hadoop集群5、修改hadoop-env.sh6、修改core-site.xml7、修改hdfs-site.xml8、检查workers 文件是否为三台服务9、分发给其他两个节点10、初始化…...

支付宝沙箱环境 支付

一 什么是沙箱&#xff1a; 沙箱环境是支付宝开放平台为开发者提供的安全低门槛的测试环境 支付宝正式和沙箱环境的区别 &#xff1a; AI&#xff1a; 从沙箱到正式环境&#xff1a; 当应用程序开发完成后&#xff0c;需要将应用程序从沙箱环境迁移到正式环境。 这通常涉及…...

获取unity中prefab的中文文本内容以及和prefab有关的问题

背景1&#xff1a;经常会在开发中遇到策划需要改某个界面&#xff0c;但是我们不知道那是什么界面&#xff0c;只看到一些关键字比如圣诞活动&#xff0c;那这样我就可以轻易找到这个预设了。另外还可以扩展就是收集项目中的所有中文文本然后归集到多语言表中&#xff0c;然后接…...

Web自动化中常用XPath定位方式

在进行Web自动化测试时&#xff0c;元素定位是一个至关重要的环节。XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位节点的语言。在Web自动化中&#xff0c;XPath广泛应用于定位HTML元素。本文将详细介绍几种常用的XPath定位方式&#xff0c;包括绝对…...

Unity3D播放GIF图片使用Animation来制作动画

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、下载GIF动图,用PS制作导出帧动画图片👉二、使用Animation制作动画👉三、脚本控制动画播放👉壁纸分享👉总结👉前言 unity播放gif图片,本身是不支持的,但是可以使用其他方法来实现, 1.有一种使用System…...

redo log 和 bin log 的两阶段提交

两阶段提交的过程 当事务提交后&#xff0c;有一个两阶段提交策略。 在开启两阶段提交时&#xff0c;会开启一个 XA 事务&#xff08;宏观上的事务&#xff09;&#xff0c; Prepare 阶段&#xff1a;将 redo log 的状态设置为 prepare&#xff0c;然后将 事务XID 写入 redo…...

Go基础学习07-map注意事项;多协程对map的资源竞争;sync.Mutex避免竟态条件

文章目录 Go中map使用以及注意事项map使用时的并发安全问题 Go中map使用以及注意事项 Go语言中map使用简单示例&#xff1a; func main() {var mp map[string]int// mp : map[string]int{}val, ok : mp["one"]if ok {fmt.Println(val)} else {fmt.Println(val)}mp[…...

远程服务器安装anaconda并创建虚拟环境

1、承接上文新用户zrcs&#xff0c;在服务器的zrcs文件夹下直接下载anaconda&#xff08;很慢&#xff09;&#xff1a; wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 或者选择本地下载&#xff0c;清华大学开源软件镜像站&#xff1a;https:/…...

什么是IIC通信协议?

IIC&#xff08;Inter-Integrated Circuit&#xff09;通信协议&#xff0c;又称为I2C&#xff08;Inter-Integrated Circuit 2&#xff09;协议&#xff0c;是一种广泛使用的串行通信协议。它由飞利浦半导体公司&#xff08;现NXP Semiconductors&#xff09;开发&#xff0c;…...

P3131 [USACO16JAN] Subsequences Summing to Sevens S Python题解

[USACO16JAN] Subsequences Summing to Sevens S 题目描述 Farmer John’s N N N cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to ta…...

鸿蒙NEXT开发-ArkUI(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

Matplotlib 使用 LaTeX 渲染图表中的文本、标题和数学公式

Matplotlib 使用 LaTeX 渲染图表中的文本、标题和数学公式 Matplotlib 是一个功能强大的 Python 库&#xff0c;用于绘制各种高质量的图表和图形。在许多科研和技术文档中&#xff0c;数学公式是不可或缺的一部分&#xff0c;LaTeX 提供了精美的数学公式渲染能力。Matplotlib …...

Android 安卓内存安全漏洞数量大幅下降的原因

谷歌决定使用内存安全的编程语言 Rust 向 Android 代码库中写入新代码&#xff0c;尽管旧代码&#xff08;用 C/C 编写&#xff09;没有被重写&#xff0c;但内存安全漏洞却大幅减少。 Android 代码库中每年发现的内存安全漏洞数量&#xff08;来源&#xff1a;谷歌&#xff09…...

c++primier第十二章类和动态内存

本章内容包括&#xff1a; 对类成员使用动态内存分配隐式和显式地复制构造函数隐式和显式地重载赋值操作符在构造函数中使用new所必须完成的工作使用静态类成员 将布局new操作符用于对象使用指向对象的指针实现队列抽象数据类型(ADT) 动态内存和类 复习范例和静态类成员 首…...

Ansible学习之ansible-pull命令

想要知道ansible-pull是用来做什么的&#xff0c;就需要了解Ansible的工作模&#xff0c;Ansible的工作模式有两种&#xff1a; push模式 push推送&#xff0c;这是Ansible的默认模式&#xff0c;在主控机上编排好playbook文件&#xff0c;push到远程主机上来执行。pull模式 p…...

Linux:磁盘管理

一、静态分区管理 静态的分区方法不可以动态的增加或减少分区的容量。 1、磁盘分区-fdisk 该命令是用于查看磁盘分区情况&#xff0c;和分区管理的命令 命令格式&#xff1a;fdisk [选项] 设备文件名常用命令&#xff1a; -h&#xff1a;查看分区信息 fdisk系统常用命令&…...

FP7209: 用于紫外线消毒灯的 升压LED恒流驱动芯片

现在社会对于居家消毒也越发重视起来。而居家消毒除了75%浓度酒精及各类消毒液外&#xff0c;利用紫外线灯给衣物表面、房间消毒也是一种很好的选择。FP7209 定位于低压线性恒流驱动&#xff0c;精度高、外围电路简单、使用方便且可靠性高&#xff0c;更可广泛应用于商业照明系…...

【华为HCIP实战课程二】OSPF基础介绍和OSPF RID NBMA配置详解

一、OSPF多区域 自治系统(Autonomous System) 一个自治系统是指使用同一种路由协议交换路由信息的一组路由器 1、Area0为骨干区域 2、ABR--关乎3类LSA后续详解 ABR用来连接骨干区域Area0和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 3、AS…...

网络编程(13)——单例模式

十三、day13 今天学习如何单例模式实现逻辑层的设计。内容包括服务器如何能捕获信号使其安全退出、单例模标类 1. 什么是单例模式&#xff1f; 单例模式&#xff08;Singleton&#xff09;&#xff0c;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点&…...

基于定制开发与2+1链动模式的商城小程序搭建策略

摘要&#xff1a;本文探讨商城小程序的搭建策略&#xff0c;对比自主组建团队和第三方开发两种方式&#xff0c;强调以第三方开发模式为主的优势。阐述在第三方开发模式下&#xff0c;结合定制开发和21链动模式&#xff0c;如何搭建一款有助于企业商业模式创新与智能商业升级的…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...