HDFS学习笔记(一)

    HDFS:Hardoop Distributed File System,即Hardoop分布式文件存储系统。

    HDFS主要有两个重要节点:NameNode和DataNode。前者叫元数据节点,承担Master管理者的角色,维护了一个HDFS的目录树以及HDFS目录结构与真实文件存储位置的映射关系。后者叫数据节点,承担Worker的角色,负责接收和管理block数据块。

    HDFS可以一次写入,多次读取,一般使用于大数据量的处理,不适合做实时交互性很强的事情,会将数据分成block块,一般64M为一个block块。不适合存储大量小文件,因为大量小文件会产生很多碎片,给内存造成极大的负担。HDFS保存多个副本(一般默认3个),提供容错机制,副本丢失或者宕机可以自动恢复。HDFS提供了一个统一的目录树来定位HDFS所有的文件,当客户端访问某个文件时,只需要指定目录位置即可,不需要关注这个文件实际存在的物理位置。

    HDFS中写入操作:客户端Client会按照配置,将一个写入的文件分成若干个block块,然后像Client向NameNode发送写入文件的请求,NameNode记录文件的block信息,然后查询目录结构,给客户客户端返回可用的DataNode信息。然后Client给DataNode发送文件,DataNode存储并且备份。

    现有一个100M的文件A需要存储:首先,Client会将A分成64M的block1和36M的block2。然向NameNode发送写入请求,NameNode记录A文件的这两个block文件信息。然后NameNode查询后给Client返回可用的DataNode,比如block1在host1,host2,host3上,block在host4,host5,host6上。然后Client向DataNode发送block。先将block1按64k的package划分,先将第一个 package发送给host1,host1接收完第一个package后,将第一个package发送个 host2,同时,Client将第二个package发送给host1。依次类推,直到block1发送结束,host1,host2,host3向NameNode发送通知,host1向Client发送通知。然后Client再向NameNode 发送通知,这样block1就写入完成。然后Client重复上述操作向DataNode 发送block2,最后Client向NameNode发送通知,整个写入过程完成。

    注:NameNode具有RackAware机架感知功能,这个可以配置。
    若client为DataNode节点,那存储block时,规则为:副本1,同client的节点上;副本2,不同机架节点上;副本3,同第二个副本机架的另一个节点上;其他副本随机挑选。
    若client不为DataNode节点,那存储block时,规则为:副本1,随机选择一个节点上;副本2,不同副本1,机架上;副本3,同副本2相同的另一个节点上;其他副本随机挑选。

    HDFS中读取操作:HDFS中的一个文件是分成若干个block文件存储的,并且文件存储的位置的节点信息和文件信息是分开的。所以,要读取一个文件,先找到 每个block块的节点信息,然后通过 节点信息访问文件信息。

    读取 上述写入的文件A:Client向NameNode发送读取 文件的请求,NameNode查看目录结构后给Client返回block1和block2在DataNode上的位置。因为 block1和block2是有先后顺序的,所以Client先在host1上读取block1,然后在host4上读取block2。同时,在读读取时,如果Client位于机架内某个DataNode,则优先读取自己本机架的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值