zoukankan      html  css  js  c++  java
  • HDFS 写数据流程

    原文:https://www.cnblogs.com/volcao/p/11446657.html

    一、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 压力较大)
  • 相关阅读:
    jqgrid 使用入门
    bootstrap build
    bootstrap ace
    前序中序后序
    蓝桥杯-【交换瓶子】
    蓝桥杯-【剪邮票】【2016年省赛B组题解】--bfs+全排列
    蓝桥杯-【方格填数】【2016年省赛B组题解】
    2018年第九届蓝桥杯【C++省赛B组】【第十题:乘积最大】—贪心算法
    2018年第九届蓝桥杯【C++省赛B组】 第九题——全球变暖(bfs+queue)
    2018年第九届蓝桥杯【C++省赛B组】【第八题:日志统计】尺取法
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/13405462.html
Copyright © 2011-2022 走看看