HDFS:Hadoop Distributed File System:Hadoop分布式文件系统
简介
HDFS为了做到可靠性创建了多份数据块的复制,并将它们放置在服务器群的计算节点中,MapReduce就可以在它们所在的节点上处理这些数据。
HDFS节点
- NameNode:(一般一个)
存储元数据(除文件内容之外的数据,如文件名,大小,权限等)因而,文件越多,NameNode数据越大。
保存在磁盘中,启动时加载到内存中(因此工作过程都是在内存中读数据);
保存文件,block和DataNode之间的映射关系。 - DataNode:(一般多个)
存储文件内容;
保存在磁盘中;
维护了block id到DataNode本地文件的映射关系。 - Secondary NameNode
HDFS运行机制
- 一般一个NameNode和多个DataNode
- 数据复制(冗余机制)
存放的位置:机架感知策略 - 故障检测:
数据节点:心跳包(是否宕机)、块报告(安全模式下检测)、数据完整性检测(校验和比较)
名字节点:日志文件,镜像文件 - 空间回收机制
HDFS架构
HDFS存储单元
- HDFS数据存储单元(block):是逻辑结构,不是磁盘空间
- 文件被切分成固定大小的数据块
默认数据块大小为128(老版本64)M,可配置
若文件大小不到128M,单独存一个block;超过,则被分割在几个block中。
一个block只能存储一个文件的数据。 - 一个文件存储方式
按大小被切分成若干个block,存储在不同的节点上
默认情况下每个block都有三个副本。 - Block大小和副本数通过Client端上传文件时设置。文件上传成功后副本数可以更改。Block size不接更改。
有一个Block的数据损坏,某个块的副本数小于指定数目,系统会自动备份,使数量和设置值一致。
HDFS优点
- 高容错性:数据自动保存多个副本;副本丢失后,自动恢复
- 适合批处理:移动计算而非数据,数据位置暴露给计算框架
- 适合大数据处理:10K+节点
- 可构建在廉价机器上:通过多副本提高可靠性,提供容错和恢复机制
HDFS缺点(不适用于)
- 低延迟数据访问(如订单):毫秒级、低延迟与高吞吐率;
- 小文件存取(可将小文件压缩到一个进行解决,但是压缩后不可更改):占用NameNode大量内存,寻道时间超过读取时间;
- 并发写入、文件随机修改:一个文件只能有一个写者,仅支持append。