数据块
HDFS上的文件可能被划分到多个数据块上存储,默认每一个数据块的大小是128M,小于一个块大小的文件不会占据整个块的空间。
HDFS数据块大小的调整会产生什么影响?
HDFS设置大块,可以最小化寻址开销。如果数据块足够大,磁盘上数据的传输时间会明显大于寻址的时间。但是也不应该设置的过大,这是因为MapReduce中map任务通常一次只处理一个数据块中的数据,如果任务数量很少,例如少于集群节点数量,作业的运行速度就会比较慢。
分块的好处
- 文件的大小可以很大,文件的所有块不需要存储在同一个磁盘上;
- 抽象的数据块而不是整个文件作为存储单元,简化存储系统的设计;
- 数据块为单位还适合数据的备份,例如HDFS对数据库进行备份,默认为3。
namenode和datanode
管理节点-工作节点模式
namenode
- 管理节点namenode管理文件系统的命名空间,维护文件系统树及整棵树内所有的文件和目录。这些信息以命名空间镜像文件和编辑日志文件永久保存在本地磁盘上;
- namenode也记录着每个文件中各个块所在的数据节点信息,但并不永久保存块的位置信息,因为这些信息会在系统启动时根据数据节点信息重建;
- namenode是唯一存储元数据与文件到数据块映射的地方;
- 如果运行namenode的机器发生故障,文件系统上所有的文件将会丢失。Hadoop提供两种namenode备份机制:
- 备份组成文件系统元数据持久状态的文件,实时并且原子性的同步到远程挂载的网络文件系统;
- 运行一个辅助namenode,定期合并编辑日志与命名空间镜像,防止编辑日志过大。在namenode发生故障后,启用辅助namenode。因为辅助namenode同步存在延时,需要把存储的持久化系统元数据备份复制到辅助namenode。
datanode
- datanode是文件系统的工作节点,存储并检索数据块,并且定期向namenode发送存储的块的列表;
- 对于频繁访问的文件,对应的块可能被显式地缓存在datanode的内存中。
网友评论