HDFS分布式文件系统原理及shell的使用

1. HDFS简介

Hadoop分布式文件系统(HDFS)被设计成适合运行普通pc上的分布式文件系统。总的设计思想:分而治之——将大文件、大批量文件,分布式存放在大量独立的服务器上,以便于采取分而治之的方式对海量数据进行运算分析。

HDFS是一个主/从(Mater/Slave)体系结构,从最终用户的角度来看,它就像传统的文件系统一样,可以通过目录路径对文件执行CRUD(Create、Read、Update和Delete)操作。
但由于分布式存储的性质,HDFS集群拥有一个NameNode和一些DataNode。NameNode管理文件系统的元数据,DataNode存储实际的数据。

HDFS一般是用来“一次写入,多次读取”,不适合做实时交互性很强的事情,不适合存储大量小文件。

2. HDFS的工作原理以及读写策略


  • block 块

  • 在操作系统里面学过,文件是以块的方式存放在硬盘上面的,块表示了系统读/写文件的最小大小。(操作系统内存分配的原则是段页式分配,也就是有一个页和页框的概念,页框的大小就是块的大小。)

    同理,分布式的文件系统,也有块的概念,大小是128MB。(书上说是64MB,结果自己在电脑上看了一下配置文件,hadoop 2.0以后的版本都变成了128MB)。

    hadoop文件系统为了应付单点故障,默认将文件的副本设定为了3份。(在伪分布模式下面 副本的个数是1份)。当如果一个机器上面副本出现了故障,namenode 和 datanode 通过心跳机制通信,如果namenode发现datanode挂了,在另外的机器读取一个副本并进行存储。(这个过程对用户来说,是透明的)


  • namenode 和 datanode

  • hdfs里面有两类节点,一类是namenode,一类是datanode。namenode的作用是管理文件系统的命名空间,维护整个文件系统的文件目录树,以及这些文件的索引目录。

    datanode用来存储文件块,被客户机和namenode调用。同时,他们通过心跳(heartbeat)定时向namenode发送所存储的文件块信息。


  • 读写策略

  • 读取文件的时候,client 先会和namenode通信,告诉namenode要读的文件,然后namenode返回一个离客户机最近的副本。

    HDFS分布式文件系统原理及shell的使用_第1张图片
    image.png

    写文件的流程


    HDFS分布式文件系统原理及shell的使用_第2张图片
    image.png

3.hdfs的操作和Java API

(注意 下面所有的命令的运行都是 伪分布式模式下运行的结果)

  1. 查看分布式文件系统


    HDFS分布式文件系统原理及shell的使用_第3张图片
    image.png
  2. 查看文件


    HDFS分布式文件系统原理及shell的使用_第4张图片
    image.png
  3. 创建文件夹


    HDFS分布式文件系统原理及shell的使用_第5张图片
    image.png
  4. 从本地拷贝文件到分布式系统


    HDFS分布式文件系统原理及shell的使用_第6张图片
    image.png
  5. 使用put命令 将本地文件上传到分布式文件系统


    HDFS分布式文件系统原理及shell的使用_第7张图片
    image.png
  6. 查看文件系统 (注意这里指明了namenode的位置)


    HDFS分布式文件系统原理及shell的使用_第8张图片
    image.png
image.png
HDFS分布式文件系统原理及shell的使用_第9张图片
image.png

7 使用get命令将文件从分布式文件系统下载到本地


HDFS分布式文件系统原理及shell的使用_第10张图片
image.png

你可能感兴趣的:(HDFS分布式文件系统原理及shell的使用)