HDFS主要特性和体系结构

引言

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语言库、用户空间文件系统等

参考资料

1、http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html

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

时间: 2024-10-10 04:25:09

HDFS主要特性和体系结构的相关文章

hadoop2.5.2学习及实践笔记(三)—— HDFS概念及体系结构

注:文中涉及的文件路径或配置文件中属性名称是针对hadoop2.X系列,相对于之前版本,可能有改动. 附: HDFS用户指南官方介绍: http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html HDFS体系结构官方介绍: http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.

HDFS、YARN、Mapreduce简介

一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程   1.  Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的设计就是HDFS.MapReduce和YARN,为海量的数据提供了存储和计算. HDFS主要是Hadoop的存储,用于海量数据的存储: MapReduce主要运用于分布式计算: YARN是Hadoop2中的资源管理系统. Hadoop1和Hadoop2的结构对比: Hadoop2主要改进: YARN

2016/06/27 HDFS概述

1.初识HDFS     HDFS作为一个分布式文件系统,具有高容错的特点,它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问(吞吐率:是对一个系统和它的部件处理传输数据请求能力的总体评价),适合那些需要处理海量数据集的应用程序. 1.1 HDFS主要特性 支持超大文件.超大文件在这里指的是几百MB,几百GB甚至几TB大小的文件,一般来说,一个Hadoop文件系统会存储T(1TB = 1024GB).P(1P = 1024T)级别的数据.Hadoop需要能够支持这种级别的大文件. 检测和快速应

SqoopFlume、Flume、HDFS之间比较

Sqoop Flume HDFS Sqoop用于从结构化数据源,例如,RDBMS导入数据 Flume 用于移动批量流数据到HDFS HDFS使用 Hadoop 生态系统存储数据的分布式文件系统 Sqoop具有连接器的体系结构.连接器知道如何连接到相应的数据源并获取数据 Flume 有一个基于代理的架构.这里写入代码(这被称为"代理"),这需要处理取出数据 HDFS具有分布式体系结构,数据被分布在多个数据节点 HDFS 使用 Sqoop 将数据导出到目的地 通过零个或更多个通道将数据流给

HBase简述

简介 HBase(Hadoop Database)是一个多版本,高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HBase利用Hadoop HDFS作为其文件存储系统.提供高可靠,高性能,列存储,可伸缩 ,实时读写,适用于非结构化数据存储的数据库系统. HBase利用Hadoop MapReduce来处理HBase中的海量数据. HBase利用Zookeeper作为分布式协调服务. 特点 数据量大:一个表可以有上亿行,

【教程分享】基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析

基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析 课程讲师:迪伦 课程分类:Java 适合人群:高级 课时数量:96课时 用到技术:MapReduce.HDFS.Map-Reduce.Hive.Sqoop 涉及项目:Greenplum Hadoop大数据分析平台 更新程度:完毕 对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 下载地址:链接:   pan.baidu.com/s/1nthYpKH 密码: niyi 随着云计算.大数据迅速发展,亟需

课程路线

---恢复内容开始--- 云计算&大数据实战课程列表 first.课程说明: 本系列课程适合有一点编程基础的人员学习(比如java,python,c/c++),最好是java编程人员,特别是从事过j2ee开发的人员.学习完本套课程,可以帮助你成为大型项目架构师,特别是数据量大,并发量高的大型项目架构师,当然也能很大程度上提高你的薪资待遇. second.课程路线 third.Linux大纲 这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,NoSQL,Oracl

大数据课程学习流程

第一阶段 Java编程基础→oracle/mysql→sql优化→jdbc 第二阶段 JavaScript基础→JavaScript深入→jQuery→jquery easyui→bootstrap 第三阶段 Servlet/jsp→ajax→xml→svn→maven实战项目一 第四阶段 Struts2→hibernate→spring/spring mvc→项目实战二→web serviceshiro→mybatis→项目实战三 第五阶段linux+搜索+hadoop体系 Linux基础→s

基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析

随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了 8K 以上,工作1年可达到 1.2W 以上,具有2-3年工作经验的hadoop人才年薪可以达到 30万—50万 . 一般需要大数据处理的公司基本上都是大公司,所以学习had