美文网首页工作专题大数据玩转大数据
HDFS分布式文件系统原理及shell的使用

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

作者: DayDayUpppppp | 来源:发表于2017-03-13 22:47 被阅读0次
    1. HDFS简介

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

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

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

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

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

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

    hadoop文件系统为了应付单点故障,默认将文件的副本设定为了3份。(在伪分布模式下面 副本的个数是1份)。当如果一个机器上面副本出现了故障,namenode 和 datanode 通过心跳机制通信,如果namenode发现datanode挂了,在另外的机器读取一个副本并进行存储。(这个过程对用户来说,是透明的)
    <br />
    <li> namenode 和 datanode</li>
    hdfs里面有两类节点,一类是namenode,一类是datanode。namenode的作用是管理文件系统的命名空间,维护整个文件系统的文件目录树,以及这些文件的索引目录。

    datanode用来存储文件块,被客户机和namenode调用。同时,他们通过心跳(heartbeat)定时向namenode发送所存储的文件块信息。
    <br />
    <li> 读写策略</li>
    读取文件的时候,client 先会和namenode通信,告诉namenode要读的文件,然后namenode返回一个离客户机最近的副本。

    image.png

    写文件的流程


    image.png

    </ul>

    3.hdfs的操作和Java API

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

    1. 查看分布式文件系统


      image.png
    2. 查看文件


      image.png
    3. 创建文件夹


      image.png
    4. 从本地拷贝文件到分布式系统


      image.png
    5. 使用put命令 将本地文件上传到分布式文件系统


      image.png
    6. 查看文件系统 (注意这里指明了namenode的位置)


      image.png
    image.png image.png

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


    image.png

    相关文章

      网友评论

        本文标题:HDFS分布式文件系统原理及shell的使用

        本文链接:https://www.haomeiwen.com/subject/yygqnttx.html