HDFS(未完)
HDFS 架构概述HDFS(Haadoop Distributed File System)易于扩展的分布式文件系统,运行在大量普通廉价机器上,提供容错机制,为大量用户提供性能不错的文件存取服务。HDFS的架构图之基础架构
NameNode是一个中心服务器,单一结点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端的文件的访问。文件操作,namenode 是负责文件元数据的操作,datanode 负责处理文件内容的读写请求,跟文件内容相关的数据流不经过Namenode,只询问他跟那个dataNode联系,否则NameNode会成为系统的瓶颈。副本存放在那些Datanode上有NameNode 来控制,根据全局情况作出放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低读取网络开销和读取延时NameNode全权管理数据库的复制,它周期性的从集群中的每个DataNode接收心跳信号和状态报告,接收到心跳信号意味着DataNode节点工作正常,块状态包含了一个该DataNode上所有的数据列表。NameNode 与 DataNode 总结概述
NameNodeDataNode存储元数据存储文件内容元数据保存在内存中文件内容保存在磁盘保存文件、 block、DataNode之间的映射关系维护了 block id 到DataNode本地文件的映射关系HDFS的构架之文件的副本机制以及block 块存储
所有的文件都是以block块的方式存放在HDFS文件系统当中,在hadoop1当中,文件的block块默认大小是64M,hadoop2当中,文件的block块大小默认是128M,block快的大小是可以通过hdfs-site.xml 当中的配置文件进行指定。<property><name>dfs.block.size</name><value>块大小 以KB为单位</value>//只写数值就可以</property>抽成数据块的好处1. 一个文件又可以大于集群中任意一个磁盘 10T * 3 / 128 = xxx 块 , 文件方式存一 ->多个block块,这些block属于一个文件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就是zhangsanHDFS文件权限的目的,防止好人做错事,而不是阻止坏人做坏事。HDFS相信你告诉我你是谁,你就是谁。来源:https://www.icode9.com/content-4-754201.html