在使用 HDFS NameNode 和 Yarn ResourceManager 等具有高可用性的服务时,通常会遇到的一个问题是:判断哪个是主节点(active),哪个是备用节点(standby)。
命令行查询主备状态
一般常用的服务都会提供自带的命令行(如 hdfs cli, yarn cli 等),通过 特定命令+节点id 可以判断主备状态。
a. HDFS NameNode 主备查询命令: hdfs haadmin
CDH中查看HDFS的各项参数,默认在路径/etc/hadoop/conf.cloudera.hdfs/hdfs-site.xml
下。在hdfs-site.xml文件中,可以找到高可用相关的配置:
<property> <name>dfs.ha.namenodes.sdg</name> <value>namenode25,namenode30</value> </property>
从中可以看到,有两个namenode,一个是主节点(active),一个是备用节点(standby)。
如果使用命令行,查看主备的方法是用hdfs haadmin -getServiceState
命令,如:
$ hdfs haadmin -getServiceState namenode30active $ hdfs haadmin -getServiceState namenode25 standby
记忆方法:输入hdfs haadmin 即可获得命令提示
$ hdfs haadmin Usage: DFSHAAdmin [-ns <nameserviceId>] [-transitionToActive <serviceId> [--forceactive]] [-transitionToStandby <serviceId>] [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>] [-getServiceState <serviceId>] [-checkHealth <serviceId>] [-help <command>]
b. Yarn ResourceManager 主备查询命令: yarn rmadmin
CDH集群中,yarn-site.xml
位于/etc/hadoop/conf.cloudera.yarn/yarn-site.xml
,从中可以查看到:
<property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm201,rm48</value> </property>
使用命令 yarn rmadmin -getServiceState
可以查看主备状态:
$ yarn rmadmin -getServiceState rm201 standby $ yarn rmadmin -getServiceState rm48 active
记忆方法同上。
Java API 查询主备状态
用如果使用Java API,可以首先通过Configuration类获取配置信息,之后使用特定方法获取节点主备状态。
以HDFS NameNode为例,可以通过addResource()方法读取配置信息,之后用HAUtil.getAddressOfActive()方法获取节点主备信息。
例:可使用如下代码输出HDFS NameNode active的节点地址
Configuration conf = new Configuration(); conf.addResource(new Path("/etc/hadoop/conf.cloudera.hdfs/core-site.xml")); conf.addResource(new Path("/etc/hadoop/conf.cloudera.hdfs/hdfs-site.xml")); FileSystem fileSystem = FileSystem.get(conf); System.out.println(HAUtil.getAddressOfActive(fileSystem).toString());
作者:OldChicken_
链接:https://www.jianshu.com/p/89090bd2b66c
。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章