zoukankan      html  css  js  c++  java
  • 大数据学习总结08

    Hadoop 核心-HDFS 

    一、HDFS概述

    在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在 集群上的文件系统称为分布式文件系统 。HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目. Hadoop 非常 适于存储大型数据 (比如 TB 和 PB), 其就是使用 HDFS 作为存储系统. HDFS 使用多台计算机存 储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统.

    二、HDFS应用场景

    1、适合的应用场景
    ①存储非常大的文件:这里非常大指的是几百M、G、或者TB级别,需要高吞吐量,对延时 没有要求。

    ②采用流式的数据访问方式: 即一次写入、多次读取,数据集经常从数据源生成或者拷贝一 次,然后在其上做很多分析工作 。 运行于商业硬件上: Hadoop不需要特别贵的机器,可运行于普通廉价机器,可以处节约成本

    ③需要高容错性
    ④为数据存储提供所需的扩展能力

    2、不适合的应用场景
    ①低延时的数据访问 对延时要求在毫秒级别的应用,不适合采用HDFS。HDFS是为高吞吐数 据传输设计的,因此可能牺牲延时
    ②大量小文件 文件的元数据保存在NameNode的内存中, 整个文件系统的文件数量会受限 于NameNode的内存大小。 经验而言,一个文件/目录/文件块一般占有150字节的元数据内存 空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级 别的文件数量在现有商用机器上难以支持。
    ③多方读写,需要任意的文件修改 HDFS采用追加(append-only)的方式写入数据。不支持 文件任意oset的修改。不支持多个写入器(writer)

    三、HDFS架构

    HDFS是一个 主/从(Mater/Slave)体系结构,HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。

     


    1、Client:就是客户端。
    ·文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存 储。

    ·与 NameNode 交互,获取文件的位置信息。

    ·与 DataNode 交互,读取或者写入数据。

    ·Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。

    2、NameNode:就是 master,它是一个主管、管理者。
    ·管理 HDFS 的名称空间

    ·管理数据块(Block)映射信息

    ·配置副本策略

    ·处理客户端读写请求。
    3、DataNode:就是Slave。NameNode 下达命令,DataNode执行实际的操作。
    ·存储实际的数据块。

    ·执行数据块的读/写操作。
    4、Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
    ·辅助 NameNode,分担其工作量。

    ·定期合并 fsimage和fsedits,并推送给NameNode。

    ·在紧急情况下,可辅助恢复NameNode。

     

    四、NameNode和DataNode 

    1、NameNode作用

    NameNode在内存中保存着整个文件系统的名称空间和文件数据块的地址映射 整个HDFS可存储的文件数受限于NameNode的内存大小
    ·NameNode元数据信息 文件名,文件目录结构,文件属性(生成时间,副本数,权限)每个 文件的块列表。 以及列表中的块与块所在的DataNode之间的地址映射关系 在内存中加载文件 系统中每个文件和每个数据块的引用关系(文件、block、datanode之间的映射信息) 数据会定 期保存到本地磁盘(fsImage文件和edits文件)
    ·NameNode文件操作 NameNode负责文件元数据的操作 DataNode负责处理文件内容的读写请求,数据流不经过NameNode,会询问它跟那个DataNode联系
    ·NameNode副本 文件数据块到底存放到哪些DataNode上,是由NameNode决定的,NN根 据全局情况做出放置副本的决定
    ·NameNode心跳机制全权管理数据块的复制,周期性的接受心跳和块的状态报告信息(包含该DataNode上所有数据块的列表)若接受到心跳信息,NameNode认为DataNode工作正常,如果在10分钟后还接受到不到DN的心跳,那么NameNode认为DataNode已经宕机 ,这时候 NN准备要把DN上的数据块进行重新的复制。块的状态报告包含了一个DN上所有数据块的列表,blocks report每个1小时发送一次.

    2、DataNode作用提供真实文件数据的存储服务。
    ·DataNode以数据块的形式存储HDFS文件
    ·DataNode响应HDFS 客户端读写请求
    ·DataNode周期性向NameNode汇报心跳信息
    ·DataNode周期性向NameNode汇报数据块信息
    ·DataNode周期性向NameNode汇报缓存数据块信

  • 相关阅读:
    codeforces 1215 E Marbles-----状压DP
    留坑待填
    Catalan数
    砝码称重
    约数和
    硬币题解
    迎春舞会之数字舞蹈
    过剩数
    猜测棋局
    [NOIP普及组2014第三题]螺旋矩阵
  • 原文地址:https://www.cnblogs.com/MoooJL/p/13546591.html
Copyright © 2011-2022 走看看