`

Hadoop HDFS文件存储特点结构

 
阅读更多
1:什么是HDFS?

HDFS适合做:
1.存储大文件。上G、T甚至P。
2.一次写入,多次读取。并且每次作业都要读取大部分的数据。
3.搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。

HDFS不适合做:
1.实时数据获取。如果有这个需求可以用HBase。
2.很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL(权限管理)、长度、owner、文件内容存放的位置等等信息),所以HDFS上文件的数目受到namenode内存的限制。

3.并发环境下的写入和修改。
hadoop中存储文件以HDFS形式存储,HDFS拥有自己的设计原则:

1:文件大小以block块的形式存储
2:每个块至少分配到三台DataNode(看集群情况而定)
3:通过副本机制提高可靠度和吞吐量
4:hadoop1.0使用单一的master(NameNode)来协调存储元数据(metadata)
5:最有意思的是hadoop设计者没有设置客户端缓存机制,因为我们对处理数据有足够的信心。

下图为HDFS的系统结构



NameNode:主要存储元数据:例如:文件名,拷贝几份,分别备份到哪里;

过程大概如下:
client要向集群中写入数据,首先询问Master(NameNode),Master告知客户端向哪些DataNode写入数据,在往DataNode写入数据的同时,DataNode与NameNode保持心跳,如果DataNode在执行任务失败,NameNode会通过心跳机制得知DataNode死掉,将重新分配新的任务到其他的DataNode。

2:Block之副本放置策略
第一副本:放置在上传文件DataNode,如果是集群外提交,由NameNode选择一台磁盘不太满,CPU不太忙的节点。
第二副本:放置在于第一副本不同的机架的节点上
第三副本:与第二个副本相同集群的节点
也许根据业务的需要我们需要更多地副本,其他副本随机分配
  
3:Block的存储形式
1:Block默认大小64M,如果上传文件小于64M,那么仍然占用一个命名空间(NameNode metadata),
但是物理存储不会占用64M空间;(这也是hadoop为什么不太适合处理小数据的原因之一)

2:Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,Block是不可以再上传后变更的。

转自:http://www.cnblogs.com/zhanghuijunjava/archive/2013/04/22/hadoop-block_hdfs.html

  • 大小: 89.8 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java 从hadoop hdfs读取文件 进行groupby并显示为条形图

    1. **Hadoop HDFS**:Hadoop HDFS是分布式文件系统,用于存储大量数据。它以高容错性和可扩展性为设计目标,使得数据可以在多台机器上分布存储。Java API提供了访问HDFS的接口,例如`org.apache.hadoop.fs....

    《HDFS——Hadoop分布式文件系统深度实践》PDF

    通过阅读《HDFS——Hadoop分布式文件系统深度实践》,读者不仅可以掌握HDFS的基本操作,还能深入了解其内部机制,从而更好地利用HDFS来构建和管理自己的大数据存储系统。书中的实例和实践指导对于提升Hadoop开发者和...

    Hadoop HDFS文件系统技术概述.pptx

    Hadoop HDFS文件系统技术概述 Hadoop Distributed File System(HDFS)是一种分布式文件系统,旨在提供高容错、可靠、可扩展的文件存储解决方案。HDFS来自Google的GFS(Google File System),是GFS的开源版本。 ...

    Hadoop HDFS文件系统技术概述.pdf

    Hadoop HDFS文件系统技术概述 概述:HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件,作为分布式文件系统,HDFS提供了高容错、可扩展、可靠的存储解决方案,广泛应用于大数据处理和分析领域。...

    hadoophdfs写入文件原理详解共2页.pdf.zip

    本文件“hadoophdfs写入文件原理详解共2页.pdf.zip”虽然只有短短两页,但应该涵盖了HDFS文件写入的关键流程。以下是基于该主题的详细知识解析: 1. **HDFS架构**:HDFS是由NameNode和DataNode组成的。NameNode作为...

    I001-hadoophdfs-mkdirs.7z

    标题"I001-hadoophdfs-mkdirs.7z"指向的是一个关于Hadoop HDFS(Hadoop Distributed File System)操作的压缩包文件,特别是关于创建目录(mkdirs)的教程或参考资料。Hadoop是Apache软件基金会开发的一个开源框架,...

    Hadoop中HDFS源代码分析

    Hadoop的基本架构采用主从结构,由一个NameNode作为主节点,管理文件系统的元数据,多个DataNode作为从节点,存储实际的数据块。MapReduce负责分布式计算任务。 #### 1.4 Hadoop集群 Hadoop集群是由多台机器组成的...

    分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析.pdf

    3. Linux FS的结构及其在HDFS中的作用:Linux FS是基于树形结构的文件系统,其中文件存储在树叶节点,而其他节点是目录。Linux FS是HDFS的底层文件系统,这意味着HDFS的每次读写操作都是通过Linux文件系统的读写操作...

    大数据 hdfs hadoop hbase jmeter

    Hadoop是一个开源框架,主要用于存储和处理大规模数据,而HDFS(Hadoop Distributed File System)是Hadoop的核心部分,是一个分布式文件系统,为大数据处理提供了可靠且可扩展的存储解决方案。HBase则是在Hadoop之...

    上传文件到Hadoop失败的原因分析及解决方法.pdf

    本文主要讨论了在 Java Web 程序中上传文件到 Hadoop HDFS 文件系统中失败的原因分析及解决方法。通过对问题的分析和解决,可以总结出以下知识点: 1. Hadoop 文件上传失败的原因分析: 在上传文件到 Hadoop HDFS ...

    Hadoop文件存储结构

    ### Hadoop文件存储结构:深入理解HDFS #### 引言与目标设定 Hadoop分布式文件系统(HDFS)作为一款专为运行在廉价硬件上的分布式文件系统设计,其架构和功能设定旨在应对大规模数据集的高效管理和处理。不同于...

    hdfs官方文档 Hadoop分布式文件系统:结构与设计.pdf

    Hadoop分布式文件系统(HDFS)是为处理大规模数据集而设计的一种高容错性的分布式存储系统。HDFS源于Apache Nutch项目,是Hadoop项目的一部分,旨在支持高吞吐量的数据访问,适用于大规模批量处理任务,而非常规的...

    hadoop hdfs ftp

    标题中的“hadoop hdfs ftp”表明我们正在讨论Hadoop分布式文件系统(HDFS)与FTP(文件传输协议)的结合使用。Hadoop是Apache软件基金会开发的一个开源框架,主要用于处理和存储大量数据,而FTP则是一种标准网络...

    idea hadoop-hdfs插件

    6. 日志查看:在操作HDFS文件时,插件会显示相关的操作日志,帮助开发者追踪和解决问题。 在安装与使用这款插件时,用户需要注意以下几点: 1. 安装流程:首先,从插件市场搜索"Idea hadoop-hdfs插件"并下载,然后...

    JavaWeb操作hadoop2.6 HDFS,从页面上传,下载,列表展示的demo

    HDFS是分布式文件系统,它是Hadoop的核心组件之一,用于存储大量数据。它的设计目标是高度容错性和高吞吐量,适合在廉价硬件上运行。HDFS将大文件分割成块,并将这些块复制到多个节点,以提高数据可用性并确保容错性...

    2大数据技术之Hadoop(HDFS文件系统).doc

    HDFS文件在物理上被分割成固定大小的块,这个块的大小可以通过配置参数`dfs.blocksize`进行设定。默认情况下,在Hadoop 2.x中,块大小为128MB,而在旧版本中为64MB。选择较大的块大小是为了减少寻址开销,使得数据...

    hadoop中hdfs文件(上传、下载、查看)操作.docx

    在Hadoop生态系统中,HDFS(Hadoop Distributed File System)是分布式存储的核心组件,它提供了高容错性和高吞吐量的数据访问。本文件描述的是一个名为`HdfsService`的Java类,该类用于执行HDFS上的基本文件操作,...

    大数据技术之Hadoop(HDFS文件系统).doc

    - HDFS文件在物理上是以块的形式存储,块的大小可以通过配置参数`dfs.blocksize`来设定,默认在Hadoop 2.x版本中为128MB,旧版本为64MB。 - 设置较大的块大小有利于提高读取效率,因为寻址时间相比数据传输时间...

Global site tag (gtag.js) - Google Analytics