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

这篇具有很好参考价值的文章主要介绍了Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


这里说一下配置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,欢迎评论,欢迎指正文章来源地址https://www.toymoban.com/news/detail-654445.html

到了这里,关于Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Couldn‘t create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverPro

    问题1:Couldn’t create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverPro hadoop处于ha高可用模式了 需要将高可用环境下的hdfs-site.xml文件复制到idea的resource下,特别是其中的 问题2:Class org.apache.hadoop.hdfs.DistributedFileSystem not found idea中需要加入hadoop-client的依赖,尤

    2024年02月16日
    浏览(29)
  • hadoop HA高可用集群实战

    HA(high available),即高可用(24h不中断服务) 实现高可用最关键的策略是消除单点故障。HA严格来说是应该分成各个组件的HA机制 hadoop2.0之前,在HDFS集群中NamNode存在单点故障(SPOF) NameNode主要存在以下两个方敏影响HDFS集群。 NameNode机器发生意外,如宕机,集群无法使用,

    2024年02月01日
    浏览(37)
  • Hadoop高可用(HA)集群搭建

    高可用(high availability,HA)指的是若当前工作中的机器宕机了,系统会自动处理异常,并将工作无缝地转移到其他备用机器上,以保证服务的高可靠性与可用性。 而Zookeeper是一个分布式协调服务, Zookeeper即可用来保证Hadoop集群的高可用性 。通过zookeeper集群与Hadoop2.X中的两个

    2024年02月16日
    浏览(28)
  • Hadoop集群配置问题—小记jps没有NameNode的问题

    本人Hadoop集群部署如下: hadoop102 hadoop103 hadoop104 HDFS NameNode DataNode SecondaryNameNode DataNode DataNode Yarn NodeManager ResourceManager NodeManager NodeManager   问题:当格式化NameNode后,启动hdfs。发现jps后没有显示NameNode。 解决方法:          1、先关闭各节点的运行                 在h

    2023年04月11日
    浏览(41)
  • Hadoop集群当中主节点的NameNode进程启动不成功

    原因: 是因为多次格式化NameNode的原因,每次格式化NameNode的时候,hadoop集群就会产生一个新的集群ID,导致了NameNode和DataNode的集群ID不一致,所以导致运行start-all.sh后,hadoop的NameNode进程启动不起来。 现在作者附上两种解决方法,我是使用了第二种方法成功的。 在hadoop集群

    2024年02月08日
    浏览(34)
  • Hive无法建表 遭遇 hdfs namenode state : standby 问题

    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteException Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error     at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88)   

    2023年04月09日
    浏览(19)
  • Hadoop YARN HA 集群安装部署详细图文教程

    目录 一、YARN 集群角色、部署规划 1.1 集群角色--概述 1.2 集群角色--ResourceManager(RM)  1.3 集群角色--NodeManager(NM)  1.4 HA 集群部署规划 二、YARN RM 重启机制 2.1 概述  2.2 演示  2.2.1 不开启 RM 重启机制现象  2.3 两种实现方案与区别  2.3.1 Non-work-preserving RM restart 2.3.2 

    2024年02月04日
    浏览(39)
  • hadoop集群启动master节点jps后没有namenode解决方案

    启动集群jps后出现: 1.关闭集群 2.切换到hadoop的目录下将logs与tmp文件与内容删除并创建新的logs 3.重新格式化namenode 4.重新启动后集群

    2024年02月08日
    浏览(36)
  • spark启动HA时workers为0,且为standby状态

    今天学习一个spark视频,在启动StandAloneHa模式的时候,发现workers为0,而且spark两个master的状态都为standby,找了很久,才知道我用的spark3.2 最低支撑的zookeeper版本为3.5.x,而且zookeeper的安装包是需要带bin的那个包,例如apache-zookeeper-3.6.3-bin.tar.gz 这是zookeeper下载的地址:zookeeper下

    2024年02月16日
    浏览(19)
  • Centos7 + Hadoop 3.3.4 HA高可用集群部署

    目录 一、集群规划 二、主机环境准备 1、配置主机名 2、配置HOSTS 3、配置内核参数  4、配置Limits  5、关闭防火墙 6、关闭SELINUX 7、修改时区  8、修改中文支持 三、安装JDK 四、创建Hadoop用户 五、安装Zookeeper 1、下载安装 2、配置zoo.cfg 3、配置myid 4、启动/查看/停止服务 六、安

    2024年02月15日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包