文档章节

HDFS Namenode是如何工作的?

Kerry_Han
 Kerry_Han
发布于 2014/11/19 09:17
字数 1210
阅读 34
收藏 0
点赞 0
评论 0

来自:http://www.csdn.net/article/2012-07-03/2807066

HDFS(Hadoop Distributed Filesystem)客户端通过被称之为Namenode单服务器节点执行文件系统原数据操作,同时DataNode会与其他DataNode进行通信并复制数据块以实现冗余,这样单一的DataNode损坏不会导致集群的数据丢失。

但NameNode出现故障的损失确是无法容忍的,NameNode主要职责是跟踪文件如何被分割成文件块、文件块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常等,如果NameNode节点停止运行的话将会导致数据节点无法通信,客户端无法读取和写入数据到HDFS,实际上这也将导致整个系统停止工作。

The HDFS Namenode is a single point of failure (SPOF)

Facebook也深知“Namenode-as-SPOF”所带来问题的严重性,所以Facebook希望建立一套系统已破除“Namenode-as-SPOF”带来的隐患。但在了解这套系统之前,首先来看一下Facebook在使用和部署HDFS都遇到了哪些问题。

Facebook数据仓库的使用情况

在Facebook的数据仓库中部署着最大的HDFS集群,数据仓库的使用情况是传统的Hadoop MapReduce工作负载——在大型集群中一小部分运行MapReduce批处理作业

因为集群非常庞大,客户端和众多DataNode节点与NameNode节点传输海量的原数据,这导致NameNode的负载非常沉重。而来自CPU、内存、磁盘和网络带来的压力也使得数据仓库集群中NameNode高负载状况屡见不鲜。在使用过程中Facebook发现其数据仓库中由于HDFS引发的故障占总故障率的41%。

HDFS NameNode是HDFS中的重要组成部分,同时也是整个数据仓库中的重要组成部分。虽然高可用的NameNode只可以预防数据仓库10%的计划外停机,不过消除NameNode对于SPOF来说可谓是重大的胜利,因为这使得Facebook可执行预订的硬件和软件回复。事实上,Facebook预计如果解决NameNode可消除集群50%的计划停机时间。

那么高可用性NameNode是什么样子的?它将如何工作?让我们来看一下高度可用性NameNode的图表。

 

(tenfy:本质是对namenode增加两个热冗余,对clients来说可以同时进行访问,对datanode来说,也同时对primaryNameNode和standbyNameNode进行通讯)

在此结构中,客户端可与Primary NameNode与Standby NameNode通信,同样众多DataNode也具备给Primary NameNode与Standby NameNode发送block reports的能力。

实质上Facebook所研发的AvatarNode就是具备高可用NameNode的解决方案。

Avatarnode:具备NameNode故障转移的解决方案

为了解决单NameNode节点的设计缺陷,大约在两年前Facebook开始在内部使用AvatarNode工作。

同时AvatarNode提供了高可用性的NameNode以及热故障切换和回滚功能,目前Facebook已经将AvatarNode贡献到了开源社区。经过无数次的测试和Bug修复,AvatarNode目前已在Facebook最大的Hadoop数据仓库中稳定运行。在这里很大程度上要感谢Facebook的工程师Dmytro Molkov

当发生故障时,AvatarNode的两个高可用NameNode节点可手动故障转移。AvatarNode将现有的NameNode代码打包并放置在Zookeeper层。

AvatarNode的基本概念如下:

1.具备Primary NameNode与Standby NameNode

2.当前Master主机名保存在ZooKeeper之中

3.改进的DataNode同时发送block reports到Primary NameNode与Standby NameNode

4.改进的HDFS客户端将在每个事物开始之前对Zookeeper进行检查,如果失败会转移到另外的事务之中。同时如果AvatarNode故障转移出现在写入的过程中,AvatarNode的机制将允许保证完整的数据写入。

Avatarnode客户端

Avatarnode DataNode

或许有人会Facebook这一解决方案的名字感到好奇,这是因为Facebook的Hadoop工程师Dhruba Borthakur来到公司时正好是James Cameron《阿凡达》电影热映时间。(我们应该感到庆幸,如果是1998年的话或许应该叫TitanicNode了)。

AvatarNode经受住了Facebook内部最苛刻的工作环境,未来Facebook将继续大幅度改善AvatarNode的可靠性和HDFS集群的管理性。并整合与一般高可用性框架的整合,还将实现无人值守、自动化与安全故障转移等特性。

Facebook已将自身使用的Hadoop与AvatarNode解决方案托管到GitHub。感兴趣的朋友可下载研究。

当然不止Facebook在试图解决Hadoop的缺陷,MapR和Cloudera的产品也具备相似的能力。(李智/编译)


本文转载自:

共有 人打赏支持
Kerry_Han
粉丝 13
博文 174
码字总数 54257
作品 0
海淀
程序员
Hadoop中HDFS的工作原理

HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统(中文,英文)。 HDFS有很多特点: ① 保存...

脸大的都是胖纸
2015/04/22
0
0
HDFS的工作流程分析

作者: Bryanzhou HDFS的工作机制概述 HDFS集群分为两大角色:NameNode、DataNode NameNode负责管理整个文件系统的元数据 DataNode 负责管理用户的文件数据块 文件会按照固定的大小(blocksi...

xiaogong1688
2017/08/02
0
0
Hadoop基础之HA(高可用)

1.Hadoop2.0产生背景 早期的hadoop版本,NN(namenode)是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法 使用。为了解决这个问题,出现了一堆针对HDF...

landy8530
2017/11/25
0
0
Hadoop入门(二) 深入了解Hadoop中NameNode和DataNode的工作机制

数据量越来越多,在一台PC的范围存不下了,那么就分配到更多的PC中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。分布式文件管理系统很多...

wangxueqing52
04/09
0
0
HDFS Federation(HDFS 联盟)介绍

1. 当前HDFS架构和功能概述 我们先回顾一下HDFS功能。HDFS实际上具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。 1.1 命名空间管理 HD...

zqx1787
2014/12/13
0
0
面试问题

358、你们的集群规模? 开发集群:10台(8台可用)8核cpu 359、你们的数据是用什么导入到数据库的?导入到什么数据库? 处理之前的导入:通过hadoop命令导入到hdfs文件系统 处理完成之后的导...

HIVE
2016/07/05
464
2
Hadoop HDFS概念学习系列之NameNode(五)

 HDFS采用Master/Slave架构。NameNode就是HDFS的Master架构。HDFS系统包括一个NameNode组件,主要负责HDFS文件系统的管理工作,具体包括名称空间(namespace)管理,文件Block管理。   Nam...

技术小哥哥
2017/11/14
0
0
Hadoop2.5.2+HA+zookeeper3.4.6详细配置过程

心血之作,在熟悉hadoop2架构的过程耽误了太长时间,在搭建环境过程遇到一些问题,这些问题一直卡在那儿,不得以解决,耽误了时间。最后,千寻万寻,把问题解决,多谢在过程提供帮助的大侠。...

carribean
2015/07/29
0
1
HDFS入门笔记------架构以及应用介绍

引言—HDFS的重要性: Hadoop的定义:适合大数据的分布式存储与计算的一个平台,其中大数据的分布式存储就是由HDFS来完成的,因此掌握好HDFS的相关概念与应用非常重要! 本篇博客将从以下几个...

a2011480169
2016/06/14
0
0
深刻理解HDFS工作机制

 深入理解一个技术的工作机制是灵活运用和快速解决问题的根本方法,也是唯一途径。对于HDFS来说除了要明白它的应用场景和用法以及通用分布式架构之外更重要的是理解关键步骤的原理和实现细节...

张涛泽
2017/04/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 顺序结构和链接结构适用在内存结构中。 顺序表每个单元都是按物理...

DannyCoder
14分钟前
0
0
Firefox 61已经为Ubuntu 提供支持

最新和最好的Mozilla Firefox 61 “Quantum”网络浏览器已经为Ubuntu Linux操作系统的用户提供了支持,现在可以通过官方软件库进行更新。 Mozilla于2018年6月26日发布了Firefox 61版本,该版...

六库科技
40分钟前
0
0
Win10升级后执行系统封装(Sysprep)报错

开始封装 一年多以前开始给公司封装Win10系统,便于统一给公司电脑初始化携带各种软件的系统,致力于装完既可以开发的状态。那时候最新的版本是Win10 1703版本,自然就以他为母盘,然后结合V...

lyunweb
今天
38
0
php 性能优化

#什么情况下会遇到性能问题 PHP 语法使用的不恰当

to_be_better
今天
0
0
Jenkins 构建触发器操作详解

前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。 一、定时构建语法 * * * * * (五颗星,中间用空格隔...

覃光林
今天
0
0
IDEA配置技巧

超详细设置Idea类注释模板和方法注释模板 idea去掉注解param下划线 JetBrains全系列破解

AK灬
今天
0
0
rsync通过服务同步/Linux系统日志/screen工具

rsync通过服务同步 分为服务端(机器A) 和客户端(机器B) 机器A操作编辑/etc/rsyncd.conf配置文件 [root@yolks1 ~]# vim /etc/rsyncd.conf 文件中添加以下配置 port=873 ...

Hi_Yolks
今天
0
0
分发系统介绍expect脚本远程登录expect脚本远程执行命令 expect脚本传递参数

分发系统介绍 分发系统-expect讲解(也就是一个分发的脚本) 场景: 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业...

lyy549745
今天
0
0
android studio 中设置创建类时的说明信息(包含 作者 ,创建时间,注释说明等)

今天简单来说一下android studio开发工具中的 一个小设置功能; 在开发过程中我们习惯给新建的类添加一些注释信息,创建日期、时间和作者等。 设置信息 File—>Settings—>Editor—>File and...

切切歆语
今天
0
0
开源监控利器Prometheus初探

前言: Kubernetes作为当下最炙手可热的容器管理平台,在给应用部署运维带来便捷的同时,也给应用及性能监控带来了新的挑战。本文给大家分享一款十分火热的开源监控工具Prometheus,让我们一...

寰宇01
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部