精华内容
下载资源
问答
  • HDFS读写流程

    2020-01-18 18:47:15
    HDFS读写流程 HDFS的读写流程
    展开全文
  • HDFS 读写流程

    2020-07-04 17:39:46
    HDFS 读写流程 1、写数据流程 1.1、数据写入流程说明: client向nameNode 请求文件上传,nameNode检查目标文件是否存在,父目录是否存在; nameNode返回是否可以上传; client对文件切分,请求第一个block...

                                            HDFS 读写流程

    1、写数据流程

    hdfs写数据流程图


    1.1、数据写入流程说明:

    1. client向nameNode 请求文件上传,nameNode检查目标文件是否存在,父目录是否存在;
    2. nameNode返回是否可以上传;
    3. client对文件切分,请求第一个block传输到哪些DataNode服务器上;
    4. NameNode 返回3个DataNode 服务器DataNode1,DataNode2,DataNode3;
    5. client请求3台中的一台DataNode1(网络拓扑最近的一台)上传数据(RPC,建立pipeline),DataNode1 收到请求继续调用DataNode2 ,然后DataNode2 调用DataNode3 ,将整个pipeline建立完成,然后逐级返回客户端;

    6. dn1、dn2、dn3逐级应答客户端。

    7. Client开始往DataNode 1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位。写入的时候DataNode会进行数据校验。DataNode 1收到一个packet就会传给DataNode 2,DataNode 2传给DataNode 3,DataNode 1每传一个packet会放入一个应答队列等待应答;

    当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block到服务器。(重复执行3-7步); 

    2、读数据流程

     

    2.1、数据读取流程说明

    1. 客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址;
    2. 挑选一台DataNode(网络拓扑就近原则,然后随机)服务器,请求建立socket流读取数据;
    3. DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验);
    4. 客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

    2.2 副本选择

    Replica Selection

    To minimize global bandwidth consumption and read latency, HDFS tries to satisfy a read request from a replica that is closest to the reader. If there exists a replica on the same rack as the reader node, then that replica is preferred to satisfy the read request. If angg/ HDFS cluster spans multiple data centers, then a replica that is resident in the local data center is preferred over any remote replica.

    为了最大程度地减少全局带宽消耗和读取延迟,HDFS尝试满足最接近读取器的副本的读取请求。如果在与读取器节点相同的机架上存在一个副本,则首选该副本以满足读取请求。如果angg / HDFS群集跨越多个数据中心,则驻留在本地数据中心中的副本比任何远程副本都更可取。

     

    The NameNode determines the rack id each DataNode belongs to via the process outlined in Hadoop Rack Awareness. A simple but non-optimal policy is to place replicas on unique racks. This prevents losing data when an entire rack fails and allows use of bandwidth from multiple racks when reading data. This policy evenly distributes replicas in the cluster which makes it easy to balance load on component failure. However, this policy increases the cost of writes because a write needs to transfer blocks to multiple racks.

    For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack. This policy cuts the inter-rack write traffic which generally improves write performance. The chance of rack failure is far less than that of node failure; this policy does not impact data reliability and availability guarantees. However, it does reduce the aggregate network bandwidth used when reading data since a block is placed in only two unique racks rather than three. With this policy, the replicas of a file do not evenly distribute across the racks. One third of replicas are on one node, two thirds of replicas are on one rack, and the other third are evenly distributed across the remaining racks. This policy improves write performance without compromising data reliability or read performance.

     

    NameNode通过Hadoop Rack Awareness中概述的过程确定每个DataNode所属的机架ID 。一个简单但非最佳的策略是将副本放置在唯一的机架上。这样可以防止在整个机架出现故障时丢失数据,并允许在读取数据时使用多个机架的带宽。此策略在群集中平均分配副本,这使得平衡组件故障时的负载变得容易。但是,此策略增加了写入成本,因为写入需要将块传输到多个机架。

    在常见情况下,当复制因子为3时,HDFS的放置策略是将一个副本放置在本地机架中的一个节点上,将另一个副本放置在本地机架中的另一个节点上,最后一个副本放置在不同机架中的另一个节点上。该策略减少了机架间的写流量,通常可以提高写性能。机架故障的机会远小于节点故障的机会。此策略不会影响数据的可靠性和可用性保证。但是,由于一个块仅放置在两个唯一的机架中,而不是三个,因此它确实减少了读取数据时使用的总网络带宽。使用此策略,文件的副本不会在机架上均匀分布。三分之一的副本位于一个节点上,三分之二的副本位于一个机架上,其余三分之一则均匀分布在其余机架上。

     

    展开全文
  • hdfs读写流程

    2020-07-05 11:20:36
    HDFS读写流程详解 一、hfdfs写数据流程 客户端通过Distributed FileSystem模块向NameNode请求上传文件。 NameNode检查目标文件路径父目录是否存在,目标文件是否存在。如果父目录不存在或目标文件已存在,会抛异常...

    HDFS读写流程详解

    一、hfdfs写数据流程

    在这里插入图片描述

    1. 客户端通过Distributed FileSystem模块向NameNode请求上传文件。
    2. NameNode检查目标文件路径父目录是否存在,目标文件是否存在。如果父目录不存在或目标文件已存在,会抛异常。确定可以上传,NameNode会寻找3个空闲的datanode节点,返回一个列表[DN1,DN2,DN3]
      上传文件时要求指定父目录下的目标文件不存在
    3. 客户端通过FSDataOutputStream模块请求DN1上传数据,建立Pipeline连接,DN1收到请求会继续调用DN2,然后DN2调用DN3,将整个Piprline通信管道建立完成。
    4. DN1、DN2、DN3逐级应答客户端。
    5. 客户端开始往DN1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet(64KB)为单位,DN1收到一个packet就会传给DN2,DN2传给DN3。
      DN1 每传一个 packet 会放入一个应答队列等待应答。
    6. 当一个block传输完成之后,客户端再次请求NameNode上传第二个block的服务器。(重复执行2-5步)

    二、hfdfs读数据流程

    在这里插入图片描述

    1. 首先调用FileSystem.open()方法,获取到DistributedFileSystem实例
    2. DistributedFileSystem向Namenode发起RPC(远程过程调用)请求获得文件的开始部分或全部block列表,对于每个返回的块,都包含块所在的DataNode地址。这些DataNode会按照Hadoop定义的集群拓扑结构得出客户端的距离,然后再进行排序。如果客户端本身就是一个DataNode,那么他将从本地读取文件。
    3. DistributedFileSystem会向客户端client返回一个支持文件定位的输入流对象FSDataInputStream,用于客户端读取数据。FSDataInputStream包含一个DFSInputStream对象,这个对象用来管理DataNode和NameNode之间的I/O
    4. 客户端调用read()方法,DFSInputStream就会找出离客户端最近的datanode并连接datanode
    5. DFSInputStream对象中包含文件开始部分的数据块所在的DataNode地址,首先它会连接包含文件第一个块最近DataNode。随后,在数据流中重复调用read()函数,直到这个块全部读完为止。如果第一个block块的数据读完,就会关闭指向第一个block块的datanode连接,接着读取下一个block块
    6. 如果第一批block都读完了,DFSInputStream就会去NameNode拿下一批blocks的location,然后继续读,如果所有的block块都读完,这时就会关闭掉所有的流。
      read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据。最终读取来所有的 block 会合并成一个完整的最终文件。
    展开全文
  • hdfs读写流程在上学期间可没少抄写。。。 HDFS读写流程 一、 写流程 1、 客户端访问NameNode,获取元数据信息,NameNode判断写入的文件是否存在。 1) 如果要写入文件已存在,返回给客户端不可写入。 2) 如果不存在...

    翻了翻以往做的笔记,分享一个hdfs的读写流程
    hdfs读写流程在上学期间可没少抄写。。。

    HDFS读写流程

    一、 写流程
    1、 客户端访问NameNode,获取元数据信息,NameNode判断写入的文件是否存在。
    1) 如果要写入文件已存在,返回给客户端不可写入。
    2) 如果不存在,返回给客户端可以写入、DataNode信息。
    2、 缓存文件第一个块到本地
    3、 缓存块成功后,NameNode会给客户端返回一个DataNode的列表
    1) 列表中是该块可以存放的位置,包括冗余备份
    4、 客户端随机连接到DataNode,把第一个块存进来并备份
    5、 后续文件所有的块重复以上操作,直到文件所有块的写入完成
    6、 删除本地缓存。
    7、 记录文件信息到edits文件中,并更新到NameNode的元数据(内存)中
    8、 直到所有操作完成,写操作完成。
    二、 读流程
    1、客户端与NameNode通讯获取文件的块位置信息,其中包括了块的所有冗余备份的位置信息:DataNode的列表
    2、客户端获取文件位置信息后直接同有文件块的DataNode通讯,读取文件
    3、如果第一个DataNode无法连接,客户端将自动联系下一个DataNode
    4、如果块数据的校验值出错,则客户端需要向NameNode报告,并自动联系下一个DataNode

    都是上学期间的笔记,,,

    展开全文
  • Hadoop:HDFS读写流程

    万次阅读 2020-05-25 15:27:19
    HDFS读写流程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,385
精华内容 6,954
关键字:

hdfs读写流程