引言

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。这个项目的地址是http://hadoop.apache.org/core/。

HDFS的主要特性

1.HDFS有以下几个主要特点:

处理超大文件:存储的一个超大文件可以达到数GB级、数TB级、数PB级。

集群规模动态扩展:节点动态加入到集群,可以数百数千个

流式数据读写:HDFS的设计思想“一次写入,多次读取”,一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。HDFS处理的应用一般是批处理,而不是用户交互式处理,注重的是数据的吞吐量而不是数据的访问速度。

运行于廉价的商用机器集群上:HDFS设计时充分考虑可靠性、安全性及高可用性,因此Hadoop对硬件要求比较低,可以运行于廉价的商用机器集群,无需昂贵的高可用性机器

2.HDFS的局限性:

不适合低延迟数据访问:HDFS是为了处理大型数据集,主要是为了达到高的数据吞吐量而设计,这就可能以高延迟作为代价。10毫秒以下的访问可以无视hdfs,不过hbase可以弥补这个缺点

无法高效存储大量小文件:namenode节点在内存中存储整个文件系统的元数据,因此文件的数量就会受到限制,每个文件的元数据大约150字节

不支持多用户写入及任意修改文件:不支持多用户对同一文件进行操作,而且写操作只能在文件末尾完成,即追加操作。

HDFS的体系结构

在一个全配置的集群上,运行HDFS意味着在网络分布的不同服务器上运行一些守护进程(daemon),这些进程有各自的特殊角色,并相互配合,一起形成一个分布式文件系统

数据块

HDFS也有和LInux文件系统类似的块的概念,只不过默认的块的大小是64MB,和普通文件系统类似,HDFS上的文件也进行分块,块作为单独的存储单元,以Linux上普通文件形式保存在数据节点的文件系统中。数据块是HDFS的文件存储单元

HDFS被设计成支持大文件,适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次,但却读取一次或多次,并且读取速度应能满足流式读取的需要。HDFS支持文件的“一次写入多次读取”语义。一个典型的数据块大小是64MB。因而,HDFS中的文件总是按照64M被切分成不同的块,每个块尽可能地存储于不同的Datanode中。

HDFS使用数据块有如下好处:

1、HDFS可以保存比存储节点单一磁盘大的文件

文件块可以保存在不同的磁盘上

2、简化了存储子系统

将管理块和管理文件的功能区分开,简化了存储管理,也消除了分布式管理文件元数据的复杂性

3、方便容错,有利于数据复制

数据块会在不同的机器上进行复制(一般副本数为3,保存在3个不同的地方)

为什么HDFS中要使用这么大的数据块?

可以减少管理数据块需要的开销

Namenode 和 Datanode

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。由于采用了可移植性极强的Java语言,使得HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。

集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。

客户端

客户端是用户和HDFS进行交互的手段,HDFS提供了各种各样的客户端,包括命令行接口、java API、Thrift接口、C语言库、用户空间文件系统等

参考资料

2、《Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理》

简单阐述hdfs的体系结构_HDFS主要特性和体系结构相关推荐

  1. 蛋花花简单阐述HTML5和Web前端的区别

    蛋花花简单阐述HTML5和Web前端的区别!据蛋花花了解随着互联网的快速发展,互联网软件开发行业就随之兴起,如今随着HTML5的广泛应用,大家对web前端行业的关注和了解也日渐增多.根据的蛋花花的了解 ...

  2. 贝塞尔曲线原理(简单阐述)

    贝塞尔曲线原理(简单阐述) https://www.cnblogs.com/hnfxs/p/3148483.html 原理和简单推导(以三阶为例): 设P0.P02.P2是一条抛物线上顺序三个不同的点 ...

  3. 软件体系结构测试定义,软件体系结构复习题.doc

    PAGE \* MERGEFORMAT 2 判断题 软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的. 对 开发视图主要支持系统的功能需求 ...

  4. 计算机网络体系结构物流层,计算机网络体系结构58029.ppt

    计算机网络体系结构58029 第3章 计算机网络体系结构 本章内容 层次化的网络体系结构 开放系统互联参考模型(OSI/RM) TCP/IP体系结构 OSI和TCP/IP的主要层次功能 应用层 传输层 ...

  5. 计算机控制系统体系结构,计算机控制系统的体系结构

    计算机控制系统的体系结构 摘要: 计算机控制系统是计算机与控制理论相结合的产物,它经历了一个不断演变发展的过程:从简单的计算机控制系统逐步发展为多级分布式计算机控制系统.本文从计算机控制系统的硬件与软 ...

  6. cpi 计算机体系结构 转移指令,浅析计算机体系结构和RISC技术

    计算机体系结构的发展趋势 信息技术 口岫N刚Te撼ies 王晓齐文军刘苗辉. (辽宁大连91550部队,辽宁大连116023) 2Q!!△!Q:塑 ondPtoduds 浅析计算机体系结构和RISC技 ...

  7. 什么是计算机的网络体系结构,什么是网络体系结构 网络体系结构介绍【详解】...

    网络体系结构,什么是网络体系结构 通过通信信道和设备互连起来的多个不同地理位置的计算机系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言.交流什么.怎样交流及何时交流,都必须遵循 ...

  8. 冯诺依曼体系结构_极简体系结构之一:冯诺依曼体系结构

    如果要评选计算机领域最重要的理论发明,我会投票给「冯诺依曼体系结构」(von Neumann architecture).冯诺依曼体系结构于1945年被数学家.计算机科学家「冯诺依曼」在论文<F ...

  9. 第一章 计算机体系结构(一)— 体系结构分类

    计算机体系结构分类 1. 计算机体系结构概述 2. 计算机体系结构分类 2-1 按处理机数量分类(宏观) 1.单处理系统 2.并行处理与多处理系统 3.分布式处理系统 2-2 按并行程度分类(微观) ...

最新文章

  1. 射灯安装方法图解_客厅适合用射灯做基础照明吗?又该如何布灯?
  2. jq调用android方法,Android端JQueryMobile使用教程(一)
  3. Java黑皮书课后题第6章:**6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数
  4. 如何判断Customer和Administor
  5. How does model reference pass from app view to master view
  6. 交叉编译及linux简单程序设计,嵌入式实验6交叉编译及Linux简单程序设计实验
  7. python画饼图存在的问题_Matplotlib 绘制饼图解决文字重叠的方法
  8. 阿里云rds for mysql平台介绍_阿里云RDS for MySQL 快速入门——笔记
  9. 内部排序比较(Java版)
  10. 计算机教育调查报告,关于计算机类的教育实习调查报告
  11. plc通信程序 c语言,三菱PLC编程口通信C语言源代码(3)
  12. Locality-sensitive hashing
  13. Word3——大论文中图表题注设置及目录自动生成
  14. 单片机---HLK-W801移植Nes模拟器(二)
  15. Leu-Trp-Leu-COOH,42293-99-2
  16. python笔记003
  17. AI教程 如何在 Illustrator 中创建渐变颜色?
  18. 计算机开机密码有几成,电脑密码设置有哪些类型 电脑开机密码忘了怎么解锁...
  19. 《SQL Server 2008从入门到精通》--20180724
  20. Cannot access ‘state‘ before initialization

热门文章

  1. 思科“万物互联”路线下一站:连接分析
  2. TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘
  3. 数据库多对多设计方案(贴标签的设计方案)
  4. 漫谈“外来的和尚会念经”
  5. mysql 锁的介绍
  6. [转]商业智能在电子商务交易中6大应用分析
  7. java实现的18位×××格式验证算法
  8. 苹果四大供应商向高通索赔90亿;金立否认裁定破产清算
  9. Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离
  10. Android Studio 第一次配置及其使用