hadoop 2.4 namenode ha的原理是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"hadoop 2.4 namenode ha的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2026年11月01日hadoop 2.4 namenode ha的原理是什么
本篇内容介绍了"hadoop 2.4 namenode ha的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在2.0 的HA部分,我们可以看到相比原来的1.0,多了DFSZKFailoverController ,JournalNode 进程。
DFSZKFailoverController顾名思义就是用于整个主备切换的控制器。
JournalNode 是active和standby元数据共享的传输介质。
而DFSZKFailoverController主要负责active NN的选举通过ActiveStandbyElector来实现,对于nn本身的监控通过HealthMonitor类来实现,下面我们来分析一下HealthMonitor来究竟做了哪些工作以及对NN的监控调用流程。
对于NN的状态,定义了如下几类:
public enum State { /** * The health monitor is still starting up. */ INITIALIZING, /** * The service is not responding to health check RPCs. */ SERVICE_NOT_RESPONDING, /** * The service is connected and healthy. */ SERVICE_HEALTHY, /** * The service is running but unhealthy. */ SERVICE_UNHEALTHY, /** * The health monitor itself failed unrecoverably and can * no longer provide accurate information. */ HEALTH_MONITOR_FAILED; }可以看到定义了,ok or failed两类状态。
对于监控的结果,healthMonitor来通过设置回调函数来实现。
public void addCallback(Callback cb) { this.callbacks.add(cb); } public synchronized void addServiceStateCallback(ServiceStateCallback cb) { this.serviceStateCallbacks.add(cb); }addXXXCallback可以动态添加事件回调函数。
真实监控NN的部分
private class MonitorDaemon extends Daemon
通过内部类MonitorDaemon来实现。实现在run方法,通过源码可以看到run方法调用了
public void run() { while (shouldRun) { try { loopUntilConnected(); doHealthChecks();//监控主方法 } catch (InterruptedException ie) { Preconditions.checkState(!shouldRun, "Interrupted but still supposed to run"); } } }进行监控
我们来看下,这部分源码:
/** * 状态监测 * @throws InterruptedException */ private void doHealthChecks() throws InterruptedException { while (shouldRun) {//只有在关闭的时候shouldRun=false,其他一直是true HAServiceStatus status = null;//NN的状态 boolean healthy = false;//定义健康程度 try { //proxy为HAService的一个rpc代理,由NameNodeRpcServer实现HA的NN部分 status = proxy.getServiceStatus(); //本质上调用了NN的monitorHealth方法,而NN的监控方法,主要是对系统资源的一个检查,如无异常,直接返回 //有异常会throw出HealthCheckFailedException, AccessControlException异常 proxy.monitorHealth(); healthy = true; } catch (HealthCheckFailedException e) {//异常 LOG.warn("Service health check failed for " + targetToMonitor + ": " + e.getMessage()); enterState(State.SERVICE_UNHEALTHY); } catch (Throwable t) {//未知异常,一般是对应的NN没有启动 LOG.warn("Transport-level exception trying to monitor health of " + targetToMonitor + ": " + t.getLocalizedMessage()); RPC.stopProxy(proxy); proxy = null; enterState(State.SERVICE_NOT_RESPONDING); Thread.sleep(sleepAfterDisconnectMillis); return; } if (status != null) { setLastServiceStatus(status); } if (healthy) { //设置状态,用于通知回调函数 enterState(State.SERVICE_HEALTHY); } Thread.sleep(checkIntervalMillis); } }而NN的监控,也比较单纯:
synchronized void monitorHealth() throws HealthCheckFailedException, AccessControlException { namesystem.checkSuperuserPrivilege(); if (!haEnabled) { return; // no-op, if HA is not enabled } getNamesystem().checkAvailableResources(); if (!getNamesystem().nameNodeHasResourcesAvailable()) { throw new HealthCheckFailedException( "The NameNode has no resources available"); } }可以看到其实监控部分,就是一个rpc不断的发送请求,让NN自检测然后在返回相应的数据。
"hadoop 2.4 namenode ha的原理是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
监控
方法
状态
部分
函数
原理
内容
就是
数据
更多
源码
知识
实用
顾名思义
学有所成
接下来
不断
事件
介质
动态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网高科技
伟宏互联网科技
上海卓越科技互联网
互联网科技官网
互联网为科技
互联网 科技创新
互联网科技视频
时间互联网络科技
郑州华宇互联网科技
互联网科技公司有哪些
上海亿帐通互联网科技
佰商互联网科技有限公司
中国互联网金融科技基金
新华互联网科技校企合作
须眉科技是互联网公司吗
中国互联网十大科技股排名
佛山市拉法互联网科技有限公司
上海创道互联网络科技有限公司
江苏互联网科技小贷
互联网科技接地气
互联网加科技
互联网医疗科技
深圳齐家互联网科技
壹账通互联网科技
北京华百购互联网科技有限公司
互联网科技商业
电子科技大学互联网创业大赛
深圳互联网科技的发展
福仕德教育科技互联网
山东亿川互联网科技有限责任公司