支持超大文件
支持超大文件。超大文件在这里指的是几百M,几百GB,甚至几TB大小的文件。一般来说hadoop的文件系统会存储TB级别或者PB级别的数据。所以在企业的应用中,数据节点有可能有上千个。
检测和快速应对硬件故障
在集群的环境中,硬件故障是常见的问题。因为有上千台服务器连接在一起,这样会导致高故障率。因此故障检测和自动恢复是hdfs文件系统的一个设计目标。
流式数据访问
Hdfs的数据处理规模比较大,应用一次需要访问大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据集。主要的是数据的吞吐量,而不是访问速度。
简化的一致性模型
大部分hdfs *** 作文件时,需要一次写入,多次读取。在hdfs中,一个文件一旦经过创建、写入、关闭后,一般就不需要修改了。这样简单的一致性模型,有利于提高吞吐量。
缺点
低延迟数据访问
低延迟数据。如和用户进行交互的应用,需要数据在毫秒或秒的范围内得到响应。由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟来说,不适合用hadoop来做。
大量的小文件
Hdfs支持超大的文件,是通过数据分布在数据节点,数据的元数据保存在名字节点上。名字节点的内存大小,决定了hdfs文件系统可保存的文件数量。虽然现在的系统内存都比较大,但大量的小文件还是会影响名字节点的性能。
多用户写入文件、修改文件
Hdfs的文件只能有一次写入,不支持写入,也不支持修改。只有这样数据的吞吐量才能大。
不支持超强的事务
没有像关系型数据库那样,对事务有强有力的支持。
Hadoop支持的文件系统由很多(见下图),HDFS只是其中一种实现。Java抽象类 orgapachehadoopfsFileSystem 定义了Hadoop中一个文件系统的客户端接口,并且该抽象类有几个具体实现。Hadoop一般使用URI(下图)方案来选取合适的文件系统实例进行交互。
特别的,HDFS文件系统的 *** 作可以使用 FsSystem shell 、客户端(>大数据平台包含了采集层、存储层、计算层和应用层,是一个复杂的IT系统,需要学会Hadoop等分布式系统的开发技能。
11采集层:Sqoop可用来采集导入传统关系型数据库的数据、Flume对于日志型数据采集,另外使用Python一类的语言开发网络爬虫获取网络数据;
12储存层:分布式文件系统HDFS最为常用;采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问 *** 作;集群中的DataNode管理存储的数据。
13计算层:有不同的计算框架可以选择,常见的如MapReduce、Spark等,一般来讲,如果能使用计算框架的“原生语言”,运算效率会最高(MapReduce的原生支持Java,而Spark原生支持Scala);
14应用层:包括结果数据的可视化、交互界面开发以及应用管理工具的开发等,更多的用到Java、Python等通用IT开发前端、后端的能力;
内存一份数据,fsImage存储数据(合并后的数据,即没有追加前数据),edits文件只追加,不参与计算
内存数据 == fsImage+edits
服务器启动:将(fsImage+edits)数据加载到内存
服务器关闭:将 fsImage+edits合并
2nn将fsimage和edits文件定期合并
NameNode 被格式化后,将在/opt/module/hadoop-313/data/tmp/dfs/name/current目录中产生如下文件
2NN 在/opt/module/hadoop-313/data/tmp/dfs/namesecondary/current
NameNode相比较2nn多了edits_inprogress
NameNode被格式化之后,将在/opt/module/hadoop-313/data/tmp/dfs/name/current目录产生如下文件
1)fsimage文件:HDFS文件系统元数据的一个永久性检查点,其中包含HDFS文件系统的所有目录和inode的序列化信息
2)Edits文件:存放HDFS文件系统的所有更新 *** 作的路径,文件系统客户端执行的所有写 *** 作首先会被记录到edits文件中
3)seen_txid:文件保存的是一个数字,就是最后一个edits_数字
4)VERSION,当前nameNode的命名空间,和集群id
(1)基本语法
hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
(2)实 ***
NameNode没有记录块所对应DataNode,DataNode启动后向NameNode汇报自己有哪些文件块
(1)基本语法
hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径
(2)实 ***
只进行追加,不进行合并 *** 作。
在服务器启动进入内存,只加载edits后缀大于fsimage后缀。
hdfs-defaultxml
1)通常情况下,SecondaryNameNode每隔一个小时执行一次。[hdfs-defaultxml]
2)一分钟检查一次 *** 作次数,当 *** 作次数达到1百万次,SecondaryNameNode执行一次。
2nn每隔1分钟,主动查询一次。
通过本节可以知道两个文件fsimage和edits文件作用,通过这两个文件就是NameNode存储的元数据。
HDFS联邦能够解决对文件系统数据的流式处理访问。HDFS 提供文件权限和身份验证。HDFS的简介:
HDFS(Hadoop Distributed File System)是hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。是基于流数据模式访问和处理超大文件的需求而开发的, 可以运行于廉价的商用服务器上。
它所具有的高容错、 高可靠性、 高可扩展性、 高获得性、 高吞吐率等特征为海量数据提供了不怕故障的存储, 为超大数据集(Large Data Set) 的应用处理带来了很多便利。
HDFS是开源的,存储着Hadoop应用将要处理的数据,类似于普通的Unix和linux文件系统,不同的是它是实现了google的GFS文件系统的思想,是适用于大规模分布式数据处理相关应用的、可扩展的分布式文件系统。
HDFS的功能:
1)数据的分布式存储和处理。
2)Hadoop 提供了一个命令接口来与 HDFS 进行交互。
3)namenode 和 datanode 的内置服务器可帮助用户轻松检查群集的状态。
4)对文件系统数据的流式处理访问。
5)HDFS 提供文件权限和身份验证。
nfs hdfs gfs tfs的各项区别:
nfs通过rpcbind这个服务去跟客户端通信的。NFS网络文件系统一般被用来存储共享视频,,附件等静态资源(一般把网站用户上传的文件都放到NFS共享里, 例如BBS 产品的,附件,头次昂,注意网站BBS程序不要放NFS共享里)。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是对中小型企业来讲是非常合适的一个分布式文件系统,大公司或门户除了使用NFS外,还可能会使用MFS,GFS,FASTDFS,TFS等分布式文件系统。
TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。
目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有、商品描述等数据存储。
HDFS 参照了它所以大部分架构设计概念是类似的,比如 HDFS NameNode 相当于 GFS Master,HDFS DataNode 相当于 GFS chunkserver。
但还有些细节不同的地方,所以本文主要分析下不同的地方。
总结如下:
分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)