hadoop 2.4 namenode ha的原理是什么
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容介绍了"hadoop 2.4 namenode ha的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
网络安全属于什么类型论文
网信办网络安全工作思路
网络安全谁讲得好
互联网科技张群华
网络安全威胁和挑战有
贵阳有什么网络技术中专学校
php 关闭数据库
python软件开发工资
方舟PVP主播服务器
天津什么是网络技术服务资费
数据库 tde 厂商
软件开发项目节税
电脑打开找不到服务器怎么办
数据库域关系演算
jdbc操作步骤及数据库连接
有人打电话说他是网络技术
设置 js 不缓存数据库
欧美文献数据库
数据库 中文乱码
2020年网络安全图标
讧苏极限网络技术股份有
餐饮的软件开发
磁阵断掉会不会影响数据库
网络安全防火墙培训
小榄网络安全
数字资产交易软件开发商
广告数据库有哪些
数据库中查询表中某人的信息
数据库的技术产生和系统特点
医学常用的外文文献数据库