zoukankan      html  css  js  c++  java
  • 厦门大学林子雨开设的《大数据技术原理与应用》第三章分布式文件系统HDFS笔记

    HDFS主要是用来做分布式文件存储

    HDFS实现目标:

    1. 兼容廉价的硬件设备
    2. 实现流数据读写
    3. 支持大数据集
    4. 支持简单的文件模型
    5. 强大的跨平台兼容性

    HDFS自身的局限性:

    1. 不适合低延迟数据访问,实时性不高
    2. 无法高效存储大量小文件,索引结构非常庞大
    3. 不支持多用户写入以及修改文件

    相关概念:

    • 块 -> 整个HDFS当中最核心的概念 默认64MB 还可以设计更大 但也不是越大越好
    • 支持大规模文件存储,切割成不同的小块
    • 简化系统设计,方便元数据的管理

    元数据:文件是什么;文件被分成多少块;每个块和文件是怎么映射的;每个块被存储在那个服务器上面。

    适合数据备份,一个块被冗余存储到不同的设备上去

    HDFS两大组件:

    1、NameNode -> 整个HDFS集群的管家,相当于数据目录

      NameNode核心结构:

        FsImage,保存系统的文件树

    •       维护:文件的复制等级
    •       块大小以及组成文件的块
    •       修改和访问时间
    •       访问权限

        EditLog:记录对数据进行的诸如创建、删除、重命名等操作

    每次shell命令启动,FsImage和EditLog合并,形成元数据,之后形成新的FsImage和一个空的EditLog,但是EditLog随着操作的增加,也会不断增大,这时候就需要一个Secondary NameNode来处理。

    Secondary NameNode解决的问题:

    • 为NameNode做冷备份
    • 处理EditLog

    定期地和名称节点进行通信,要名称节点停止使用EditLog文件,拖拽到自己上,之后名称节点生成一个新的Edit.new重新进行读写。然后SecondaryNameNode把FsImage和EditLog拷贝到本地,合并成一个新的FsImage
    ,之后再发送给名称节点,这样既实现了冷备份,又解决了Editlog不断增大的问题。

    2、DataNode -> 存储实际数据,保存到磁盘,存到本地的linux文件系统中


    HDFS命名空间:


    目录/文件/块

    HDFS局限性:

    • 命名空间限制,名称节点是保存在内存中的,因此容纳的对象的个数会受到空间大小的限制。
    • 性能的瓶颈:整个分布式文件的吞吐量,受限于单个名称节点的吞吐量
    • 隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此无法对不同的应用程序进行隔离
    • 集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群不可用。

    第二名称节点为冷备份,并不是热备份,所谓热备份是一个发生故障之后,第二个马上顶上去可以直接使用,而冷备份是第一个发生故障后,必须停止一段时间,慢慢恢复,之后提供对外服务。

    HDFS1.0版本就存在单点故障问题,到了HDFS2.0便提供了热备份,设置了两个名称节点。

    HDFS的存储原理{冗余数据保存的问题,数据保存策略问题,数据恢复的问题}

    1. 冗余数据保存的问题:因为底层会不断的出故障,冗余数据保存的默认因子是3,默认数据块保存3份,可以进行个性化设置。(加快数据传输速度,很容易检查数据错误,保证数据可靠性)
    2. 数据保存策略问题:若是集群内发起的,首先放到发起的数据节点。若不是集群中的,则挑选一个磁盘不太满,cpu不太忙的节点上。第二副本放在不同机架的节点,第三个放到相同机架的别的节点上。
    3. 数据读取:调用API计算所属的机架ID,选取最近的。没有发现则随机选一个副本读取数据。
    4. 数据恢复的问题:名称节点出错(第二名称节点备份恢复),数据节点出错(根据数据节点发送的心跳信息,若不可用了,则标志为宕机,再复制一份到别的机器),数据本身出错(通过校验码验证数据是否出来问题,进行冗余副本的再次复制)。
    5. HDFS常用命令:

  • 相关阅读:
    2008新的一年到来了!
    WPF 回车转Tab实现跳转
    Remoting和WebService/Ref, Out, Params的区别/
    教你如何编写游戏外挂
    在表达式中使用内置报表函数和聚合函数 (Reporting Services)
    Facade模式
    十分经典的批处理教程
    Entity Framework(实体框架)之详解 Linq To Entities 之一 (经典收集自用)
    关于AppDomain 创建实例进行程序集之间的通讯问题
    OPENQUERY用法
  • 原文地址:https://www.cnblogs.com/zxgCoding/p/12638189.html
Copyright © 2011-2022 走看看