Apache Hadoop 2.9.2 的Federation架构设计

                                        作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  能看到这篇文件,说明你对NameNode的工作原理想必已经了如指掌了。也知道他将来会面料的一些弊端,我们知道NameNode在启动时会将镜像文件(fsimage)和编辑日志(edits)从磁盘加载到内存,生成最初的元数据信息后,从而退出安全模式。但是随着数据量越来也多,逐步形成了大数据。根据有关技术报告知道,国内有几家优秀的互联网公司,如百度,腾讯和阿里巴巴等公司数据规模如下:

  • 2013年百度相关技术报告称,百度数据总量接近1000PB,网页的数量大是几千亿个,每年更新几十亿个,每天查询次数几十亿次。
  • 2013年腾讯相关技术报告称,腾讯约有8亿用户,4亿移动用户,总存储数据量经压缩处理以后在100PB左右,日新增200TB到300TB,月增加10%的数据量。 
  • 2013年阿里巴巴相关技术报告称,总体数据量为100PB,每天的活跃数据量已经超过50TB,共有4亿条产品信息和2亿多名注册用户,每天访问超过4000万人次。

  综上所述,单台NameNode需要记录如上所属的公司数据,那定是相当吃力,而且还是6年前的数据信息,尽管你单台NameNode的内存是256G,依旧是不够用的,我们知道HA模式只是增加了集群的可用性,但是并没有负载均衡的作用,因为HA只能有一台机器可以对外提供写操作。那如何解决这个问题呢?其实官方已经想到了这个问题,相比大家也知道,就是联邦模式(Federation),本文将详细介绍如何部署联邦模式。

一.NameNode架构的局限性

1>.Namespace(名称空间)的限制

  就像我们上面提到过的,由于NameNode在内存中存储所有的元数据(metadata),因此单个NameNode所能够存储的对象(文件+块)数据受到NameNode所在JVM的heap size的限制。

2>.隔离问题

  由于HDFS仅有一个NameNode,无法隔离各个程序,因此HDFS上的一个实验程序就很可能影响整个HDFS上运行的程序。

3>.性能的瓶颈

  由于是单个NameNode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个NameNode的吞吐量。

二.HDFS Federation架构设计

  关于HDFS的联邦模式,官方文档是这样说的:(http://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/Federation.html

In order to scale the name service horizontally, federation uses multiple independent Namenodes/namespaces. The Namenodes are federated; the Namenodes are independent and do not require coordination with each other. The Datanodes are used as common storage for blocks by all the Namenodes. Each Datanode registers with all the Namenodes in the cluster. Datanodes send periodic heartbeats and block reports. They also handle commands from the Namenodes.

  这段话并不难理解,作为运维的小伙伴应该很容易明白这其实就是负载均衡,把之前只有一个NameNode进行元数据处理的事情现在交给了多个NameNode来处理,每个NameNode的处理的数据并不重复,当然Federation和HA模式并不冲突,为了解决多个联邦模式出现单点故障,因此,建议大家把联邦模式和HA一起部署,让多个NameNode的处理的元数据都不存在单点故障!

三.HDFS Federation特点总结

1>.通过多个namenode/namespace(Fsimage)把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。

2>.能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。

3>.可以通过多个namespace来隔离不同类型的应用,把不同类型(如图片业务,爬虫业务,日志审计业务)应用的HDFS元数据的存储和管理分派到不同的namenode中(这样隔离行较强)。

4>.不同namenode的namespace(Fsimage)数据他们是无法相互访问的。

四.HDFS Federation部署实战

五.验证 HDFS Federation的可用性

(未完待续........)

Apache Hadoop 2.9.2 的Federation架构设计的更多相关文章

  1. 安装部署Apache Hadoop (本地模式和伪分布式)

    本节内容: Hadoop版本 安装部署Hadoop 一.Hadoop版本 1. Hadoop版本种类 目前Hadoop发行版非常多,有华为发行版.Intel发行版.Cloudera发行版(CDH)等, ...

  2. Apache hadoop namenode ha和yarn ha ---HDFS高可用性

    HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...

  3. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  4. Hadoop学习笔记1---简介 优点 架构分析

    一.Hadoop简介 Hadoop最早起源于Nutch.Nutch是一个开源的网络搜索引擎,由Doug Cutting于2002年创建.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取. ...

  5. 【Hadoop学习】Apache Hadoop ResourceManager HA

    简介 本向导简述了YARN资源管理器的HA,并详述了如何配置并使用该特性.RM负责追踪集群中的资源,并调度应用程序(如MapReduce作业).Hadoop2.4以前,RM是YARN集群中的单点故障. ...

  6. Apache Hadoop RPC Authentication 安全绕过漏洞

    漏洞名称: Apache Hadoop RPC Authentication 安全绕过漏洞 CNNVD编号: CNNVD-201308-425 发布时间: 2013-08-28 更新时间: 2013- ...

  7. Apache Hadoop学习笔记一

    官网:http://hadoop.apache.org/ 1 什么是Hadoop? Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件. Apache Hadoop软件库是一 ...

  8. What Is Apache Hadoop

    What Is Apache Hadoop? The Apache™ Hadoop® project develops open-source software for reliable, scala ...

  9. Apache Hadoop YARN: 背景及概述

    从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程.自此Apache H ...

随机推荐

  1. 谈下git的基本操作

    在工作之后,我比较经常地接触git,关于git的用法,网上有很多的教程,而且git的指令是非常多的,强如阮一峰这样的高手也直言无法记住git的很多指令.实际上我也看了不少关于git指令的文章,个人觉得 ...

  2. Scrapy框架-Spider

    目录 1. Spider 2.Scrapy源代码 2.1. Scrapy主要属性和方法 3.parse()方法的工作机制 1. Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取 ...

  3. SQL练习题题目

    基本语法************************************************************************************************ ...

  4. JS去除掉字符串前后空格

    1. 推荐使用jquery已封装好的方法,非常简单 $.trim(str) jquery的内部实现如下, function trim(str){ return str.replace(/^(\s|\u ...

  5. Oracle硬解析,软解析,软软解析介绍

    Oracle数据库中的CURSOR分为两种类型:Shared Cursor 和 Session Cursor 1,Shared Cursor Oracle里的第一种类型的Cursor就是Shared ...

  6. PHP字符串函数、常量、数组排序

    PHP字符串函数.常量.数组排序 strlen() 说明:strlen(),可以统计字符串长度 用途:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时.(例如,在循环中,我们也许需 ...

  7. vue 相关

    1.vue v-for 循环一个数组,key值报错,但是数据是正常显示的 报错: v-for使用key,需要在key前加上:key;srcList是个数组,key值绑定不能是数据类型Object的it ...

  8. Boolean 类型转换

    原文作者: louis 原文链接: http://louiszhai.github.io/2015/12/11/js.boolean/ 语法 众所周知, JavaScript有五个基本的值类型:num ...

  9. python多线程场景下print丢失

    python多线程情况下,print输出会出现丢失的情况,而logging模块的日志输出不会. 以下是示例代码,多运行几次就会发现这个有意思的现象 # coding:utf-8 import thre ...

  10. c提高第四课

    1.一维数组的初始化 , , }; //3个元素 ] = { , , }; //a[3], a[4]自动初始化为0 ] = { }; //全部元素初始化为0 memset(c, , sizeof(c) ...