hadoop文件系统简介

Hadoop文件系统简介

Hadoop家族中,最重要的两部分内容就是MapReduce和HDFS,其中MapReduce是一种编程范型,这种范型比较适合用来在分布式环境下进行批处理计算。另一部分就是HDFS,即hadoop分布式文件系统。Hadoop环境下可以兼容多种文件系统,包括本地文件系统,体现在文件系统API层面上就是有一个文件系统接口,这个接口可以有多种实现,包括本地文件系统或者分布式文件系统等。

一:HDFS的设计目标

HDFS是用来将数据存储到多台计算机上(计算机集群)为主要设计目标的,它与传统的文件系统有许多不同之处。

(1)首先,HDFS主要用来存储大文件,包括几百M,几百G,几百T大小的文件等,目前HDFS已经有可以用来支持PB级数据存储的Hadoop集群。

(2)HDFS主要用来处理一次写入多次读取的操作,小部分的内容修改不是hadoop擅长的。

(3)HDFS使用商用服务器来组成集群运行hdfs系统。因为没有使用昂贵的硬件,所以单点故障是不可避免的,因此HDFS需要有很强的容错性。即使在单点故障的情况下仍然可以正常运行。

(4)HDFS是为实现高数据吞吐量来优化的,因此少量的数据要求快速访问并不适合。

(5)HDFS使用主从架构,有一个负责管理整个系统的Name节点,这个节点保存整个文件系统的元数据。并且这些数据放到内存中方便快速读取,HDFS中每个文件都会保存相关的系统到Name节点的内存中,因此Name节点是整个系统可存放文件数目的瓶颈。可以使用联邦Name节点机制来扩展HDFS。也因为这个原因,HDFS中不适合存放大量小文件。

(6)HDFS不允许多用户写入,而且写入数据也只是在文件末尾写入,不支持任意位置的写入。

二:HDFS中的基本概念

数据块

1. 磁盘是存储文件的地方,文件系统是基于磁盘进行构建的。磁盘有数据块的概念,数据块是磁盘进行数据读/写的基本单位。磁盘数据块的大小一般为512字节,文件系统中也有数据块的概念,文件系统的数据块大小一般为磁盘数据块大小的整数倍,一般为几千字节。

2. hdfs中也有块的概念,与普通的文件系统一样,hdfs也会将一个文件分成块大小的多个块(chunk),作为独立的存储单元。hdfs中的块很大,默认为64MB。另外,hdfs中小于块大小的文件不会占据整个块的空间。将块设置的如此大的原因是为了最小化寻址时间,使数据请求中传输磁盘数据的时间远大于寻址时间(找到文件块的开始位置)。

3. 使用数据块概念的好处:一个文件大小可以超过网络中任意一个磁盘的大小,可以简化子系统的设计(将数据块与元数据分开),分块可以便于数据备份提高容错能力。

namenode与datanode

1. hdfs以master-slaver模式工作,其中有一个namenode作为主节点,slaver作为从节点。namenode负责管理整个文件系统的命名空间,它是通过在本地磁盘保存两个文件来实现的,分别是命名空间镜像文件和编辑日志文件。namenode保存文件块的相关信息,但不永久保存。因为这些信息会在datanode启动时重建。

2. datanode节点是文件系统的工作节点,存储并且检索数据块,并且定期向namenode发送所存储的块的列表。

3. namenode容错机制,一种是备份组成文件系统元数据持久状态的文件,另一种是运行一个辅助namenode。

4. 联邦hdfs,因为当文件系统中的文件数目巨大时,namenode需要将元数据信息存放到内存中,此时内存成为文件系统的瓶颈,可以利用联邦hdfs机制,使用多个namenode来管理文件系统的元数据,每个namenode管理文件系统中的一部分元数据。

时间: 2024-10-11 22:46:54

hadoop文件系统简介的相关文章

Hadoop学习笔记(3) Hadoop文件系统二

1 查询文件系统 (1) 文件元数据:FileStatus,该类封装了文件系统中文件和目录的元数据,包括文件长度.块大小.备份.修改时间.所有者以及版权信息.FileSystem的getFileStatus()方法用于获取文件或目录的FileStatus对象. 例:展示文件状态信息 public class ShowFileStatusTest{ private MiniDFSCluster cluster; private FileSystem fs; @Before public void

将本地文件复制到复制到Hadoop文件系统

//将本地文件复制到复制到Hadoop文件系统 //目前,其他Hadoop文件系统写入文件时均不调用progress()方法. package com; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.co

嵌入式 Linux根文件系统移植(一)——Linux文件系统简介

嵌入式 Linux根文件系统移植(一)--Linux文件系统简介 本文对文件系统分析的代码来源于linux 2.6.35.7版本. 一.文件系统的体系结构 文件系统是对存储设备上的数据和元数据进行组织的机制,便于用户和操作系统的交互.Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开.Linux文件系统的体系结构如下: 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C库(glibc),为文件系统调用(打开.读取.

hadoop文件系统浅析

1.什么是分布式文件系统? 管理网络中跨多台计算机存储的文件系统称为分布式文件系统. 2.为什么需要分布式文件系统了? 原因很简单,当数据集的大小超过一台独立物理计算机的存储能力时候,就有必要对它进行分区(partition)并存储到若干台单独计算机上. 3.分布式系统比传统的文件的系统更加复杂 因为分布式文件系统架构在网络之上,因此分布式系统引入了网络编程的复杂性,所以分布式文件系统比普通文件系统更加复杂. 4.Hadoop的文件系统 很多童鞋会把hdfs等价于hadoop的文件系统,其实ha

Hadoop 配置文件简介

1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNode结点会先在NameNode上注册,这样它们的数据才可以被利用.独立的客户端程序通过这个URI跟 DateNode交互,以取得文件的块列表. <property> <name>fs.default.name</name> <value>hdfs://localh

显示Hadoop文件系统中一组路径的文件信息

//显示Hadoop文件系统中一组路径的文件信息 //我们可以用这个程序来显示一组路径集目录列表的并集 package com; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.

使用seek()方法,将Hadoop文件系统中的一个文件在标准输出上显示两次

//使用seek()方法,将Hadoop文件系统中的一个文件在标准输出上显示两次 package com; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apac

hadoop2.5.2学习及实践笔记(六)—— Hadoop文件系统及其java接口

文件系统概述 org.apache.hadoop.fs.FileSystem是hadoop的抽象文件系统,为不同的数据访问提供了统一的接口,并提供了大量具体文件系统的实现,满足hadoop上各种数据访问需求,如以下几个具体实现(原表格见<hadoop权威指南>): 文件系统 URI方案 Java实现 (org.apache.hadoop) 定义 Local file fs.LocalFileSystem 支持有客户端校验和本地文件系统.带有校验和的本地系统文件在fs.RawLocalFileS

btrfs文件系统简介及CentOS7下实例

btrfs文件系统简介及CentOS7下实例 由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统.目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性.加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件