HDFS中各个角色和主要功能

1.HDFS各个角色和主要功能.

(1)、Client其主要的职责如下

      (a)、在上传数据的时候对数据进行分块,在进行数据的下载的时候对数据进行合并

      (b)、与NameNode进行通信在进行数据上传的时候获取数据上传时的数据节点,在数据下载的时候获取存储数据的节点

      (c)、与DataNode进行通信进行数据的上传和下载

(2)、NameNode主要的职责如下

      (a)、负责数据块映射信息的管理,在上传数据的时候给Client返回可以上传的数据节点,在需要获取数据的时候返回数据所在的节点,其本身并不存储数据。

      (b)、副本数据的管理策略。

      (c)、管理HDFS的名称空间

(3)、DataNode的主要的职责如下

      (a)、负责数据的存储以及数据的读写。

(4)、SecondaryNameNode主要职责

      (a)、是NM的一个备用。

      (b)、减去NM的负担,对NM中的日志以及镜像文件进行合并在把合并之后的数据发回到NM。

2.HDFS的写过程及内部原理


  1. 使用HDFS提供的客户端开发库,向远程的Namenode发起RPC请求;

    2. Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;

    3. 当客户端开始写入文件的时候,开发库会将文件切分成多个packets(信息包),并在内部以"data queue"的形式管理这些packets,并向Namenode申请新的blocks,获取用来存储replicas(复制品)的合适的datanodes列表,列表的大小根据在Namenode中对replication的设置而定。

    4. 开始以pipeline(管道)的形式将packet写入所有的replicas中。开发库把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline(管道)中的下一个datanode,直到最后一个datanode,这种写数据的方式呈流水线的形式。

    5. 最后一个datanode成功存储之后会返回一个ack packet,在pipeline里传递至客户端,在客户端的开发库内部维护着"ack queue",成功收到datanode返回的ack packet后会从"ack queue"移除相应的packet。

    6. 如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • hadoop HDFS原理解析01 HDFS架构•NameNode•DataNode•Sencondary Nam...
    白菜青萝卜阅读 2,779评论 2 30
  • 1.背景 HDFS最初是参考谷歌GFS论文原理开发的一个开源产品,由Lucene开源项目的创始人Doug Cutt...
    架构禅话阅读 1,460评论 0 2
  • The Hadoop Distributed Filesystem 1. Why HDFS ? When a da...
    须臾之北阅读 513评论 0 0
  • 六十年代末的四川还很落后,家家户户都贫穷。 馒头是一个瘦瘦小小的男孩,最大的愿望就是每天有香喷喷的馒头吃。饥饿的年...
    凯风bule阅读 195评论 0 1
  • 2015年初春的那个晚上 静园宿舍楼下依旧是人头攒动 还带着寒意的风裹挟着春天的生机 在人群中跳跃着 翻滚着 我眼...
    0d895770adff阅读 237评论 0 0