hdfs

1、什么是分布式文件系统?

是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。

2、为什么会有分布式文件系统?

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

3、分布式文件系统的优势

1)通透性

2)容错性(因为有副本机制,即使有些节点脱机,整体也不会造成数据损失)

3)不适合小文件(因为hdfs每一个文件都会在namenode中生成对应文件的源信息,如果小文件过多时,会导致源文件过大,namenode的压力太大。)

HDFS:

分为Namenode和Datanode

1、Namenode

维护整个文件系统的文件目录树,文件、目录的源信息和每个文件对应的数据列表。接收用户的操作请求。

文件包括:

1):fsimage:元数据镜像文件,存储某一时段的NameNode内存源数据的信息

2):edits:操作日志文件

3):fstime:文件最后一次的修改时间

2、Datanode

以文件块(block块)的形式存储真实数据。

block块:

默认128MB,最大128M,如果是200M的文件,会分成一个128M和一个72M的文件。

Replication:

为了安全,采用副本机制。默认副本为3个

3、dfsadmin

1)bin/hdfs dfsadmin -setQuota 10 lisi

限制用户最大的文件(目录)数,方便多用户操作

2)安全模式:bin/hdfs dfsadmin –safemode

4、副本存放策略

第一个副本放在客户端所在的datanode节点上(如果客户端不在集群范围内,则这第一个节点是随机选的,不过系统会选择负载较少且离得近的节点)

第二个副本放在与第一个副本不同机架的任意节点上

第三个副本与第二个副本同一机架,任意节点上

5、hdfs操作命令:

1)上传文件:

bin/hdfs dfs -put 文件名 hdfs://主机名或ip:9000/

相当于将文件传到hdfs上

2)下载文件:

bin/hdfs dfs -get hdfs://主机名或ip:9000/aa cd ./

下载到当前目录下

3)移动或重命名(远程到远程)

bin/hdfs dfs -mv hdfs://主机名或ip:9000/aa hdfs://主机名或ip:9000/tmp

6、hadoop操作文件命令

#hadoop fs -ls /  查看HDFS根目录
#hadoop fs -mkdir /test 在根目录创建一个目录test
#hadoop fs -mkdir /test1 在根目录创建一个目录test1
#echo -e 'hadoop second lesson' >test.txt
#hadoop fs -put ./test.txt /test
或#hadoop fs -copyFromLocal ./test.txt /test
#cd .. 
#hadoop fs -get /test/test.txt . 
或#hadoop fs -getToLocal /test/test.txt .
#hadoop fs -cp /test/test.txt /test1
#hadoop fs -rm /test1/test.txt
#hadoop fs -mv /test/test.txt /test1
#hadoop fs -rmr /test1  
#hadoop fs –appendToFile

7:Hadoop Archives

由于hdfs不适合存储大量小文件,Hadoop Archives就是为了缓解存储大量小文件时会消耗namenode的内存的问题。

它可以将大量小文件合并,将其打成har包。

创建文件:

hadoop archive -archiveName xxx.har -p  /src  /dest

将src目录下的所有文件打包成xxx.har,然后将打完的包放在dest下。

查看内容:

hadoop fs -lsr har:///dest/xxx.har

原文地址:https://www.cnblogs.com/tzq9308/p/5093500.html