美文网首页程序员
初识Hadoop之HDFS

初识Hadoop之HDFS

作者: 名字想好没 | 来源:发表于2018-12-17 22:27 被阅读0次

    原文地址: https://itweknow.cn/detail?id=54 ,欢迎大家访问。

    练习本文中提到的命令行接口的前提条件是至少在一台linux机器或者虚拟机上安装了单机版的Hadoop,当然了如果你有一个集群的话更好了。如果你还不知道如何在Linux上安装Hadoop的话,请戳这里。

    概念

    DFS是分布式文件系统(distributed filesystem)的简称,而HDFS即Hadoop Distributed Filesystem,是Hadoop自带的分布式文件系统。

    HDFS的一些特性

    • 存储超大文件
      由于HDFS是分布式的文件系统,所以不受单台机器的存储大小的限制,可以存储超大文件,目前已经达到了PB级了。
    • 流式访问数据
    • 商用硬件
      Hadoop可以运行在廉价的商用硬件,这样带来的问题就是节点的故障率会比较高。所以HDFS被设计成能够无缝式的处理上述故障并且继续运行,不让用户察觉到明显的中断。
    • 不适合低时间延迟的数据访问
      由于Hadoop的流式数据访问,访问数据的会有写延迟,所以不太适合低时间延迟的数据访问,一般情况下这种需求我们会使用关系型数据库来实现。
    • 不适合大量小文件
      不适合的原因是namenode将文件系统的元数据存储在内存中,每存储一个文件都需要在namenode中存储该文件的目录、存储的datanode等数据。所以如果文件的数量达到数十亿的话namenode的内存很可能不够用了。
    • 不支持多用户写入,任意修改文件
      HDFS只支持单个写入者,而且支持在文件的末尾添加内容,不能任意的修改文件。

    与HDFS相关的一些名词

    • NameNode
      管理节点,管理系统的命名空间,维护着整个文件系统的结构和目录信息,通常情况下一个Hadoop集群只会有一个工作的NameNode。
    • DataNode
      工作节点,文件系统的工作节点,主要是根据需要进行存储或者检索数据块,并且定期向NameNode报告它们所存储的数据块列表。
    • 数据块
      同我们常使用的磁盘上的文件系统一样,HDFS也有数据块的概念,默认的大小为128M。
    • 块缓存
      一般情况下,我们通过HDFS从DataNode中检索数据时,DataNode都是从磁盘中读取,但是对于访问很频繁的文件,它所对于的数据块可能会被缓存到DataNode的内存中,以加快读取速度,这就是所谓的块缓存。
    • 联邦HDFS
      其实这个就是为了解决Hadoop不适合存储数量庞大的文件的问题,同时由多个NameNode来维护整个文件系统的系统树以及文件和目录,每个NameNode负责管理文件系统命名空间中的一部分。
    • 高可用性
      主-备模式,当主NameNode失效后,备用NameNode会很快生效,并接管工作。

    命令行接口

    命令行接口是HDFS所有类型的接口中最简单的,也是每个开发者都必须要掌握的。​

    • 创建目录
    ​hadoop fs -mkdir /test
    
    • 查看目录
    hadoop fs -ls /
    
    • 上传文件
    hadoop fs -put test.txt /test
    

    紧跟-put后面的test.txt是要推送到HDFS中的文件,/test是指定要推送到HDFS上哪个目录下面。

    • 删除文件
    hadoop fs -rm /test/test.txt​
    

    其实通过上面例举的几个命令我们可以看出HDFS的文件操作命令几乎和Linux上的命令一致,这样我们使用起来会很容易上手。在下篇文章中,我们将介绍一下HDFS的Java API。

    相关文章

      网友评论

        本文标题:初识Hadoop之HDFS

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