hadoop 2.4 namenode ha的原理是什么
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇内容介绍了"hadoop 2.4 namenode ha的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
985硕士软件开发工资多少
暗黑2重制选哪个服务器
php服务器环境搭建
网络安全论文选题依据
夏普电视服务器显示异常
科技金融互联网金融服务
仙桃好的软件开发
企业法人数据库
河北应用软件开发要多少钱
服务器防护防止ddos攻击
阿里巴巴数据库教学
数据库dbf下载
工业网络安全答辩
软件开发技术考核指标
超凡先锋哪个服务器橙卡的几率高
桂阳县网络安全研究
合肥综合网络技术服务优势
视频会议软件开发质优价廉
云服务器中病毒和威胁防护
小牌子的服务器
西安鸿鹄网络技术赵
网络安全教程教课书
网络安全知识系列
阿里云服务器下载jdk
拜登网络安全教程
武汉微聚互联网络科技
数据库原理及应用 教程
国内最好的服务器租用
毕节软件开发定制
网络安全宣传进农村