Hadoop之HDFS的概念及用法

1、概念介绍

  Hadoop是Apache旗下的一个项目。他由HDFS、MapReduce、Hive、HBase和ZooKeeper等成员组成。

  HDFS是一个高度容错的分布式文件系统。他能够提高吞吐量的数据访问,适合存储海量的大文件。

  HDFS由四部分构成:HDFS client、NameNode、DataNode、Secondary NameNode。

 各组件概念:
  1、HDFS client

  2、NameNode

  用于维护集群内元数据,也就是保存文件存储位置,集群存储方式为一个大文件存储在多个服务器中,而且为了维护健壮性,一个文件有多个备份,这些备份位置都需要存储在NameNode中。

 。。。待编辑

 

a

sdf

 

2、操作(此版本为Hadoop2.7,网上说的另一种editlog和fsimage的存储方式为更早版本

  a) 启动HDFS

    从fsimage文件中读取元数据信息到内存中。

  b) 读文件

    1. 扫描HDFS中的元素据信息。客户端访问NameNode,NameNode把DataNode存放数据的位置等信息(存储的元数据信息),从内存中取来。

    2. 客户端下载文件。客户端根据NameNode提供的元数据信息,与DataNode简历RPC通信,进行IO操作。

  c) 写文件

    1. 客户端与NameNode建立通信。判断存储空间的剩余量,判断所存放的文件的存放分布方式。

    2. NameNode元数据信息落盘。生成一个editlog文件,保存元数据信息和元数据的操作。

    3. 客户端与DadaNode建立通信。进行IO操作

  d) NameNode数据固化

    NameNode在空闲的时候,会把editlog中的元数据信息和操作信息,合并到fsimage(二进制信息,读写快速)文件中。

    每次HDFS启动时,NameNode都会把未合并到fsimage中的数据信息,合并过去。

    SecondartNameNode通过RPC通信,把editlog中的元数据信息和操作信息,合并到fsimage文件中,并推送给NameNode。