HDFS
https://www.cnblogs.com/bainianminguo/p/11986605.html
1、概述 hdfs文件系统主要设计为了存储大文件的文件系统;如果有个TB级别的文件,我们该怎么存储呢?分布式文件系统未出现的时候,一个文件只能存储在个服务器上,
可想而知,单个服务器根本就存储不了这么大的文件;退而求其次,就算一个服务器可以存储这么大的文件,你如果想打开这个文件,效率会高吗 hdfs的出现就是为了解决上面的问题 hdfs为了满足大文件的存储和可读性,对数据进行切成多个小块进行存储,同时为了保证数据的可靠性,又对每个小块数据做复制,然后分别存储到多个节点中. hdfs2.7.3后,默认每个块的大小是128MB,在hdfs1.0的时候,默认每个块的大小是64MB 可以通过修改hdfs的配置文件自定义块大小 hdfs-site.xml文件中的dfs.blocksize 默认每个块的副本数是3,可以通过修改hdfs的配置文件自定义副本数 hdfs-site.xml的dfs.replication 二、hdfs的结构体系 hdfs是一个分布式的文件系统,采用主从(master/slave)的结构体系,一个hdfs集群由NameNode和多个datanode组成,其中namenode作为主节点,
DataNode为从节点 Namenode简称NN DataNode简称DN NN的作用 a、存储元数据信息 b、元数据存储两份,一份在内存中,一份在硬盘中 c、保存文件、block、datanode的映射关系 DN的作用 a、存储block信息 b、block存储在硬盘中 c、维护block和文件的映射关系 数据存储在内存中是为了读取性能,保证效率,数据存储在硬盘中,为了持久化数据,保证数据不丢失 三、hdfs的优缺点 1、hdfs的优点 a、支持超大文件 支持超大文件,这里的超大文件几百MB,几百GB,甚至TB级别大小的文件,一般来说hadoop的文件系统会存储TB级别或者 PB级别的数据,所以在企业节点中,
数据节点可能有上千个 b、检测和快速 应对 硬件故障 在集群中 环境中,硬件故障是常见的问题,因为 有上千台服务器,这样会导致高故障率,因此故障检测和自动 恢复 是hdfs文件系统 的一个设计目标 c、流式数据访问 Hdfs的数据处理规模比较大,应用一次要 访问大量的 数据,同时这些应用一般都是批量处理,而不是用户交互式 处理,应用程序能以流的形式访问数据集,
主要是数据的吞吐量,而不是访问速度;适合做离线数据的处理 d、简化的一致性模型 大部分 hdfs操作文件时,需要一次 写入,多次读取,在 hdfs文件系统中,一个文件块一旦经过 创建,写入,关闭后就不允许 修改了,在hdfs2.7后 ,
才允许对block进行追加修改,但是不能改变已有的数据,这样简单的一致性模型,保证数据操作的简单化 e、高容错性 数据自动保存多个 副本,副本丢失自动恢复 f、可构建在廉价的机器上 构建在廉价的机器上,可以启动通过扩展机器 个数里线性提高存储能力 2、hdfs的缺点 a、低延迟数据访问 低延迟数据 ,如果用户进行交互的应用,比如京东,需要数据在毫秒后者秒级范围内得到响应,由于 hadoop对高吞吐 模型 做了优化,牺牲了获取数据的延迟,
所以对于低延时的应用,不适合 用hadoop,而且hdfs的数据也不是结构化的数据 b、不适合大量小文件 Hdfs支持超大的文件,是通过数据分别在不同的数据节点,数据的元数据保存在namenode上,namenode的内存大小决定了hdfs可以保存的文件数量,虽然现在
内存已经很大,但是大量的 小文件还是会 影响namenode的节点性能,每个block会占用一片内存空间 c、不支持多次写入文件,修改文件 为了保证吞吐量,设计为这样