HDFS相关概念

博客内容来自《Hadoop权威指南:大数据的存储与分析》第4版,记录一下帮助自己理一下思路

一、数据块

  1. hdfs的块(block)比磁盘的数据块大很多,磁盘数据块一般为512字节,而hdfs的块默认大小为128M。hdfs上的文件被分为多个分块作为独立的存储单元,如果一个文件大小小于hdfs一个分块的大小,这个文件并不会占取整个块的空间。
  2. hdfs中块这么大的原因:hdfs中将块设置得很大,其目的是为了最小化寻址开销,如果块足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置的时间。这样的话,chuan传输一个由多个块组成的大文件的时间就会取决于磁盘的传输速率
  3. 对hdfs中的块进行抽象的好处
    • 一个文件的大小可以大于网络中任意一个磁盘的容量,文件中所有的块并不需要存储在同一个磁盘上,因此他们可以利用集群上任意一个磁盘存储。
    • 使用抽象块作为存储单元而非整个文件,大大简化了存储子系统的设计。将存储子系统的管理对象设置为块,可以简化存储管理,因为块的大小是固定的,所以计算单个磁盘能存储多少块就比较容易;同时也消除了对元数据的顾虑,因为块只存储大块的数据,而元数据并不需要与块一起存储,其他系统可以单独管理元数据。
    • 块非常适合用于数据备份,提供数据容错能力和提高可用性。每个块会复制到几个相互独立的机器中,默认为3个,这样就可以确保在块、磁盘或机器发生故障后数据不会丢失。

二、namenode和datanode

hdfs有两类节点,以管理节点--工作节点模式运行,即一个namenode和多个datanode

  1. namenode:namenode 是管理节点,管理系统的命名空间,维护文件系统数和树内所有的文件和目录;namenode 也记录每个文件中各个块所在的数据节点信息,但是不会永久保存块的位置信息,这些信息会在客户端启动时根据数据节点信息重建。
  2. datanode:文件系统中的工作节点,受客户端或namenode的调度,根据需要存储并检索数据块,并且定期向namenode发送他们所存储的块的列表。
  3. namenode容错机制:如果运行namenode服务的机器损坏,文件系统上的所有文件都会丢失,因为并不知道如何根据namenode的块重建文件,hadoop为namenode提供了两种容错机制
    1. 备份哪些组成组成文件系统元数据持久状态的文件。也就是hadoop通过配置使namenode在多个文件系统上保存元数据的持久状态,这种写操作是实时同步的,而且是原子操作。
    2. 运行一个辅助nemanode,但是不能被用作namenode,它的重要作用是定期合并编辑日志与命名空间镜像,防止编辑日志过大。它会保存合并后的命名空间镜像的副本,在namenode发生故障时启用。

 三、块缓存

通常datanode从磁盘中读取数据,但是对于访问频繁的数据,其对应的块可能被显式地缓存在datanode的内存中,以堆外缓存的形式存在。作业调度器通过在缓存块的datanode上执行任务,可以利用块缓存的有时提高读操作的性能。

posted @ 2018-07-08 17:31  集市里的猫  阅读(151)  评论(0)    收藏  举报