HDFS,是Hadoop Distributed File System的简称,是Hadoop抽象文件系统的一种实现。Hadoop抽象文件系统可以与本地系统、Amazon S3等集成,甚至可以通过Web协议(webhsfs)来操作。HDFS的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。例如客户端写入读取文件的直接操作都是分布在集群各个机器上的
优点
1 高可用,多副本
2 GB PB级别的数据量
3 廉价机器
缺点
1 不适合低延时
2 不适合小文件处理
3 不适合并发
4 不适合随机文件修改。
1
API
http://hadoop.apache.org/docs/current/api/
源码
2 整体架构
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
主/从体系结构。HDFS集群由一个NameNode组成,它是一个主服务器,管理文件系统名称空间并控制客户端对文件的访问。此外,还有许多datanode,通常集群中每个节点一个,它们管理连接到它们运行的节点的存储。HDFS公开了一个文件系统名称空间,并允许用户数据存储在文件中。在内部,一个文件被分割成一个或多个块,这些块存储在一组数据节点中。NameNode执行文件系统名称空间操作,如打开、关闭和重命名文件和目录。它还确定块到数据节点的映射。DataNodes负责处理来自文件系统客户机的读写请求。datanode还根据NameNode发出的指令执行块创建、删除和复制
2.1 NameNode
2.2 DataNode
2.3 客户端
1 文件切分
2
3
4 管理HDFS 如格式化
5 命令管理HDFS 增删改查
2.4 second NameNode
非NameNode 的热备,不会替换NameNode并提供服务
1
2
3 HDFS 文件存储
分块默认128M,dfs.blocksize 配置
block 大小
1 不能太小,会增加磁盘寻找时间
2 不能太大,会增加传输时间,影响程序响应
理想状态:寻找时间占用传输时间的1%
取决于磁盘的传输速率: