HDFS是hadoop的分布式文件系统,全称:Hadoop Distributed Filesystem。由1个master(call me NameNode)和N个slaver组成(call me datanode)。其中namenode负责存储元数据,控制和协调datanode存储文件数据。通过写多份(可定义,默认1)的方式实现数据的可靠性和读取的高效性。
主要特点:
1. 适合存储大文件,对海量小文件效率较低。这主要是由于存储在namenode上的大量小文件的文件元数据会让namenode成为瓶颈。
2. 标准流式访问。一次写入,多次读取是最高效的访问模式,只支持文件的追加写,不支持随机访问。
3. 对数据节点的硬件要求低,可靠性高,单台或多台节点故障一般不会中断服务(只要不是文件所在的所有副本存放节点都故障)
4. 适合做大数据量的离线分析,不适合做第时延的联机事务业务访问。
HDFS的数据块
HDFS的数据块(block)是该文件系统的最小读写单位,默认64M(本地磁盘文件系统一般为512K)之所以设置为比较大的块,目的是最小化寻址时间,使文件系统的传输速度尽可能的取决于磁盘本身的性能。
HDFS的常用命令
Hdfs和其它文件系统一样,提供了命令行方式操作和访问的功能。可以通过命令:hadoop fs 进行操作,而且比较简单和容易理解。
常用命令:
$ hadoop fs –ls <path>
$ hadoop fs –lsr <path> //递归
$ hadoop fs –mkdir <path>
$ hadoop fs –put <localsrc> ... <dst>
$ hadoop fs –cp <src> <dst>
$ hadoop fs –mv <src> <dst>
$ hadoop fs –rm <path>
$ hadoop fs –rmr <path> //递归
$ hadoop fs –cat <src>
Hadoop文件系统
Hadoop有一个抽象的文件系统概念,抽象类:org.apache.hadoop.fs.FileSystem,HDFS只是其中的一个实现。Mapreduce理论上可以运行在任何一个实现中。实现类包括:
• LocalFileSystem:本地文件系统
• DistributedFileSystem:HDFS分布式文件系统
• HftpFileSystem:通过HTTP提供HDFS只读访问的文件系统
• HsftpFileSystem: 通过HTTPS提供HDFS只读访问的文件系统
• HarFileSystem:HDFS归档文件系统
• kosmosFileSystem:CloudStore文件系统
• FTPFileSystem:由FTP提供支持的文件系统
主要特点:
1. 适合存储大文件,对海量小文件效率较低。这主要是由于存储在namenode上的大量小文件的文件元数据会让namenode成为瓶颈。
2. 标准流式访问。一次写入,多次读取是最高效的访问模式,只支持文件的追加写,不支持随机访问。
3. 对数据节点的硬件要求低,可靠性高,单台或多台节点故障一般不会中断服务(只要不是文件所在的所有副本存放节点都故障)
4. 适合做大数据量的离线分析,不适合做第时延的联机事务业务访问。
HDFS的数据块
HDFS的数据块(block)是该文件系统的最小读写单位,默认64M(本地磁盘文件系统一般为512K)之所以设置为比较大的块,目的是最小化寻址时间,使文件系统的传输速度尽可能的取决于磁盘本身的性能。
HDFS的常用命令
Hdfs和其它文件系统一样,提供了命令行方式操作和访问的功能。可以通过命令:hadoop fs 进行操作,而且比较简单和容易理解。
常用命令:
$ hadoop fs –ls <path>
$ hadoop fs –lsr <path> //递归
$ hadoop fs –mkdir <path>
$ hadoop fs –put <localsrc> ... <dst>
$ hadoop fs –cp <src> <dst>
$ hadoop fs –mv <src> <dst>
$ hadoop fs –rm <path>
$ hadoop fs –rmr <path> //递归
$ hadoop fs –cat <src>
Hadoop文件系统
Hadoop有一个抽象的文件系统概念,抽象类:org.apache.hadoop.fs.FileSystem,HDFS只是其中的一个实现。Mapreduce理论上可以运行在任何一个实现中。实现类包括:
• LocalFileSystem:本地文件系统
• DistributedFileSystem:HDFS分布式文件系统
• HftpFileSystem:通过HTTP提供HDFS只读访问的文件系统
• HsftpFileSystem: 通过HTTPS提供HDFS只读访问的文件系统
• HarFileSystem:HDFS归档文件系统
• kosmosFileSystem:CloudStore文件系统
• FTPFileSystem:由FTP提供支持的文件系统
• NativeS3FileSystem和S3FileSystem:由Amazon S3支持的文件系统
HDFS的NameNode/DataNode采用主从模式工作。
其职责为:
NameNode:
作为HDFS的主节点(管理节点)记录文件系统的元数据(metadata),同时管理元数据所在的服务器位置信息,副本数。
DataNode:
作为HDFS的从节点(数据节点)以数据块为单位,管理存储在本地磁盘上的数据块,并将数据块信息上报给NameNode。
Client:
HDFS对外的接口,从NameNode上获取文件所在的位置,并连接DataNode读取、写入数据。
HDFS数据读取流程如下:
1. 业务应用调用HDFSClient提供的API打开文件。
2. HDFS Client联系NameNode,获取到文件信息(数据块、DataNode位置信息)
3. 业务应用调用readAPI读取文件。
4. HDFS Client根据从NameNode获取到的信息,联系DataNode,获取相应的数据块。(Client采用就近原则读取数据)
5. HDFS Client会与多个DataNode通讯获取数据块。
6. 数据读取完成后,业务调用close关闭连接。