hdfs federation即hdfs的联邦,可以简单理解为多个hdfs集群聚合到一起,更准确的理解是有多个namenode节点的hdfs集群

hadoop1.x的hdfs架构

主要由namespace(命名空间)和Block Storage(块的存储)两层组成

1.namespace

由目录、文件、块组成。

支持创建、删除、修改、列举命名空间相关系统的操作

2.Block Storage

block management:

块的管理,在namenode中完成

通过控制注册和阶段性的心跳来保证datanode正常运行

处理块的信息报告,维护块的位置信息

创建,修改,删除,查询块

管理副本和副本位置

Storage:(在datanode上)

提供对块的读写操作

单namenode架构的局限性

1.namespace命名空间限制
namenode把所有元数据存储在内存中,单个namenode所能存储的对象(文件+块)有限制
2.性能瓶颈(吞吐量)
整个hdfs文件系统的吞吐量受限于单个namenode的吞吐量
3.隔离问题
无法隔离应用程序,一个实验程序,可能影响整个集群
4.单点故障
5.namespace和block management紧密耦合

紧密耦合导致使用另外一种namenode方案比较困难,也限制了其他想使用快存储的应用

6.纵向扩展namenode为什么不可行
启动时间长,调试困难,集群易宕机
比如将Namenode的Heap空间扩大到512GB。 
第一个问题就是启动问题,启动花费的时间太长。当前具有50GB的Heap Namenode的HDFS启动一次大概需要30分钟到2个小时,那512GB呢? 
第二个潜在的问题就是Namenode在Full GC时,如果发生错误将会导致整个集群宕机。

第三个问题是对大JVMHeap进行调试比较困难。优化Namenode的内存使用性价比比较低

Federation架构

1.这些namenode直接相互独立,各自分工管理自己的区域,且不需要互相协调,一个namenode挂掉了不会影响其他的namenode
2.datanode被用作通用的数据存储设备,每个datanode要向集群中所有的namenode注册,且周期性的向所有namenode发送心跳和报告,并执行来自所有namenode的命令
3.一个block pool由属于同一个namespace的数据块组成,每个datanode可能会存储集群中所有block pool 数据块
每个block pool内部自治,各自管理各自的block,不会与其他block pool交流

4.namenode和block pool一起被称作namespace volume,它是管理的基本单位,当一个namespace被删除后,所有datanode上与其对应的block pool也会被删除。当集群升级时,每个namespace volume作为一个基本单元进行升级

Federation关键技术点

命名空间管理
  Federation中存在多个命名空间,在Federation中采用"文件名hash"的方法,因为该方法的locality非常差,
比如:某个目录下的文件,采用"文件名hash"的方法,这些文件可能会被放到不同的namespace中,hdfs要访问所有的namespace,代价太大。

为了方便管理多个命名空间,HDFS Federation采用了经典的Client Side Mount Table

下面四个深色的三角代表4个独立的命名空间,上方的灰色三角形代表从客户角度去访问的子命名空间。

各个深色的命名空间mount到灰色的表中,客户端可以通过不同的挂载点来访问不同的命名空间,如同linux系统中访问不同挂载点一样。这就是federation的基本原理:将各个命名空间挂载到全局mount-table中,就可以将数据全局共享,同样的命名空间挂载到个人的mount-table中,就成为应用程序可见的命名空间视图

Block Pool管理

HDFS Federation的不足
HDFS Federation并没有完全解决单点故障问题。虽然namenode/namespace存在多个,但对于单个namenode来说,仍然存在单点故障。
如果某个namenode挂掉了,其管理的相应文件便不可以访问。
Federation中每个namenode仍然像之前一样,配有一个secondary namenode,以便主namenode挂掉后,用于还原元数据信息

详解hadoop之二:HDFS Federation(联邦)相关推荐

  1. 详解Hadoop核心架构HDFS+MapReduce+Hbase+Hive

    通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS.MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心. 通 ...

  2. CMake手册详解 (十二)

    2019独角兽企业重金招聘Python工程师标准>>> SirDigit CMake手册详解 (十二) CMD#30:find_library查找一个库文件 find_library ...

  3. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

  4. Unicode双向算法详解(bidi算法)(二)

    作者:黄邦勇帅(原名:黄勇)2019-10-17 Unicode双向算法详解(bidi算法)(二) 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C+ ...

  5. AT指令(中文详解版)(二)

    AT指令(中文详解版)(二) 常 用 AT 命 令 手 册   1.常用操作 1.1 AT 命令解释:检测 Module 与串口是否连通,能否接收 AT 命令: 命令格式:AT<CR> 命 ...

  6. 详解 Python qrcode 二维码模块

    原文链接 摘要: 详解 Python qrcode 二维码模块. 项目地址 https://github.com/lincolnloop/python-qrcode 声明 importqrcode 使 ...

  7. c语言标准库详解(十二):非局部跳转setjmp.h

    c语言标准库详解(十二):非局部跳转<setjmp.h> 概述 头文件<setjmp.h>中的声明提供了一种不同于通常的函数调用和返回顺序的方式,特别是,它允许立即从一个深层嵌 ...

  8. java泰坦宙斯之战程序_详解Hadoop作业平台宙斯Zeus.pdf

    详解Hadoop作业平台宙斯Zeus 杨⻜ 分布式研发⼯程师 开源爱好者 技术顾问 邮箱:yangf_sky@163.com 博客:/yangfei001 微博:/u/1664659850 内容⼤纲 ...

  9. 《视频直播技术详解》之二:编码和封装、推流和传输

    视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本.同样,对 ...

最新文章

  1. 真·摸鱼带师!每天工作10分钟年薪57万,这位程序员火了
  2. gulp自动化ES6转ES5
  3. hdu 1753大小数相加
  4. 买股票的最佳时机(六种题解dp)
  5. 那些VisualStudio隐藏的调试功能
  6. React开发(263):react中处理时间的判断
  7. 3 SAP STMS跨服务器传请求号
  8. C#中增量类功能的方式之 继承与扩展
  9. Yann LeCun送你的春节大礼:免费学习全部2020春季深度学习课程
  10. 云计算基础技术及解决方案介绍
  11. 海康DS-2DY5223IW-DM
  12. 在 MQL5 中使用 WININET。第二部分:POST 请求和文件
  13. CUDA 8 下载——CUDA Toolkit 8.0 - Feb 2017
  14. 201771010112罗松《面向对象程序设计(java)》第六周学习总结
  15. 积分墙广告的七个真相(触控软文)
  16. DMA驱动框架流程编写
  17. jBPM4的PVM实现解析
  18. 软件授权码方案(附Python示例代码)
  19. 配电站房环境监测系统中使用的传感器
  20. 基于android 平台的校园二手物品交易系统设计与实现

热门文章

  1. 各种浏览器的USERAGENT格式(useragent)
  2. SQL2000安装问题
  3. sqlserver安装显示句柄无效_SQL Server 安装不成功解决办法
  4. Django-MVC及MTV设计模式:
  5. 我又一个朋友辞掉了公务员
  6. 鼠标的光标不随鼠标移动问题的可能性分析
  7. 一文读懂 Java 字符串相关知识点和常见面试题
  8. Java实现单例模式(懒汉式和饿汉式)
  9. Blender烘焙等距柱状纹理
  10. 零基础初级会计小白必看!两个月快速学习初级会计方法!