大数据Hadoop(二)HDFS基础入门

大家好,我是脚丫先生 (o^^o)
废话不多说,我们开始今天的正文。

在这里插入图片描述


一、HDFS的介绍

1.1 HDFS分布式文件系统

随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操 作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。
官网介绍:

The Hadoop Distributed File System (HDFS) is a distributed file system designed 
to run on commodity hardware. It has many similarities with existing distributed 
file systems. However, the differences from other distributed file systems are 
significant. HDFS is highly fault-tolerant and is designed to be deployed on 
low-cost hardware. HDFS provides high throughput access to application data and 
is suitable for applications that have large data sets. HDFS relaxes a few POSIX 
requirements to enable streaming access to file system data. HDFS was originally 
built as infrastructure for the Apache Nutch web search engine project. HDFS is 
part of the Apache Hadoop Core project. 

翻译: Hadoop 分布式文件系统 (HDFS) 是一种分布式文件系统,旨在运行在商品硬件上。 它与现有的分布式文件系统有很多相似之处。 但是,与其他分布式文件系统的区别是显着的。 HDFS 具有高度容错性,部署在低成本硬件上。 HDFS 提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。 HDFS 放宽了一些 POSIX 要求,以启用对文件系统数据的流式访问。 HDFS 最初是作为 Apache Nutch 网络搜索引擎项目的基础设施而构建的。 HDFS 是 Apache Hadoop Core 项目的一部分。

总之:HDFS是Hadoop中的一个分布式文件系统,其核心设计思想-> 分而治之:将海量大文件,大批量文件,分布式的存放于大量服务器上。以便于采取分而治之的方式对海量数据进行存储,并为之后的运算分析提供数据存储支撑。

1.2 HDFS设计思路

HDFS被设计成用来使用低廉的服务器来进行海量数据的存储,其设计思想:

  • 1、分块存储(把一个大文件切分成多个小文件,每一个节点存储一部分小文件,相当于使用一个集群来联合存储这个文件)
  • 2、冗余存储
    一个数据块存储多个副本。多个副本分散存储在多个不同的节点上。提高副本数,有助于提高数据安全性
    设计:
    HDFS解决海量数据的存储,那么难度在于 怎么存,怎么保证安全。采用一个服务器节点存储一个大文件存不下,那么磁盘不够,则加磁盘(纵向扩展),但是磁盘不是可以无限制增加的。因此,使用更多的服务器来存储(横向扩展),既然需要很多服务器去存储数据,那么企业就应该考虑是否有足够的资金去购买这么多服务器呢。所以最后选择在廉价的商用机器上进行海量数据存。 保证数据安全:HDFS的设计者采取了一种最简单也是方式:存一份不够,存多份。
    那么怎么保证高效呢?
    1、机架感知,保证数据块的存放有一个最高效的策略
    2、负载均衡 (每个节点所以承担的数据一样,也就是所存储的副本数据一样多。但是总是会发生数据倾斜)
    3、安全模式
    4、Trash机制
    5、Archeive归档解决海量小文件存储问题
    6、执行流时数据访问
    7、执行自动副本维护

1.3 HDFS架构

在这里插入图片描述
架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。
(1) Client:就是客户端。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行存储。
(2) NameNode:就是Master,它是一个主管、管理者。负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。HDFS 中的元数据分别在内存和磁盘中都存储了一份完整的,保证了安全性同时提高了效率,因为磁盘:读写慢,数据安全。内存:读写快,但是掉电丢失数据。
(3) DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。存储文件块数据(也就是存储文件的数据),以及块数据的校验和。
(4)Secondary NameNode:辅助NameNode,分担其工作量。定期合并Fsimage和Edits,并推送给NameNode; 在紧急情况下,可辅助恢复NameNode。

1.4 特性

  • 1、HDFS 中的文件在物理上是分块存储(block),块的大小可以通过配置参数 dfs.blocksize 来规定,默认大小在 hadoop-2.x 版本中是128M,老版本 hadoop-1.x 中是64M,但是可以在使用的时候由客户端自由指定。
  • 2、HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:
hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
  • 3、HDFS的副本机制,通过对数据进行多个副本,存储在不同的节点来保证数据的安全性。
dfs.replication = 3

如果副本数比较大,那么这个HDFS集群是比较消耗磁盘空间的!

二 HDFS优缺点

2.1 优点

  • 1、可构建在廉价机器上
  • 2、高容错性
  • 3、适合批处理
  • 4、适合大数据处理
  • 5、流式文件访问

2.2 缺点

  • 1、低延迟数据访问: 比如毫秒级,低延迟与高吞吐率
  • 2、小文件存取:占用 NameNode大量内存
  • 3、并发写入、文件随机修改

三、HDFS不适合存储小文件

元信息存储在NameNode内存中,一个节点的内存是有限的存取大量小文件消耗大量的寻道时间,类比拷贝大量小文件与拷贝同等大小的一个大文件。NameNode存储block数目是有限的,一个block元信息消耗大约150 byte内存,存储1亿个block,大约需要20GB内存,如果一个文件大小为10K,则1亿个文件大小仅为1TB(但要消耗掉NameNode 20GB内存)
HDFS关于小文件的解决:
1、同种类型的小文件可以考虑合并
2、建立成归档文件
3、如果涉及到计算问题,一定要要进行自定义,让mapreduce的程序按照我们的自定义逻辑是先默认情况下:一个HDFS的文件的数据块,就会针对性的启动一个小任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据指北Ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值