大数据技术之Hadoop(HDFS)第1章 HDFS概述

Posted 五角钱的程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据技术之Hadoop(HDFS)第1章 HDFS概述相关的知识,希望对你有一定的参考价值。

  点击上方“ 五角钱的程序员 ”,选择“ 设为星标
第一时间关注技术干货!

✨一起学习、成长、温情的热爱生活✨  




    

    参考:尚硅谷adoop教程

    链接:http://i8n.cn/U4sxdj





前言

Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

HDFS有着高 容错性 (fault-tolerant)的特点 ,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

1 HDFS产出背景及定义

1.1 HDFS产生背景

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

1.2 HDFS定义

HDFS (Hadoop Distributed File System),它是一个文件系统, 用于存储文件,通过目录树来定位文件; 其次,它是分布式 的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。 适合用来做数据分析,并不适合用来做网盘应用。

2 HDFS优缺点 

2.1优点 

1)高容错性
(1)数据自动保存多个副本。它通过增加副本的形式,提高容错性。

大数据技术之Hadoop(HDFS)第1章 HDFS概述

(2)某一个副本丢失以后,它可以自动恢复。

大数据技术之Hadoop(HDFS)第1章 HDFS概述

2)适合处理大数据
(1)数据规模:能够处理数据规模达到GB、TB、  甚至PB级别的数据 ;
(2)文件规模:能够处理
百万 规模以上的 文件数量 ,数量相当之大。
3)可 构建在廉价机器上 ,通过多副本机制,提高可靠性。

2.2 缺点 

1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的
2) 无法高效的对大量小文件进行存储
(1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;
(2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3)不支持并发写入、文件随机修改。
(1)一个文件只能有一个写,不允许多个线程同时写;
(2)
仅支持数据append(追加) ,不支持文件的随机修改。
大数据技术之Hadoop(HDFS)第1章 HDFS概述

3 HDFS组成架构 

HDFS集群的节点分为两类:namenode和datanode,以管理节点-工作节点的模式运行,即一个namenode和多个datanode,理解这两类节点对理解HDFS工作机制非常重要。
1)NameNode(nn):就是Master,它是一个主管、管理者。
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
2)DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。
大数据技术之Hadoop(HDFS)第1章 HDFS概述
3)Client:就是客户端。
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
(2)与NameNode交互,获取文件的位置信息
(3)与DataNode交互,读取或者写入数据;
(4)Client提供一些命令来管理HDFS,比如NameNode格式化;
(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作;

4)Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
namenode作为管理节点,它的地位是非同寻常的,一旦namenode宕机,那么所有文件都会丢失,因为namenode是唯一存储了元数据、文件与数据块之间对应关系的节点,所有文件信息都保存在这里,namenode毁坏后无法重建文件。因此,必须高度重视namenode的容错性。
(1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;
(2)在紧急情况下,可辅助恢复NameNode。

4 HDFS文件块大小(面试重点)

每个磁盘都有默认的数据块大小,这是文件系统进行数据读写的最小单位。这涉及到磁盘的相应知识,这里我们不多讲。

HDFS同样也有数据块的概念,默认一个块(block)的大小为128MB(HDFS的块这么大主要是为了最小化寻址开销),要在HDFS中存储的文件可以划分为多个分块,每个分块可以成为一个独立的存储单元。与本地磁盘不同的是,HDFS中小于一个块大小的文件并不会占据整个HDFS数据块。

对HDFS存储进行分块有很多好处:

  • 一个文件的大小可以大于网络中任意一个磁盘的容量,文件的块可以利用集群中的任意一个磁盘进行存储。

  • 使用抽象的块,而不是整个文件作为存储单元,可以简化存储管理,使得文件的元数据可以单独管理。

  • 冗余备份。数据块非常适合用于数据备份,进而可以提供数据容错能力和提高可用性。每个块可以有多个备份(默认为三个),分别保存到相互独立的机器上去,这样就可以保证单点故障不会导致数据丢失。


HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数( dfs.blocksize)来规定, 默认大小在Hadoop2.x版本中是128M,老版本中是64M。

思考:为什么块的大小不能设置太小,也不能设置太大? 

(1)HDFS的块设置 太小,会增加寻址时间 ,程序一直在找块的开始位置;
(2)如果块设置的 太大 ,从 磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间 。导致程序在处理这块数据时,会非常慢。
总结: HDFS块的大小设置主要取决于磁盘传输速率。
总结:

HDFS(Hadoop Distributed File System)是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件,在整个Hadoop中的地位非同一般,是最基础的一部分,因为它涉及到数据存储,MapReduce等计算模型都要依赖于存储在HDFS中的数据。HDFS是一个分布式文件系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上。

这里重点介绍其中涉及到的几个概念:(1)超大文件。目前的hadoop集群能够存储几百TB甚至PB级的数据。(2)流式数据访问。HDFS的访问模式是:一次写入,多次读取,更加关注的是读取整个数据集的整体时间。(3)商用硬件。HDFS集群的设备不需要多么昂贵和特殊,只要是一些日常使用的普通硬件即可,正因为如此,hdfs节点故障的可能性还是很高的,所以必须要有机制来处理这种单点故障,保证数据的可靠(4)不支持低时间延迟的数据访问。hdfs关心的是高数据吞吐量,不适合那些要求低时间延迟数据访问的应用。(5)单用户写入不支持任意修改。hdfs的数据以读为主,只支持单个写入者,并且写操作总是以添加的形式在文末追加,不支持在任意位置进行修改。


结束!



// END
推荐阅读:



作者:BossXiang,可爱且懂得生活的研究生一枚(码农一枚)。
"一起学习、成长、温情的热爱生活。"
私人微信|zijietiaodongpro (字节跳动pro)
CSDN|知乎|github|掘金:五角钱的程序员 

关注福利
关注公众号,后台回复【电子书】
几百本常用技术类电子书籍

五角钱的程序员

希望这篇文章可以帮到你~
欢迎大家点个在看,分享至朋友圈


你我都成为光发热之人, 在看在看在看 ~(疯狂暗示!)

以上是关于大数据技术之Hadoop(HDFS)第1章 HDFS概述的主要内容,如果未能解决你的问题,请参考以下文章

大数据技术之_04_Hadoop学习_02_HDFS_DataNode(面试开发重点)+HDFS 2.X新特性

大数据技术之_04_Hadoop学习_01_HDFS_HDFS概述+HDFS的Shell操作(开发重点)+HDFS客户端操作(开发重点)+HDFS的数据流(面试重点)+NameNode和Seconda

大数据技术之_05_Hadoop学习_04_MapReduce_Hadoop企业优化(重中之重)+HDFS小文件优化方法+MapReduce扩展案例+倒排索引案例(多job串联)+TopN案例+找博客

hadoop-hdfs

Hadoop大数据技术课程总结2021-2022学年第1学期

Sqoop