HDFS学习记录

1、HDFS只是分布式文件管理系统的一种。

2、HDFS (Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树
来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各
自的角色。
HDFS的使用场景:适合-一次写入,多次读出的场景,且不支持文件的修改。适合用来做数
据分析,并不适合用来做网盘应用。

3、HDFS的优点:

高容错性(数据自动保存多个副本,通过增加副本的形式来提高容错性,当一个副本丢失的时候回自动回复)

适合处理大数据:(数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据; .文件规模:能够处理百万规模以上的文件数量,数量相当之大。)

可以构建在联机的机器上。通过多副本机制,提高可靠性

4、HDFS的缺点:

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

无法高效的对大量小文件进行存储。(存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。)

不支持并发写入,不允许随机修改(一个文件只能有一个写,不允许多个线程同时写,仅支持数据append不支持文件的随机修改)

5、HDFS的组成架构:

Namenode就是master他的主管、管理者(管理HDFS的名称空间、配置副本策略、管理数据块、映射信息、处理客户端读写请求)

Datanode就是slave,namenode下达命令DataNode执行命令(存储实际的数据块、执行数据块的读写操作)

client就是客户端:(文件切分。文件上传HDFS的时候, Client将文件切分成- -个- 一个的Block,然后进行上传;与NarneNode交互, 获取文件的位置信息;与DataNode交互, 读取或者写入数据; Client提供一 些命令来管理HDFS ,比如NameNode格式化;Client可以通讨一 些命今来访问HDFS .比如对HDFS增删吉改操作:

Secondauy NameNode:并非NameNode的热备。当NameNode挂掉的时候, 它并不
能马_上替换NameNode并提供服务。(辅助NameNode, 分担其工作量,比如定期合并F simage和Edits,并推送给N ameNode ;在紧急情况下,可辅助恢复NameNode。

 6、HDFS文件块的大小:

HDFS中的文件在物理上是分块存储( Block)块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在Hadoop2.x版本中是128M,老版本中是64M。(HDFS的块设置太小,会增加寻址时间,程序-直在找块的开始位置)(如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。

7、HDFS的SHELL操作基本语法

 

 

 8、命令大全:

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs

[-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
        [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] <path> ...]
        [-cp [-f] [-p] <src> ... <dst>]
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] <path> ...]
        [-expunge]
        [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getmerge [-nl] <src> <localdst>]
        [-help [cmd ...]]
        [-ls [-d] [-h] [-R] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-usage [cmd ...]]

大概的流向图:(put和copyfromlocal一样)(get和copytolocal一样)(tail - f进行内容追加)

 

 

 

 

 

 

 

posted @ 2020-08-14 22:00  喜欢爬的孩子  阅读(114)  评论(0编辑  收藏  举报