HDFS(未完)

HDFS 架构概述

HDFS(Haadoop Distributed File System)易于扩展的分布式文件系统,运行在大量普通廉价机器上,提供容错机制,为大量用户提供性能不错的文件存取服务

 

 

HDFS的架构图之基础架构

 

 HDFS(未完)

 

 

 

 HDFS(未完)

 

 

  1. NameNode是一个中心服务器,单一结点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端的文件的访问。
  2. 文件操作,namenode 是负责文件元数据的操作,datanode 负责处理文件内容的读写请求跟文件内容相关的数据流不经过Namenode,只询问他跟那个dataNode联系,否则NameNode会成为系统的瓶颈。
  3. 副本存放在那些Datanode上有NameNode 来控制,根据全局情况作出放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低读取网络开销和读取延时
  4. NameNode全权管理数据库的复制,它周期性的从集群中的每个DataNode接收心跳信号和状态报告,接收到心跳信号意味着DataNode节点工作正常,块状态包含了一个该DataNode上所有的数据列表。

NameNode 与 DataNode 总结概述

                               HDFS(未完)

 

 

 

                    NameNode

                    DataNode

                    存储元数据

                  存储文件内容

             元数据保存在内存中

              文件内容保存在磁盘

保存文件、 block、DataNode之间的映射关系

维护了 block id 到DataNode本地文件的映射关系

 

 

HDFS的构架之文件的副本机制以及block 块存储

 HDFS(未完)

 

 

所有的文件都是以block块的方式存放在HDFS文件系统当中,在hadoop1当中,文件的block默认大小是64Mhadoop2当中,文件的block大小默认是128Mblock快的大小是可以通过hdfs-site.xml 当中的配置文件进行指定。

<property>

    <name>dfs.block.size</name>

    <value>块大小 以KB为单位</value>//只写数值就可以

</property>

 

抽成数据块的好处

  1. 1.   一个文件又可以大于集群中任意一个磁盘 10T * 3 / 128 = xxx 块 , 文件方式存

一 ->多个block块,这些block属于一个文件

  1. 2.   使用块抽象而不是文件可以简化存储子系统
  2. 3.   块非常适合用于数据备份进而提供数据容错能力和可用性。

 

块缓存

通常DataNode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在DataNode的内存中,以堆外块缓存的形式存在。默认情况下,一个块缓存仅在一个DataNode的内存中,当然可以针对每个文件配置DataNode的数量。作业调度器通过在缓存块DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。

 

例如:

连接(Join)操作中使用的一个小的查询表就是块缓存的一个很好的候选。

 

用户或应用通过缓存池中增加一个cache directive 来告诉namenode 需要缓存那些文件及存多久。缓存池是一个拥有管理缓存权限和资源使用的管理性分组。

 

例如一个文件130M,会被切分成2个block块,保存在两个block块里面,实际占用磁盘130M的空间,而不是占用256的磁盘空间。

 

 hdfs 的文件权限验证

hdfs 的文件权限机制与linux系统的文件权限机制类似

 

r:read  w:write  x:execute 权限x对于文件表示忽略,对于文件夹表示是否有权限访问其内容。

 

如果linux 系统用户 zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS当中的owner就是zhangsan

 

HDFS文件权限的目的,防止好人做错事,而不是阻止坏人做坏事。HDFS相信你告诉我你是谁,你就是谁。

 

 

 

上一篇:智能媒体管理(IMM)视频分析在在线教育行业中的应用


下一篇:Hadoop异常解决:本地MapReduce程序无法和云端DataNode通信