HDFS

作者: Manfestain | 来源:发表于2020-04-03 14:33 被阅读0次

    HDFS(Hadoop Distributed File System),是一个文件系统,用于存储文件,通过目录树来定位文件,其实,它是分布式的,联合多台服务器实现功能。HDFS容错性高,适合处理大数据。
    使用场景:

    1. 适合一次写入,多次读出的场景;
    2. 不支持文件的修改;
    3. 适合于用来做数据分析,不适合用过来做网盘。

    缺点:

    1. 不适合低延时数据访问
    2. 无法高效的对大量小文件进行存储;
      2.1 大量小文件会占用NameNode大量的内存来存储文件目录和块信息。
      2.2 小文件存储的寻址时间会超过读取时间。
    3. 不支持并发写入、文件随机修改;
      3.1 一个文件只能有一个写,不允许多线程同时写。
      3.2 仅支持数据追加,不支持文件的随机修改。

    HDFS组成架构


    HDFS文件块大小

    HDFS的文件在物理上是分块(block)存储的,块的大小可以通过配置参数(dfs.blocksize)来规定,在Hadoop2.x版本中默认是128M,老版本是64M。
    块的大小与磁盘的传输速率有关系:

    1. 在集群的block中,寻址时间为10ms
    2. 当寻址时间为传输时间的1%时,为最佳状态。
      T_{传输时间}=10ms/0.01=1000ms=1s
    3. 目前磁盘的传输速度普遍为100MB/s,因此block的大小为:
      S_{block}=1s*100MB/s=100MB

    HDFS的Shell操作

    1. hadoop fs -help rm:查看rm命令的帮助信息
    2. hadoop fs -ls /显示目录信息
    3. hadoop fs -mkdir -p /user/input:在HDFS上创建目录
    4. hadoop fs -moveFromLocal ./demo.txt /user/input/:将本地的demo.txt文件剪切粘贴到HDFS
    5. hadoop fs -copyFromLocal ./demo.txt /user/input/:将本地的demo.txt文件拷贝到HDFS

    -put命令与-copyFromLocal功能相同

    1. hadoop fs -copyToLocal /user/input/demo.txt ./:将HDFS上的demo.txt拷贝到本地

    -get命令与-copyToLocal功能相同

    1. hadoop fs -appendToFile ./append.txt /user/input/demo.txt:将本地的append.txt中的内容追加到已经存在的文件demo.txt的末尾
    2. hadoop fs -getmerge /user/input/* ./zaiyiqi.txt:将HDFS上/user/input/目录下的所有文件合并下载到本地,并将结果保存在zaiyiqi.txt中。
    3. hadoop fs -du -h /user/统计文件夹的大小

    hadoop fs -du -h -s /:根目录下所有文件夹大小的总和

    1. hadoop fs -setrep 2 /demo.txt设置demo.txt的副本数为2

    当副本数大于数据节点的个数时,数据的实际副本数仍然为节点数,只有当新增节点时,才会生成新的副本,直到增加的节点数与数据的副本数相同时停止。

    相关文章

      网友评论

        本文标题:HDFS

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