HDFS

HDFS是Hadoop应用程序使用的主要分布式存储。HDFS集群主要由管理文件系统元数据的NameNode和存储实际数据的datanode组成。HDFS具有很高的容错性,设计用于部署在低成本硬件上。HDFS提供了对应用程序数据的高吞吐量访问,适用于具有大数据集的应用程序。HDFS允许对文件系统数据进行流访问

HDFS的特点

优点

  1. 分块存储
  1. 块的大小通过参数( dfs.blocksize)来设置
  2. 默认大小为128M
  1. 容错性高
  1. 数据能够自动保存多个副本(副本数量通过参数dfs.replication设置,默认是3)
  2. 若某一个副本丢失,可以自动恢复(HDFS 内部机制实现)
  1. 适合批处理
  1. 它是通过移动计算而不是移动数据
  2. 它能够处理数量大的数据
  1. 流式访问
  1. 一次写入,多次读取
  2. 保证数据的一致性
  1. 部署在低廉的机器上
  1. 多副本机制和自动恢复机制

缺点

  1. 写入和读取速度慢
  1. 频繁的RPC交互
  1. 不能够小文件存储
  1. NameNode的内存是有限的,小文件存储会占用 NameNode大量的内存来存储文件、目录和块信息
  2. 小文件存储的时间会超过读取时间,违反了HDFS的设计目标
  1. 不能够并发写入,修改文件
  1. 一个文件只能有一个写,不允许多个线程同时写
  2. 仅支持数据追加,不支持文件的随机修改

实现分布式存储

HDFS的运行机制

  1. 在上传文件时,用户会指定一个路径
  2. 客户端向NameNode发送上传文件请求,NameNode对上传路径和文件进行判断,最后向客户端返回请求结果
  3. 客户端收到服务器的响应之后,读取客户端配置,将文件分成一个个Block,依次发送到DataNode中
  4. NameNode记录上传路径和块信息等信息存储在元数据中
  5. 服务器进行异步操作,将Block再进行复制,随机存储到一个DataNode中,保证服务器的负载均衡,避免多对一进行访问

HDFS 保障可靠性的措施 hdfs使用什么保证容错性_HDFS

参考资料:http://hadoop.apache.org/docs/stable2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html