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

Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦

文章目录

  • 背景
  • 架构
  • HDFS HA配置
  • 错误原因
  • 解决方案
    • 方案一
    • 方案二
    • 方案三(首先查看自己各参数文件是否配置出错)
  • 后记
  • 补充
    • failover
    • transitionToActive
  • 常用端口号及配置文件
    • 常用端口号
      • hadoop3.x
      • hadoop2.x
    • 常用配置文件

这里说一下配置Hadoop HA集群可能出现的两种情况,第一种就是两个NameNode都是standby,第二种就是主Master是standby,从Master是active。

背景

针对Hadoop 1.x中可能出现的NameNode单点故障(SPOF)或者短时间无法使用的情况,Hadoop 2.x 通过增加一个NameNode的方式进行了改善,而增加一个NameNode后,实际在没有出现问题时,只需要一个NameNode,所以两个NameNode一个处于Standby状态,一个处于Active状态。Standby不对外提供服务,仅同步Active NameNode的状态,以便Active NameNode出现问题时及时切换成Active状态。

架构

Hadoop 2.x 的两个NameNode一般会配置在两台独立的机器上,Active NameNode会响应集群客户端,而Standby NameNode只是作为Active NameNode的备份,保证在Active NameNode出现问题时能够快速的替代它。

Standby NameNode通过JournalNodes的通信来与Active NameNode保持同步。

Active NameNode和Standby NameNode在哪个节点上,是由zookeeper通过主备选举机制来确定的。

HDFS HA配置

NameNode:对应配置相同的两台物理机,分别运行Active NameNode和Standby NameNode。

JournalNode:JournalNode不会耗费太多的资源,可以和其它进程部署在一起,如NameNode、Datanode、ResourceManager等,需要至少3个且为基数,这样可以允许(N-1)/2个JNS进程失败。

DataNode:根据数据量的大小和处理数据所需资源进行配置,一般实际应用中数量较多,且分布在较多的机器上。

NameNode和SecondaryNameNode不要安装在同一台服务器

ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode放在同一台机器上。

通过hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2命令查看,发现两个NameNode的状态都是standby
通过hdfs dfsadmin -report命令查看,发现HDFS数据均为0

错误原因

当首次执行命令hadoop namenode -format格式化NameNode时,会在dfs.namenode.name.dir对应路径下生成current/VERSION文件,其中记录了clusterID,同时dfs.datanode.data.dir对应的DataNode目录中也会生成current/VERSION文件,其中clustreID的与NameNode中clusterID的值相同。
当再次执行hadoop namenode -format命令时,NameNode对应的目录下会重新生成clusterID,导致和DataNode对应的clusterID不一致,从而造成上述问题。

解决方案

方案一

  1. 关掉集群
./stop-dfs.sh
  1. 删掉各个节点上DataNode对应的目录
rm -rf data
  1. 格式化NameNode
hadoop namenode -format
  1. 重启集群
./start-dfs.sh

方案二

  1. 关掉集群
./stop-dfs.sh
  1. 编辑clusterID使Namenode和DataNode同步
vim clusterID
  1. 重启集群
./start-dfs.sh

注意:
在生产环境中,谨慎使用hadoop namenode -format命令。以上操作是在首次搭建集群时且没有重要数据的情况下执行的。

hdfs haadmin -transitionToActive nn1

方案三(首先查看自己各参数文件是否配置出错)

1、首先在hdfs-site.xml中添加下面的参数,该参数的值默认为false:

<property><name>dfs.ha.automatic-failover.enabled.ns</name><value>true</value>
</property>

2、在core-site.xml文件中添加下面的参数,该参数的值为ZooKeeper服务器的地址,ZKFC将使用该地址。

<property><name>ha.zookeeper.quorum<name><value>spark01.kfk.com:2181,spark02.kfk.com:2181,spark03.kfk.com:2181<value>
<property>

首先你要确定不用ha的时候你的hadoop集群是正常的,不然找错误的方向就偏离了

配置HA 需要zookeeper,先要看看是不是zookeeper没有配置好的问题

如果都正常,在hadoop安装目录执行sbin/hadoop-daemon.sh start zkfc,这句是启动zookeeper选举制度,然后执行 hdfs haadmin -transitionToActive nn1 ,其中nn1是你的namenode中的一个(如果是新配置的HAhadoop集群,可能是zkfc(DFSZKFailoverController)没有格式化导致namenode节点的自动切换机制没有开启)

在HA或者HDFS中,上面的两个参数还需要以NameServiceID为后缀,比如dfs.ha.automatic-failover.enabled.mycluster。除了上面的两个参数外,还有其它几个参数用于自动故障转移,比如ha.zookeeper.session-timeout.ms,但对于大多数安装来说都不是必须的。

在添加了上述的配置参数后,下一步就是在ZooKeeper中初始化要求的状态,可以在任一NameNode中运行hdfs zkfc -formatZK命令实现该目的,该命令在ZooKeeper中创建znode

执行该命令需要进入Hadoop的安装目录下面的bin目录中找到hdfs这个命令,输入上面的命令执行,然后就可以修复这个问题了。

注意:之前,先得启动好每台机器的zookeeper进程。

后记

对于hdfs的一些命令,不熟悉的情况下,可以先用以下的命令查看。

hdfs -help  查看命令
hdfs haadmin -help 

这里记录一下常用的命令

hdfs haadmin -getAllServiceState   查询所有NN的服务状态
hdfs haadmin -transitionToActive nn1 开启nn1为active状态
hdfs haadmin -transitionToActive nn2 开启nn2为active状态
hdfs haadmin -transitionToStandby nn1 开启nn1为standby状态
hdfs haadmin -failover nn1 nn2   手动执行故障转移
hadoop-daemon.sh start namenode 启动 namemode进程
kill -9 namenode进程号    使namenode进程挂掉
yarn rmadmin -getServiceState rm1  查看resourcemanager节点状态
hdfs --daemon start/stop namenode/datanode/secondarynamenode   分别启动/停止HDFS组件
yarn --daemon start/stop resourcemanager/nodemanager    启动/停止YARN

注意,其实hdfs自带的命令里,都提供了,若两者都是standby状态怎么执行。若两者都是active状态怎么执行。这里,不多赘述。

补充

failover

切换NameNode的主备状态,一般推荐用此方式来切换主备

执行hdfs haadmin -failover <serviceId of current active> <serviceId of new active>命令,切换NameNode的主备状态。

例如:
nn1当前是Active NameNode,想让nn2成为新的Active NameNode,可执行以下命令。

haadmin -getAllServiceState 
hdfs haadmin -failover nn2 nn1  将 nn1 变为 主

如果nn2当前已是Active NameNode,执行以下命令后,nn2仍为新的Active NameNode。

haadmin -getAllServiceState 
hdfs haadmin -failover nn1 nn2  将 nn2 变为 主

transitionToActive

将给定的NameNode切换成主,不会做fencing(和failover有区别的点)

当开启了故障自动切换failover(dfs.ha.automatic-failover.enabled=true)之后,无法手动进行。想要 transitionToActive 切换主,就需要 带上 强制手动的标志 --forcemanual

hdfs haadmin -transitionToActive nn1

此时 nn1: standby nn2: active

hdfs haadmin -getAllServiceState
hdfs haadmin -transitionToActive --forcemanual nn1

此时提示的是 nn2 已经是 active,切换不起作用

当active节点正常时,使用hdfs haadmin -transitionToActive命令对两个namenode节点切换都不起作用.

此时试试将 active 状态切换成 standby

hdfs haadmin -getAllServiceState
hdfs haadmin -transitionToStandby --forcemanual nn2
hdfs haadmin -getAllServiceState

此时提示的是 nn2 已经是 standby,切换生效

当active节点正常时,执行hdfs haadmin -transitionToStandby命令可以将active的namenode节点转换成standby状态。

常用端口号及配置文件

常用端口号

hadoop3.x

  • HDFS NameNode 内部通常端口:8020/9000/9820

  • HDFS NameNode 用户查询端口:9870

  • Yarn查看任务运行情况:8088

  • 历史服务器:19888

hadoop2.x

  • HDFS NameNode 内部通常端口:8020/9000

  • HDFS NameNode 用户查询端口:50070

  • Yarn查看任务运行情况:8088

  • 历史服务器:19888

常用配置文件

  • 3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers

  • 2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml slaves

转载自 :https://blog.csdn.net/u014727709/article/details/131194566
欢迎start,欢迎评论,欢迎指正

相关文章:

Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦

文章目录 背景架构HDFS HA配置错误原因解决方案方案一方案二方案三&#xff08;首先查看自己各参数文件是否配置出错&#xff09; 后记补充failovertransitionToActive 常用端口号及配置文件常用端口号hadoop3.xhadoop2.x 常用配置文件 这里说一下配置Hadoop HA集群可能出现的两…...

[Go版]算法通关村第十一关白银——位运算的高频算法题

目录 专题1&#xff1a;位移的妙用题目&#xff1a;位1的个数&#xff08;也被称为汉明重量&#xff09;解法1&#xff1a;遍历所有位&#xff0c;判断每个位的数字是否是1Go代码 解法2&#xff1a;依次消除每个1的位 numnum&(num-1)Go代码 题目&#xff1a;比特位计数思路…...

Swift 基础

工程目录 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 点击下载代码&#xff1a;swift-01...

IDEA的常用设置,让你更快速的编程

一、前言 在使用JetBrains的IntelliJ IDEA进行软件开发时&#xff0c;了解和正确配置一些常用设置是非常重要的。IDEA的强大功能和定制性使得开发过程更加高效和舒适。 在本文中&#xff0c;我们将介绍一些常用的IDEA设置&#xff0c;帮助您更好地利用IDEA进行开发。这些设置包…...

docker 镜像的导出与导入 save 与 load

一、镜像导出 docker save 导出 将系统中的镜像保存为压缩包&#xff0c;进行文件传输。使用 docker save --help 查看命令各参数&#xff0c;或者去docker官网查看.以 hello-world镜像为例。 A&#xff1a;将镜像保存为tar包 docker save image > package.tar docker sa…...

WPF显示初始界面--SplashScreen

WPF显示初始界面–SplashScreen 前言 WPF应用程序的运行速度快&#xff0c;但并不能在瞬间启动。当第一次启动应用程序时&#xff0c;会有一些延迟&#xff0c;因为公共语言运行时&#xff08;CLR&#xff09;首先需要初始化.NET环境&#xff0c;然后启动应用程序。 对于WPF中…...

08- AD/DA模/数转换

AD/DA模/数转换 8、AD/DA模/数转换8.1 AD转换注意 示例8.2 DA转换DAC转换原理&#xff1a; 8.3 PWM的DAC 8、AD/DA模/数转换 8.1 AD转换 通道引脚对照表&#xff1a; ADC的引脚&#xff1a; 规则通道和注入通道&#xff1a; 各个通道可以在单次、连续、扫描或者间断模式里…...

DTC服务(0x14 0x19 0x85)

DTC相关的服务有ReadDTCInformation (19) service&#xff0c;ControlDTCSetting (85) service和ReadDTCInformation (19) service ReadDTCInformation (19) service 该服务允许客户端从车辆内任意一台服务器或一组服务器中读取驻留在服务器中的诊断故障代码( DTC )信息的状态…...

【国护攻防场景下的沙箱技术对比】

目录 前言 沙箱技术分析 总结 前言 真高兴呀&#xff0c;又是受到红队大佬青睐的一天&#xff0c;今天下午很荣幸的收到了来自红队大佬的恶意投喂&#xff0c;把我们各位在座100年工作经验的蓝队师傅们吓得赶忙拔掉自己的电脑电源&#xff0c;断掉自己的网线&#xff0c;…...

springboot综合案例第三课

SpringSecurity入门 什么是SpringSecurity Spring Security 的前身是 Acegi Security &#xff0c;是 Spring 项目组中用来提供安全认证服务的框架。 (https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使…...

面试经典150题——罗马数字转整数

罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…...

第三篇|金融人数据来源有哪些

数据对于金融行业真的很重要&#xff0c;那么金融人有哪些途径查数据呢&#xff1f; 国内&#xff1a; 1. 国家统计局 这个应该是无论什么行业都使用最频繁的网站&#xff0c;每个月都会固定发上个月资产投资数据 、工业增加值和利润数据等常规数据&#xff0c;其他数据也会…...

爬虫逆向实战(二)--某某观察城市排行榜

一、数据接口分析 主页地址&#xff1a;某某观察 1、抓包 通过抓包可以发现数据接口是multi 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无cookie是否加密&#xff1f; 无响应数据是否加密&#xff1f; 通过查看“响应”板块可以…...

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter&#xff0c;他的原理大概就是启动一个kafka客户端&#xff0c;获取kafka服务器的信息&#xff0c;然后提供一些metric接口供Prometheus使用&#xff0c;随意它…...

发布游戏,进行打包。(Unity)

做到这里&#xff0c;我们的项目基本功能已经完成了&#xff0c;如果你还想使项目功能更加完善&#xff0c;可以自己思考如何补充&#xff0c;充分发挥并进行优化使效果达到更加美好。 首先呢&#xff0c;我们这里是说打包Window电脑游戏&#xff0c;我们直接点击菜单栏文件-&…...

我的C++待办事项

2023年8月17日 内存管理部分 学习智能指针 写一篇关于怎么在Linux中安装和使用vclgrind的博客&#xff08;2023年8月17日下午完成&#xff09; 拍一个关于在Linux中安装和使用vclgrind的视频 在Windows上怎么检测内存泄漏 怎么使用Address Sanitizer 在Linux上如何使用gc…...

浙大数据结构第七周之Saving James Bond - Hard Version

题目详情&#xff1a; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake f…...

线程同步条件变量

为何要线程同步 在线程互斥中外面解决了多线程访问共享资源所会造成的问题。 这篇文章主要是解决当多线程互斥后引发的新的问题&#xff1a;线程饥饿的问题。 什么是线程饥饿&#xff1f;互斥导致了多线程对临界区访问只能改变为串行&#xff0c;这样访问临界资源的代码只能…...

jeecgboot-vue3 查询区 label 文字居左实现

以系统管理中的系统角色界面为例 操作步骤 1. 通过路由或者工具找到当前代码所在的文件 src/views/system/role/index.vue 2. 找到 useListPage 调用&#xff0c;fromConfig 对象加入 labelWidth 和 rowProps 属性 formConfig: {labelWidth: 65, // 设置所有的label宽rowPr…...

CentOS系统环境搭建(五)——Centos7安装maven

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装maven 下载压缩包 maven下载官网 解压 压缩包放置到/usr/local tar -xvf apache-maven-3.9.2-bin.tar.gz配置环境变量 vim /etc/profile在最下面追加 MAVEN_HOME/usr/local/apache-maven-3.9.2 export PATH${MAV…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)

一、题目解析 对于递归方法的前序遍历十分简单&#xff0c;但对于一位合格的程序猿而言&#xff0c;需要掌握将递归转化为非递归的能力&#xff0c;毕竟递归调用的时候会调用大量的栈帧&#xff0c;存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧&#xff0c;而非…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符&#xff0c;最后运行&#xff1a;npm run lint --fix...