大数据(三):HDFS文件系统概述和命令行操作

一、HDFS概述

        随着数据量越来越大,一个操作系统管辖的范围内存不下了,那么久分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统,HDFS只是分布式文件系统中的一种。

        HDFS用于储存文件,通过目录树来定位文件;其次,它还是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

        HDFS的设计适合一次写入,多次读取的场景,且不支持文件的修改。适合用来做数据分析,并不适合来做网盘应用。

HDFS的优点:

  • 高容错性

    • 数据自动保存多个副本,它通过增加副本的形式,提高容错性。

    • 某一个副本丢失以后,它可以自动恢复。

  • 适合大数据处理

    • 数据规模:能过处理数据规格达到GB、TB、甚至达到PB级别的数据

    • 文件规模:能够处理百万级规模以上的文件数量。

  • 流式数据访问

    • 一次写入,多次读取,不能修改,只能追加

    • 它能保证数据的一致性

  • 可构建在廉价机器上,通过多副本机制,提高可靠性

HDFS缺点:

  • 不适合低延时数据访问,比如毫秒级的储存数据,是做不到的

  • 无法高效的对大量小文件进行储存

    • 存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,应为NameNode的内存总是有限的

    • 小文件存储的寻道时间会超过读取时间,违反了HDFS的设计目标

  • 并发写入、文件随机修改

    • 一个文件只能有一个写,不运行多个线程同时写

    • 仅支持数据append,不支持文件的随机修改

HDFS的架构

  • Client:客户端

  • NameNode:管理者(相当于文件的目录)

  • DataNode:NameNode下达命令,DataNode执行实际的操作

  • Secondary NameNode:并非NameNode的热备份。

HDFS文件块大小

        HDFS中的文件在物理上市分块储存(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M(集群模式下,本机模式还是64M),老版本中是64M

        HDFS的块比磁盘的块大,其目的是为了最小化寻址开销,如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个快开始位置所需的时间,因此,传输一个由多个块组成的文件的时间取决于磁盘传输速度。

        如果寻址时间为10ms,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们要将快大小设置为100MB。

二、HDFS命令行操作

基本语法:hadoop fs [OPTIONS]

语法参数:

  • -help:输出这个命令的参数

  • -ls:显示目录信息

  • -mkdir:在hdfs上创建目录

  • -moveFromLocal:从本地文件剪贴粘贴到hdfs

  • -appendToFile:追加一个文件到已经存在的文件末尾

  • -cat:显示文件内容

  • -tail:显示一个文件的末尾

  • -chgrp、-chmod、-chown:linux文件系统中的用法一样,修改文件的所属权

  • -copyFromLocal:从本地文件系统拷贝文件到hdfs

  • -coypToLocal:从hdfs拷贝到本地

  • -cp:从hdfs的一个路径拷贝到hdfs下的另一个路径

  • -mv:在hdfs目录中移动文件

  • -get:等同于coypToLocal,下载hdfs文件到本地

  • -getmerge:合并下载多个文件,通过通配符下载目录下的文件

  • -put:等同于copyFromLocal

  • -rm:删除文件或者文件夹

  • -rmdir:删除空目录

  • -df:统计文件系统的可用空间信息

  • -du:统计文件夹大小信息

  • -setrep:设置hdfs中文件副本数量

猜你喜欢

转载自blog.csdn.net/qq_34886352/article/details/82145396