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