当前位置: 首页 > 编程日记 > 正文

HDFS Federation与HDFS High Availability详解

HDFS Federation
    NameNode在内存中保存文件系统中每个文件和每个数据块的引用关系,这意味着对于一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈。在2.0发行版本系列中引入的Federation HDFS允许
  系统通过添加NameNode实现扩展,其中每个NameNode管理文件系统命名空间的一部分。在Federation环境下,每个NameNode维护一个命名空间卷(NameSpace Volume),包括命名空间的元数据和在该命名空
  间下的文件的所有的数据块的数据块池。命名空间卷是相互独立的,且互不通信,甚至其中一个NameNode失效也不会影响由其他NameNode维护的命名空间的可用性。数据块池不在进行切分,因此集群中的DataNode
  需要注册到每个NameNode,并且存储来自多个数据块池中的数据块。
    
采用Federation的最主要原因是简单,Federation能够快速的解决了大部分单NameNode的问题。Federation 整个核心设计实现大概用了4个月。大部分改变是在Datanode、Config和Tools,而NameNode本身的
  改动非常少,这样 Namenode原先的鲁棒性不会受到影响。这使得该方案与之前的HDFS版本兼容。为了水平扩展NameNode,Federation使用了多个独立的NameNode/namespace。这些NameNode之间是联合的,
  也就是说,他们之间相互独立且不需要互相协调,各自分工,管理自己的区域。分布式的DataNode被用作通用的数据块存储存储设备。每个DataNode要向集群中所有的NameNode注册,且周期性地向所有NameNode
  发送心跳和块报告,并执行来自所有NameNode的命令。一个block pool由属于同一个namespace的数据块组成,每个DataNode可能会存储集群中所有block pool的数据块。每个block pool内部自治,也就是说各自管
  理各自的block,不会与其他block pool交流。一个NameNode挂掉了,不会影响其他NameNode。某个NameNode上的namespace和它对应的block pool一起被称为namespace volume。它是管理的基本单位。当一
  个NameNode/nodespace被删除后,其所有DataNode上对应的block pool也会被删除。当集群升级时,每个namespace volume作为一个基本单元进行升级。   
HDFS High Availability
    通过联合使用在多个文件系统中备份NameNode的元数据和通过备用NameNode创建监测点能防止数据丢失,但是依旧无法实现文件系统的高可用性。NameNode依旧存在单点故障(SPOF)问题。如果NameNode
  失效了,那么所有的客户端包括MapReduce作业均无法读、写或列(list)文件,因为NameNode是唯一存储元数据与文件到数据块映射的地方,在这一情况下,Hadoop系统无法提供服务直到有新的NameNode上线。
    在这样的情况下,要想从一个失效的NameNode恢复,系统管理员得启动一个拥有文件系统元数据的副本的新的NameNode,并配置DataNode和客户端以便使用这个新的NameNode。新的NameNode直到满足以
  下情形才能响应服务:1)将命名空间的镜像导入到内存中;2)重做编辑日志;3)接收到足够多的来自DataNode的数据库报告并推出安全模式。对于一个大型并拥有大量文件和数据块的集群,NameNode的冷启动需要
  至少30分钟甚至更长时间。如果系统恢复时间太长,也会影响到日常维护。事实上,NameNode失效的可能性非常低,所以在实际应用中计划系统失效时间就显得尤为重要。
    在Hadoop-2.x系列发行版本中对上述问题提供了高可用性(High Availability)的支持。在这一实现中,配置了一对活动-备用(Active-Standby)的NameNode。当活动的NameNode失效,备用NameNode则会
  接管已失效NameNode的任务并开始服务于来自客户端的请求,不会有任何明显的中断。1:NameNode之间需要通过高可用的共享存储实现编辑日志的共享。在早期的高可用实现版本中需要一个NFS
  (Network File System)过滤器来辅助实现,但是在后续版本中提供了更多的选择,如构建于ZooKeeper之上的BookKeeper这样的系统。当备用的NameNode接管工作后,它将通过读取共享编辑日志直至末尾,以实现
  与活动的NameNode的状态同步,并继续读取由活动的NameNode写入的新条目;2:DataNode需要同时向两个NameNode发送数据块处理报告,因为数据块的映射信息存储在NameNode的内存中,而非磁盘。3:客
  户端需要使用特定的机制来处理NameNode的失效问题,这一机制对用户是透明的。
    在活动的NameNode失效之后,备用NameNode能快速(几十秒的时间)实现任务接管,因为最新的状态存储在内存中:包括最新的编辑日志条目和最新的数据块映射信息。实际观察到的失效时间会长一点(需要1分
  钟左右),这是因为系统需要保守确定活动NameNode是否真的失效了。
    在活动的NameNode失效且备用NameNode也失效的情况下,管理员依旧可以申明一个备用NameNode实现冷启动。这类情况并不会比非高可用(no-HA)的情况更差,并且从操作的角度讲这是一个进步,因为上述
  处理已经是一个标准的处理过程并植入Hadoop中。
    故障转移与规避:一个称为故障转移控制器(failover_controller)的系统中有一个新实体管理着将将活动NameNode转移为备用NameNode的转换过程。故障转移控制器是可插拔的,但其最初的实现是基于
  ZooKeeper的并由此确保且仅有一个活动的NameNode。每一个NameNode运行着一个轻量级的的故障转移控制器(DFSZKFailoverController),其工作就是监视宿主NameNode是否失效(通过一个简单的心跳机制实
  现)并在NameNode失效时进行故障切换。管理员也可以手动发起故障转移,例如在进行日常维护时。这称为“平稳的故障转移”(故障转移控制器会组织两个NameNode有序切换)。在非平稳的故障转移时,无法确切知
  道失效NameNode是否已经停止运行。例如在网络非常慢或网络被分割的情况下,同样也可能激发故障转移,但是先前活动的NameNode依然运行着并依旧是活动的NameNode。高可用实现做了更进一步的优化以用来确
  保先前活动NameNode不会执行危害系统并导致系统崩溃的操作,该方法称为“规避”(fencing)。系统引入了一系列的规避机制,包括杀死NameNode进程,收回访问共享存储目录的权限(通常使用供应商指定的NFS
  命令),通过远程管理命令以屏蔽相应网络端口。诉诸最后的手段是先前活动NameNode可以通过一个相当形象的成为STONITH(shoot the node in the head)的技术进行规避,该方法主要通过一个特定的供电单元对相
  应的主机进行断电操作。客户端的故障切换通过客户端类库实现透明处理。最简单的实现是通过客户端的配置文件实现故障切换的控制。HDFS URI使用一个逻辑主机名,该主机名映射到一对NameNode地址(在配置文件中
  设置),客户端类库会访问每一个NameNode地址,直至处理完成。

    

转载于:https://www.cnblogs.com/mengyao/p/4696348.html

相关文章:

win32的一个售票程序,收获有非常的多

先秀一下我的收获吧! 1、在创建非模态对话框的时,需要用到createdialog函数,第二个参数需要注意是填写对话框的资源标识符(id),之后需要调用showwindow来显示对话框;或者不这么做也行&#xff0…

从理论到实践 全面理解HTTP/2

前言 为了降低加载时间,相信大多数人都做过如下尝试 Keep-alive: TCP持久连接,增加了TCP连接的复用性,但只有当上一个请求/响应完全完成后,client才能发送下一个请求Pipelining: 可同时发送多个请求,但是服务器必须严格…

开机不进去桌面执行gui_电脑系统崩溃进不去,简单几步设置U盘,快速找回桌面重要文件...

hello~我可爱的粉丝们!今天粮小白分享一个电脑系统崩溃无法开机,怎么把电脑数据保存备份的小技能,就来就点个关注吧。每天更新生活必备技能哦。电脑系统崩溃进不去,简单几步设置U盘,快速找回桌面重要文件近些年来&…

java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

http://www.cnblogs.com/jenson138/p/4691418.html import java.io.File;public class ReadDirectory {// 文件所在的层数private int fileLevel;/*** 生成输出格式* param name 输出的文件名或目录名* param level 输出的文件名或者目录名所在的层次* return 输出的字符串*/pu…

数据千万条,备份第一条,数据找不回,老板两行泪

2019独角兽企业重金招聘Python工程师标准>>> 开工第一天,请带着你的回忆看下文,想想你这些年删过的库,被删过的库。。。 数据库备份是个老生常谈的话题,看似很简单,但在实际操作过程中,运维人员…

【转】Visual Studio 2010 架构图之用例图(UML Use Case Diagram)

这篇文章是来自园子的,我只是把自己觉得重要的地方,做了更鲜明的标记和解释。 使用Visual Studio 2010可以在项目中添加架构图,项目可以是ASP.NET、Windows Forms、...,也可以创建单独的Modeling Projects。 可以通过下图方式在项…

spi通讯不需要地线吗_抖音真的需要养号吗?不需要!千万别被割了韭菜

“抖音新账号一定要先养号,再发布作品。”这句话,你是不是听很多人跟你讲过?包括我也曾在之前的推文里建议大家先养号,并且说的有理有据。(要打脸了)但是,这是一句谣传!暂且不说谣言…

Linux学习之setjmp和longjmp函数

nsetjmp和longjmp函数实现函数之间的跳转(需包含头文件"setjmp.h"):函数原型:int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); setjmp函数用于设置跳转的目的位置,longjmp函数进行跳转。env:保留了需要返…

Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )...

以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 service httpd start invoke-rc.d apache start service apache start 启动时自动加载 chkconfig httpd on update-rc.d apache defaults…

酷派、华为不能打印log解决办法

我发现我的手机无法再eclipse里面输出自己打的log.i等log,一开始还以为是我手机root或刷过机的问题。 最终非常偶然找到了解决的方法: 酷派大神F1,F2在出厂时将log的级别做了限制。 解除限制的方法是:拨号盘输入*20121220# ->…

80070583类不存在_Java自学-接口与继承 内部类

Java 内部类内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类步骤 1 : 非静态内部类非静态内部类 BattleScore “战斗成绩” 非静态内部类可以直接在一个类里面定义比如: 战斗成绩只有在一个英雄对象存在的时候才有意义 所以实例化Ba…

java 初识对象和对象引用的关系

在接触java之前就知道了java的对象引用,但概念一直很模糊,看了《Head First in Java》后觉得书中的例子很有趣,便分享给大家。 首先要搞清对象引用是什么? 我们都知道变量可以存放数据,就像杯子一样,不同大…

IOS UI 代码创建UIButton,UITextField,UILabel

//add a Label UILabel *label[[UILabelalloc]initWithFrame:CGRectMake(100,20, 150, 40)]; [label setText:"i am a label "]; label.font[UIFontsystemFontOfSize:20]; label.textAlignmentNSTextAlignmentLeft; //文字内容自适应标签宽度 label.adjustsFontSizeT…

Hash join 和nested loop

Hash join 和nested loop 总所周知,Oracle数据库常用的两种优化器:RBO(rule-based-optimizer)和CBO(cost-based-optimizer)。目前更多地采用CBO(cost-based-optimizer)基于开销的优化器。在CBO方式下,Oracle会根据表及…

minus oracle 顺序_oracle minus的用法来一波

Oracle Minus关键字SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如…

我现在的vimrc配置文件

我现在的vimrc配置文件 runtime! debian.vim "设置编码 set encodingutf-8 set fencsutf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set fileencodingsutf-8,ucs-bom,chinese"语言设置 set langmenuzh_CN.UTF-8" command WQ wq command Wq wq command W w…

UVA 10269 Adventure of Super Mario

UVA_10269 由于马里奥的飞行距离有限&#xff0c;因此为了方便处理&#xff0c;我们首先用floyd预处理出马里奥可以飞行的两点间的最短路&#xff0c;然后再将图分成K1层用SPFA求最短路即可。 #include<stdio.h>#include<string.h>#define MAXD 130#define MAXN 20…

“5G杀手级应用”Cloud VR 华为如何打响5G第一枪

雷锋网消息&#xff0c;近日华为在上海召开华为云 5G Cloud VR服务发布会暨5G Cloud VR开发者沙龙&#xff0c;Cloud VR有何潜力成为5G第一批杀手级应用&#xff0c;华为又在其中扮演怎样的角色。Cloud VR和5G更配生产决定消费&#xff0c;消费反作用于生产&#xff0c;对于5G也…

昆仑通态通用版找不到驱动_2021深圳新安西门子伺服驱动电机回收合作共赢

2021深圳新安西门子伺服驱动电机回收合作共赢 一个企业,应尽量做到PLC的机型统主要考虑到以下三方面问题&#xff1a;机型统其模块可互为备用,便于备品备件的采购和管理。机型统其功能和使用方法类似,有利于技术力量的培训和技术水平的提高。机型统其外部设备通用,资源可共享,易…

熟人Dubbo 系列1-Dubbo什么

Dubbo阿里巴巴内部SOA治理方案和服务的核心框架。每天2000 个服务提供3,000,000,000 次訪问量支持&#xff0c;并被广泛应用于阿里巴巴集团的各成员网站。Dubbo自2011年开源后&#xff0c;已被很多非阿里系公司使用。Dubbo[]是一个分布式服务框架&#xff0c;致力于提供高性能和…

CentOS源码安装GitLab汉化版第3版

软件版本&#xff1a; 软件版本CentOS7.5GraphicsMagick1.3.31Git2.21.0Ruby2.5.3Go1.12Node.js10.15.2PostgreSQL11.2Redis5.0.3GitLab11.8.0 汉化版Nginx1.14.21. 安装依赖 yum -y install libicu-devel patch gcc-c readline-devel zlib-devel libffi-devel openssl-devel m…

用JSP+JDBC开发Web程序

以前一直想找个纯粹的JSPJDBC开发Web程序的架构&#xff0c;一直没有找到合适的&#xff0c;后来自己写了一个简单实现&#xff0c;并实施了几个项目。 此开发架构的特点是&#xff1a; 1.架构技术简单&#xff0c;只包含JSP和JDBC&#xff0c;不需要学习即可快速开发Web应用&a…

catia怎么创建约束快捷键_答疑 | CATIA结构树无法显示怎么办?

问题有小伙伴反馈&#xff0c;设计过程中&#xff0c;CATIA的结构树不见了……怎么办&#xff1f;问题听起来很简单&#xff0c;但总能难倒一些新手。原因与解决方案&#xff1a;下面针对产生该问题的不同的原因&#xff0c;提出不同的解决方案。第一种情况原因&#xff1a;结构…

【UVA】11992 - Fast Matrix Operations(段树模板)

主体段树&#xff0c;要注意&#xff0c;因为有set和add操作&#xff0c;当慵懒的标志下推。递归优先set&#xff0c;后复发add&#xff0c;每次运行set行动add马克清0 WA了好几次是由于计算那一段的时候出问题了&#xff0c;可笑的是我对着模板找了一个多小时的错。 #include&…

记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案

问题概述使用阿里云rds for MySQL数据库&#xff08;就是MySQL5.6版本&#xff09;&#xff0c;有个用户上网记录表6个月的数据量近2000万&#xff0c;保留最近一年的数据量达到4000万&#xff0c;查询速度极慢&#xff0c;日常卡死。严重影响业务。 问题前提&#xff1a;老系统…

SQL Server 2008 下载地址(微软官方网站)

哪里有sqlserver2008下载&#xff1f;2011-9-24 23:58提问者&#xff1a;ooseestars | 浏览次数&#xff1a;3252次2011-9-26 11:38最佳答案SQL Server 2008 下载地址(微软官方网站) 中文版(3.28GB)&#xff1a;http://sqlserver.dlservice.microsoft.com/dl/download/B/8/0/B8…

java实现最长连续子序列_最长公共子序列 ||

问题&#xff1a;在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来&#xff0c;因为最长公共子序列可能不只一种。难点&#xff1a;输出一个最长公共子序列并不难&#xff0c;难点在于输出所有的最长公共子序列&#xff0c;我们需要在动态规划表上进…

替换元素和非替换元素的学习

替换元素和非替换元素的学习 (元素)[妙瞳] 引言 元素是文档结构的基础&#xff0c;在CSS中&#xff0c;每个元素生成了一个包含了元素内容的框&#xff08;box,也翻译为“盒子”&#xff09;。但是不同的元素显示的方式会有所不同&#xff0c;例如div和span不同&#xff0c;而s…

第十六天-企业应用架构模式-离线并发模式

1.乐观离线锁 &#xff08;Optimistic Offline Lock&#xff09; 运行机制 使用时机 例&#xff1a;领域层与数据层数据映射器 2.悲观离线锁 &#xff08;Pessimistic Offline Lock&#xff09; 运行机制 使用时机 例&#xff1a;简单锁管理对象 3.粗粒度锁 &#xff08;Coarse…

hdu1518 bjfuoj1042 zoj1909 poj2362 经典的搜索加剪枝

bjfuoj的测试数据最水&#xff0c;用很简单的方法一下就过了&#xff0c;又调了好长时间&#xff0c;才过掉其它OJ上的这道题目~ /* * hdu1518/win.cpp * Created on: 2011-11-8 * Author : ben*/#include <cstdio>#include <cstdlib>#include <cstring>#…