hdfs简单入门

songjy2116 songjy2116     2022-09-18     786

关键词:

为什么我们需要HDFS

文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。

既然读取一块磁盘的所有数据需要很长时间,写入更是需要更长时间(写入时间一般是读取时间的3倍)。我们需要一个巨大文件难道得换传输速度10GB/S的磁盘(现在没有这样的磁盘),而且即使有文件为1ZB,或者小点10EB时,这样的磁盘也无法做到随读随取。

当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上。

从概念图上看,分布化的文件系统会因为分布后的结构不完整,导致系统复杂度加大,并且引入的网络编程,同样导致分布式文件系统更加复杂。

对于以上的问题我们来HDFS是如何迎刃而解的?

HDFS以流处理访问模式来存储文件的。

一次写入,多次读取。数据源通常由源生成或从数据源直接复制而来,接着长时间在此数据集上进行各类分析,大数据不需要搬来搬去。

DFS是用流处理方式处理文件,每个文件在系统里都能找到它的本地化映像,所以对于用户来说,别管文件是什么格式的,也不用在意被分到哪里,只管从DFS里取出就可以了。

一般来说,文件处理过程中无法保证文件安全顺利到达,传统文件系统是使用本地校验方式保证数据完整,文件被散后,难道需要特意安排每个分片文件的校验码?

分片数量和大小是不确定的,海量的数据本来就需要海量的校验过程,分片后加入每个分片的跟踪校验完全是在数满天恒星的同时数了他们的行星。×

HDFS的解决方案是分片冗余,本地校验。

数据冗余式存储,直接将多份的分片文件交给分片后的存储服务器去校验

冗余后的分片文件还有个额外功能,只要冗余的分片文件中有一份是完整的,经过多次协同调整后,其他分片文件也将完整。

经过协调校验,无论是传输错误,I/O错误,还是个别服务器宕机,整个系统里的文件是完整的

分布后的文件系统有个无法回避的问题,因为文件不在一个磁盘导致读取访问操作的延时,这个是HDFS现在遇到的主要问题。

现阶段,HDFS的配置是按照高数据吞吐量优化的,可能会以高时间延时为代价。但万幸的是,HDFS是具有很高弹性,可以针对具体应用再优化。

HDFS的概念

HDFS可以用下面这个抽象图的具体实现

何为元数据?

元数据是用于描述要素、数据集或数据集系列的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等有关的信息。更简单的说,是关于数据的数据。

HDFS就是将巨大的数据变成大量数据的数据。

PS: 磁盘存储文件时,是按照数据块来存储的,也就是说,数据块是磁盘的读/写最小单位。数据块也称磁盘块。构建于单个磁盘上的文件系统是通过磁盘块来管理文件 系统,一般来说,文件系统块的大小是磁盘块的整数倍。特别的,单个磁盘文件系统,小于磁盘块的文件会占用整个磁盘块。磁盘块的大小一般是512字节。

在HDFS中,也有块(block)这个概念,默认为64MB,每个块作为独立的存储单元。

与其他文件系统不一样,HDFS中每个小于块大小的文件不会占据整个块的空间。具体原因在后面的介绍。下面介绍为什么是64MB一个文件块

在文件系统中,系统存储文件时,需要定位该数据在磁盘中的位置,再进行传输处理。

定位在磁盘的位置是需要时间的,同样文件传输也是需要时间。

T(存储时间)=T(定位时间)+T(传输时间)

如果每个要传输的块设置得足够大,那么从磁盘传输数据的时间可以明显大于定位这个块开始位置的时间

T(存储时间)=T(定位时间) )[-∞]+T(传输时间)[∞]

近似等于:T(存储时间)=T(传输时间)

举个例子:我们来传输一个10000MB的文件

单个磁盘下:

存储1个10000MB的文件我们需要时间是

10msX100+1000msX100=101s

10台数据节点: 传输10000MB的文件所花的时间:10msX10+10ms+10s=10.11s

此例子是理论数据,实际比这个稍长。

总结:

这样的设定使存储一个文件主要时间就花在传输过程中,块大小决定传输由多个快组成文件的存储速率,这也是HSDF的核心技术。

当然不是设置每个块越大越好。

HDFS提供给MapReduce数据服务,而一般来说MapReduce的Map任务通常一次处理一个块中的数据,如果任务数太少(少于集群中节点的数量),就没有发挥多节点的优势,甚至作业的运行速度就会和单节点一样。

分布式的文件抽象能够带来的优势是:

1、一个文件可以大于每个磁盘

2、文件不用全在一个磁盘上。

3、简化了存储子系统的设计。

不仅如此,基于元数据块的存储方式非常适合用于备份,利用备份可提供数据容错能力和可用性。

HDFS的关键运作机制

HDFS是基于主从结构(master/slaver)构件。

详细运行机制将在下篇文章介绍。。。。。。

大数据入门-五分钟读懂hdfs

目录大数据入门系列文章一、概念二、架构及组件概念三、读写流程四、大白话五、其他大数据入门系列文章最近在收集整理大数据入门文章,各位盆友关注点赞不迷路,每天都要开心鸭!大数据入门系列文章1.大数... 查看详情

hadoophdfs编程api入门系列之合并小文件到hdfs

   不多说,直接上代码。                  代码packagezhouls.bigdata.myWholeHadoop.HDFS.hdfs7;importjava.io.IOException 查看详情

hdfs入门和基本操作(代码片段)

1、HDFS是做什么的  Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS,hdfs是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它... 查看详情

云小课|mrs基础入门之hdfs组件介绍(代码片段)

...写。本文分享自华为云社区《【云小课】EI第21课MRS基础入门之HDFS组件介绍》,原文作者:Hi,EI。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写 查看详情

hadoophdfs编程api入门系列之路径过滤上传多个文件到hdfs

     不多说,直接上代码。                   代码packagezhouls.bigdata.myWholeHadoop.HDFS.hdfs6;importj 查看详情

hdfs操作实验(代码片段)

...课被认为是入门的专业课是可以的,很多地方都只是一个简单的描述一下体系结构,工作方式等等,这就足够了,多了也听不懂。学习完了这门课,就是深似海的感觉,对讲的内容总是一知半解,可能自己理论确实不太行趴++但... 查看详情

hadoop基础入门:hdfs(代码片段)

目录HDFS架构概述HDFS的优缺点HDFS组成架构*HDFS块大小*HDFS的Shell操作(开发)*HDFS的读写流程*NameNode和SecondaryNameNodeDateNode工作机制HDFSHadoopDistributedFileSystem,简称HDFS,是一个分布式文件系统架构概述NameNode(nnÿ... 查看详情

mapreduce编程入门及hdfs-java接口(代码片段)

文章目录使用Eclipse创建MapReduce工程配置环境新建MapReduce工程分布式文件系统HDFSHDFS-JAVA接口之读取文件HDFS-JAVA接口之上传文件HDFS-JAVA接口之删除文件HDFS-JAVA接口之列举文件夹和文件列举文件夹列举文件HDFS-JAVA接口之创建目录HDFS-JA... 查看详情

hdfs文件读写流程简单图解

在活动反思文件系统中  查看详情

大数据零基础学习hadoop入门教程

1、Hadoop生态概况Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠、高效、可伸缩的特点Hadoop的核心是YA... 查看详情

hdfs设计思想元数据简单javaapi操作hdfs

一、设计思路分布式文件系统在Hadoop中文件系统是一个顶层的抽象。分布式文件系统相当与对文件系统进行了一个扩展(类似于java中的接口)。HDFS是分布式文件系统的一个实现,分布式文件系统还有许多其他的实现。二、设计... 查看详情

《大数据开发》hadoop-hdfs

...(reliable),可扩展的(scalable)分布式计算框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集(pythonjava…)。可扩展:从单个服务器可以横向扩张到数千台计算机,每台计算机都提供本地计算和存储。... 查看详情

kettlekettle入门解析

【Kettle】Kettle入门解析(四) Kettle实战1(增加序列json2hdfs)部分原始数据:user.json如下结果如下??Kettle实战2(字段选择json2hdfs)部分原始数据:user.json如下结果如下??Kettle实战3(switchjson2excel)结果如下??Kettle实战4(笛卡尔... 查看详情

hbase入门

Hbase入门简介HBase是一个构建在HDFS之上的,分布式的,面向列的开源数据库,由GoogleBigTable的开源实现,它主要用于存储海量数据,是Hadoop生态系统中的重要一员。HBase的优势成熟社区成熟理论充分经过实践丰富的工具支持高效将... 查看详情

hadoop入门概念

  一、hadoop的概念(1)什么是大数据  大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。 (2)hadoop的定义  Hadoop是一个由Apache基金会所开... 查看详情

hive入门什么是hive

...HQL作为查询接口;使用HDFS存储;使用MapReduce计算; 简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方 查看详情

hdfs2.0之简单总结

新特性NameNode支持HA命名空间支持分区(Federation)支持ViewFS支持目录快照支持权限ACL支持缓存指定的文件QJM实现名字节点HA(图片来源互联网)命名空间分区(NameNodeFederation)文件系统命名空间进行分组,每组由一个NameNode集群负责管... 查看详情

简单的http请求数据保存到hdfs(代码片段)

使用okhttp工具集来开发:(如果文件已经存在会报错)packagecom.etl;importjava.io.IOException;importorg.apache.commons.lang3.StringUtils;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataOutputStream 查看详情