zoukankan      html  css  js  c++  java
  • 大数据:Hadoop(HDFS 读写数据流程及优缺点)

    一、HDFS 写数据流程

    • 写的过程:

    1.  CLIENT(客户端):用来发起读写请求,并拆分文件成多个 Block;
    2. NAMENODE:全局的协调和把控所有的请求,提供 Block 存放在 DataNode 上的地址;
    3. DATANODE:负责数据的存储,可以有很多个;
    1. 客户端想 NameNode 发出请求(包含 Blocksize 和 副本数);
    2. NameNode 经过计算,反馈给客户端相同副本数的 DataNode,切给出的 DataNode 有优先存储顺序要求;(数据与 DataNode 对应时,一般移动计算,不移动数据)
    3. 客户端得到信息后开始写数据,当第一个 DataNode 接受 Block 时,会将该数据传给第二个 DataNode ,第二个 DataNode 接受到数据时,也会将该数据传递给第三个 DataNode;在最后一个 DataNode 接受数据完毕时,则该 Block 全部传输完毕;
    4. DataNode 在接受数据完毕后,每一个 DataNode 都会将完毕信息传递给 NameNode;
    5. NameNode 将所有 DataNode 反馈的信息(所有数据以传输完毕),反馈给客户端;
    6. 客户端接受到 NamaNode 反馈的信息后(第一个 Block 传输完毕),开始发送请求传输第二个 Block;
    7. 传输完毕后,在关闭请求之前,NameNode 将该文件所有 Block 存放在 DataNode 上的 ID 保存在文件中;

    二、HDFS 读数据的流程

    • 客户端:提供文件名、副本数、Block 数量、Block 地址;
    • NameNode:提供 DataNode 地址及内部位置;
    1. 客户端提供提供文件名、副本数、Block 数量、Block 地址给 NameNode;
    2. NameNode 收到请求后,根据请求给出 副本及其 Block 所存放的 DataNode,以及Block 在 DataNode 中存放的位置;
    3. 客户端根据 NameNode 给的信息,给 DataNode 发出请求,由 DataNode 给出数据所在的具体块的信息;
    4. 客户端根据 DataNode 提供的信息,下载数据;
    • 如果 DataNode 损坏、DataNode 上的数据丢失、数据块异常或者损坏等异常,HDFS会有相应的故障容错措施:

    三、HDFS 的优缺点总结

    • 优点:

    1. 数据冗余(文件以 Block 并且多副本的方式存储在集群的节点上)、硬件容错;
    2. 处理流式的数据访问;(一次写入,多次读取)
    3. 适合存储大文件;(通过扩展 DataNode 来实现存储大文件)
    4. 可构建在廉价的机器上;(降低成本)
    • 缺点:

    1. 低延迟的数据访问;(一般数据较大,不容易实现在秒级别检索数据)
    2. 不适合小文件的存储;(无论文件大小,都有对应的元数据存放在 NameNode 上,如果小文件较多,则对应的元数据较多,对应的元数据所占用的内存信息较大,给NameNode 压力较大)
  • 相关阅读:
    Linux监控端口与性能分析的
    对大数据简单生态的部分认知随笔
    致敬那些年对nginx踩过的坑
    面试中一些比较尴尬的问题
    硬盘的接口有哪几种
    硬盘的逻辑结构
    Oracle数据库的备份与恢复还原笔记
    Linux安装Mysql5.7.29
    [转]为什么会有OPTION请求?
    图解HTTP(5-6章节)---阅后笔记
  • 原文地址:https://www.cnblogs.com/volcao/p/11446657.html
Copyright © 2011-2022 走看看