hadoop 2.4 namenode ha的原理是什么
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容介绍了"hadoop 2.4 namenode ha的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
24k软件开发
希望数据库系统
宝山区会计软件开发平台资质
软件开发mdt是啥
电子软件开发的岗位说明
大一数据库作业代做
HFC接入网络技术
第三方网络安全支付案例分析
服务器硬盘检测
关于网络技术知识的书籍
软件开发 发票 税率
如何在云服务器中建数据库
网络安全单位有哪些
往数据库中添加数据的方法
软件开发美工师
公安部网络安全保卫局处长
甲骨文服务器流量
mongo数据库教程
幼儿园网络安全进课堂教案大班
腾讯云服务器连接时间
数据库日常巡检箱
如何把数据库数据用曲线图显示
csgo更换服务器插件
国药控股软件开发
网络安全法解释有几部
服务器io口是管理口吗
临时服务器安全吗
sql数据库期末大作业模板
软件开发培训学校驾考宝典
软件开发打卡