3. hdfs概述与高可用原理

简述

HDFS(Hadoop Distributed File System)是一种Hadoop分布式文件系统,具备高度容错特性,支持高吞吐量数据访问,可以在处理海量数据(TB或PB级别以上)的同时最大可能的降低成本。

HDFS适用于大规模数据的分布式读写,特别是读多写少的场景。

架构

hdfs由四大组件组成,分别是NameNode、DataNode、ZKFC,journalnode

NameNode: 管理所有文件的元数据信息,并且负责与客户端交互

DataNode: 文件的实际存储位置,定时向NameNode上报数据块信息

ZKFC: 监控NameNode的运行状态,做主从切换

journalnode: 共享存储,数据同步用

高可用

高可用一般是指NameNode的高可用,NameNode是典型的主从架构,主节点负责与客户端交互,从节点负责与主节点同步备份

对于高可用集群,我们会启动两个NameNode,一个是Active NameNode,另一个是Standby NameNode,两个NameNode承担不同角色。Active
NameNode负责处理DataNode和Client的请求,Standby NameNode向 Active NameNode 同步最新的元数据信息,当Active
NameNode异常,Standby NameNode会感知到并切换成Active

高可用原理

通过ZKFC实现高可用,是一个zk集群的客户端,它会定期的像本地的NameNode发送心跳检查(这是一个HealthyMonitor线程),所有每一个NameNode都需要一个ZKFC,如果心跳检查成功,那么NameNode是正常的,否则就是一个失效的节点

如何确定谁为主,通过锁实现

NameNode选举成功后会在zk上创建一个临时节点
/hadoop-ha/{namespace}/ActiveStandbyElectorLock,没有选举成功的zkfc就会监听这个节点。通过zk的watcher机制来知道节点的变化,主要关注的是NodeDelete的事件

如果active异常,那么zkfc会主动删除锁节点,处于standby的NameNode会收到锁节点删除事件,于是会马上去创建锁节点,如果创建成功,那么该NameNode就切换为active
状态

如果整台机器都宕机,导致zkfc不能主动删除锁节点,但是由于锁节点是一个临时节点,zkfc会话结束,也会自动删除的

在这里插入图片描述

脑裂

出于某种原因,可能active的NameNode节点正常,但是无法向zk上报心跳,导致与zk建立的session关闭,这个时候ActiveStandbyElectorLock临时节点将被删除,另一个NameNode将会进行选主操作,这个时候就可能出现两个active

解决方案,隔离fence

在zk上还有一个持久的节点ActiveBreadCrumb,如上图所示,这个节点也是保存了Active
NameNode的信息,正常情况下,删除ActiveStandbyElectorLock也会一并删除ActiveBreadCrumb,但是异常情况下,临时节点可以自动删除,持久节点却不会,当另一个NameNode来选主成功后会注意到这个节点,于是会对旧的NameNode进行fencing,对旧的NameNode调用transitionToStandby转为standby状态,如果调用失败,那么就执行我们配置的fence措施

比如我们会配置如下信息

<!-- 配置隔离机制方法 -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
        sshfence
        shell(/bin/true)
    </value>
</property

表示直接ssh到目标主机,杀死对应进程

还有一种叫 shellfence,可以自定义脚本

成功执行fence后,选主成功的NameNode切换为active状态

数据同步

NameNode主备切换,如何做到与之前数据一致?

引入了JournalNode,NameNode会与一组JournalNode进行通信,当active
执行写操作时,它会持久的把修改的记录记录到大多数的JournalNode中,standby就可以从JournalNode中读取edits日志,并且不断的监视这个日志的修改,将修改的记录应用到自己的命名空间

当发生故障转移时,备用的NameNode确保已经从JournalNode读取所有的edits内容。这样就可以保证状态同步。

JournalNode也是需要高可用部署,一般部署3、5、7个,最多容忍(N-1)/2个故障

总结

以上就是对hdfs的介绍,后面文章将不再介绍,直接实战


欢迎关注,学习不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

0门槛!用ChatGPT只花1天批量生成300个爆火TikTok视频

目录 1 2让天下没有难做的开发和运维&#xff0c;DevOps终于有了专属大模型 3关于 DevOpsGPT 1 不露脸&#xff0c;不怕视频也能从TikTok赚到钱?在过去30天&#xff0c;有人通过这个方式预计至少获得了超过1万美金的广告分成收益。这些成功账号的共同特点是&#xff0c;所有…

探究多态的原理与实现:虚函数表、动态绑定与抽象类

文章目录 一、多态概念二、多态实现&#xff08;具体&#xff09;2.1 虚函数2.2 虚函数 重写2.3 override关键字 与 final关键字2.4 重载、重写&#xff08;覆盖&#xff09;、重定义&#xff08;隐藏&#xff09;的区别 三、抽象类3.1 概念3.2 实现继承 && 接口继承 四…

通过使用阿里云服务器,搭建Java程序的运行环境

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一…

ACM练习——第四天

ok&#xff0c;今天又是三节课的一天。 刚刚吃完饭的我一刻也不敢耽误&#xff0c;直接开干&#xff01;&#xff01;&#xff01; 这些题和力扣上的&#xff0c;为了练习数据结构的题是不一样的。 直接上嘴脸 题目 第一次放学 (nowcoder.com)来自牛客网 思路 先看他的输入…

8086与8088

一、8086与8088概述 8088/8086都是16位微处理器&#xff0c;内部运算器和寄存器都是16位的&#xff0c;同样具有20位地址线8088/8086都是由执行单元(EU)和总线接口部件(BIU)两大部分构成指令系统和寻址能力都相同&#xff0c;两种CPU是兼容的8088被称作准十六位的、是紧继8086…

【文件上传】upload-labs 通关

环境准备 靶场upload-labs-env-win-0.1环境windows 靶场描述 靶场攻略 Pass-01 1.上传一句话木马 发现有类型限制 2.上传图片木马 抓包 3.修改后缀 将png修改为php. 成功上传&#xff0c; 4.查找文件地址 5.中国蚁剑连接 6.成功 7.源码分析 function checkFile() {var fi…

深入理解锁

目录 常用锁策略 1.乐观锁 VS 悲观锁 2.轻量级锁 VS 重量级锁 3.自旋锁 VS 挂起等待锁 4.互斥锁 VS 读写锁 5.公平锁 VS 非公平锁 6.可重入锁 VS 可重入锁 CAS ABA问题 Synchronized原理 1. 锁升级/锁膨胀 2.锁消除 3.锁粗化 常用锁策略 1.乐观锁 VS 悲观锁 站在…

自建es数据迁移阿里云方案

一、ElasticSearch数据迁移方法介绍 https://help.aliyun.com/document_detail/170095.html?spma2c4g.26937906.0.0.429240c9ymiXGm 可以通过Logstash、reindex和OSS等多种方式完成阿里云Elasticsearch间数据迁移、Elasticsearch数据迁移至Openstore存储中、自建Elasticsear…

教你轻松保存视频号里的视频到相册

在今天的数字化社会&#xff0c;人们在各种社交平台上分享视频已经成为一种习惯。而在短视频平台上&#xff0c;用户可以轻松地上传、分享和观看各种内容丰富的视频。然而&#xff0c;很多用户在观看完善了的视频后&#xff0c;希望将喜欢的视频保存到手机相册中&#xff0c;以…

yyds!这个写文案神器爱了爱了

每次写文案都绞尽脑汁&#xff0c;不知道怎么写&#xff0c;想了很久&#xff0c;好不容易写完了&#xff0c;数据真的很差&#xff0c; 心累啊&#xff0c;家人们&#xff01;&#xff01; 只要输入你想写的标题&#xff0c;马上就能得到一篇&#xff0c;不满意就重写&#…

力扣-路径总和问题

路径总和 --简单 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 f…

MATLAB中zticks函数用法

目录 语法 说明 示例 指定 z 轴刻度值和标签 指定非均匀 z 轴刻度值 以 2 为增量递增 z 轴刻度值 将 z 轴刻度值设置回默认值 指定特定坐标区的 z 轴刻度值 删除 z 轴刻度线 zticks函数的功能是设置或查询 z 轴刻度值。 语法 zticks(ticks) zt zticks zticks(auto)…

猫罐头哪个牌子好性价比高?5款良心性价比的猫罐头推荐给新手养猫!

养猫新手很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的市场环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;宠物市场真的很内卷&#xff0c;很多品牌都在比拼产品的数据和营养成分。很多铲屎官…

qt Rectangle 使用Gradient设置渐变方向 制作渐变进度条

1.Gradient方向可查看官网 Gradient.Horizontala horizontal gradient Gradient.Verticala vertical gradient ​​ ProgressBar {id: batteryvalue: 0.5width: 150height: 20anchors.centerIn: parentbackground: Rectangle {implicitWidth: battery.widthimplicitHeight:…

python+appium自动化测试如何控制App的启动和退出

由于本人使用的是Android设备做自动化测试&#xff0c;所以以下内容均基于Android系统做出的整理 一、启动app 启动app需要设置Capability参数&#xff0c;而Capability参数放在Desired Capalibity中&#xff0c;Desired Capalibity告诉Appium想要的自动化平台和应用程序&…

AI自动直播软件,ai无人直播工具2.0支持多平台矩阵直播一键同步直播脚本内容【直播脚本+使用技术教程】

AI实景直播软件简介&#xff1a; 支持一台手机自动直播&#xff0c;支持语音和文字同时回复&#xff0c;商品自动弹窗&#xff0c;支持抖音、快手、视频号、美团平台直播&#xff0c;支持矩阵直播&#xff0c;一键同步直播脚本内容。 设备需求&#xff1a; 安卓手机&#xf…

python连接redis库

在自动化过程中&#xff0c;如果需要动态获取某个数据时&#xff0c;需要连接redis数据库。下面来详细介绍下如何操作。 redis这个库是python自带的&#xff0c;直接import导入即可,如下; import redis 1. redis 地址和端口&#xff0c;端口一般都是默认的6379,只需要换下地…

VS2017的redis客户端实现

VS2017下Redis服务器源码地址 https://download.csdn.net/download/qq_23350817/88541316 VS2017下Redis客户端源码地址(hiredis已完成windows下编译)&#xff1a; https://download.csdn.net/download/qq_23350817/88541242 C代码实现&#xff1a; #include <stdio.h>…

【Maven教程】(十一):使用 Maven 构建 Web应用 —— 使用 jetty-maven-plugin 进行测试、使用 Cargo 实现自动化部署~

Maven 使用 Maven 构建 Web应用 1️⃣ Web 项目的目录结构2️⃣ account-service2.1 account-service的 POM2.2 account-service 的主代码 3️⃣ account-web3.1 account-web 的POM3.2 account-web 的主代码 4️⃣ 使用 jetty-maven-plugin 进行测试5️⃣ 使用 Cargo 实现自动…

【文件上传】01ctfer 文件上传获取flag

1.1漏洞描述 漏洞名称01ctfer 文件上传漏洞类型文件上传漏洞等级⭐⭐⭐漏洞环境docker攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场docker工具BurpSuite 1.4.2.环境搭建 1.创建docker-compose.yml文件 version: 3.2 services: upload: …