大数据——HDFS(分布式文件系统)

 一,分布式系统概述

Hadoop的两大核心组件

大数据——HDFS(分布式文件系统)

HDFS(Hadoop Distributed Filesystem):是一个易于扩展的分布式文件系统,运行在成百上千台低成本的机器上。HDFS具有高度容错能力,旨在部署在低成本机器上。HDFS主要用于对海量文件信息进行存储和管理,也就是解决大数据文件(如TB乃至PB级)的存储问题,是目前应用最广泛的分布式文件系统。

分布式系统的演变:
大数据——HDFS(分布式文件系统)

传统文件系统遇到的问题 :

传统文件系统的问题:

•当数据量越来越大时,会遇到存储瓶颈,需要扩容;

•由于文件过大,上传下载都非常耗时

分布式文件系统的雏形:

•横向扩容,即增加服务器数量,构成计算机集群

•将大文件切割成多个数据块,将数据块以并行的方式,分布地在多个计算机节点上进行存储、读取

DHFS集群架构:

大数据——HDFS(分布式文件系统)

  • 普通Hadoop集群结构由一个两阶网络构成。
  • 机架内的节点之间、机架之间,通过光纤高速交换机完成彼此的连接与交互。
  • 每个机架(Rack)有30-40个服务器,配置一个1GB的交换机,并向上连接到一个核心交换机或者路由器(1GB或以上)。

 HDFS的集群中的节点分为两类:


名称结点(NameNode)
:又称为
主节点
(Master Node)
,存储元数据,元数据可看作是数据目录,存放一些其他服务器的信息(相当于一个代理服务器);


数据节点(
DataNode)
:又称为
从节点(
Slave Node
)存储数据块,即实际数据。

大数据——HDFS(分布式文件系统)

DHFS的优点:

支持超大文件 流式数据读写 高数据吞吐量 硬件设备要求低 高容错性 ……

  一次写入、多次读取的流式数据访问模式:

•一次写入: 从数据源收集或生成的数据集,向HDFS中的文件一次性写入,关闭之后不可修改,只能在文件末尾追加。
•多次读取: 在该数据集上进行各种分析,每次分析都需要读取该数据集的大部分甚至全部数据
•流式数据访问: 读取数据文件就像流水一样,不是一次性过来而是 “流”过来,来一部分、处理一部分。例如,下载电影,用迅雷边下边播。


综上
:即批量数据处理,不能随机读写、不能交互式处理

 DHFS的缺点:

不适合低延迟数据访问 无法高效存储大量小文件 不支持多用户写入和修改 ……

无法高效存储大量小文件:

由于名称节点将HDFS文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于名称节点的内存容量。一般每个文件、目录和数据块的元数据存储信息大约占150字节(B)。因此,如果有一百万个文件,且每个文件占一个数据块,那至少需要300MB的内存。尽管存储上百万个文件是可行的,但是存储数十亿个文件就超出了当前硬件的能力。

二,相关的概念

1,(block)数据块的概念:



HDFS
中,文件被拆分成多个
数据块


Hadoop2.x
版本下,
默认是
128MB
,每个块作为
独立单元
进行存储。


所有的块(
block
)同样大小,除了最后一个块


每个块
备份3

,存储于
不同
的数据节点
DataNode
中。

大数据——HDFS(分布式文件系统)

如果一个文件有1000MB则在hadoop2.x版本下,将会被分成7份128MB的数据块和一个0.812MB的数据块。

2,元数据


HDFS中文件和目录的信息
:文件名
(/user/data/File.txt )、
目录名、父目录信息、文件大小、文件的创建
修改
时间等;


文件数据块及其存储信息
:文件分块情况(块数、块的编号)、副本个数、每个副本所在的DataNode信息等;


HDFS中所有DataNode的信息
:用于DataNode管理。

/user/data/File.txt是文件所在的路径,有三个备份,2号,8号,9号,然后每个里面备份三个不同服务器的数据。

大数据——HDFS(分布式文件系统)

3,(NameNode)名称结点(我的理解是代理服务器)

NameNode

HDFS
集群

主服务器
,通常称为
名称节点
或者
主节点

一旦
NameNode
关闭,       就无法访问
Hadoop
集群。

     主要作用:


存储、
管理、更新
元数据


管理
客户端
对文件的访问,
记录
对文件系统的更改操作

4,(DtaNode)数据节点

    数据节点是HDFS集群中的从服务器,称为数据节点,它与NameNode保持不断的通信,其主要作用:


负责
数据块
的存储和读取


根据客户端或名称节点的调度,存储并检索数据块,对数据块进行创建、删除等操作


向名称节点定期发送自己存储的数据块的列表信息(心跳信息)


每个数据节点存储的实际数据,保存在该节点本地的Linux文件系统中

总结图:

我的理解就是 ,你上传到服务器的数据,为了保证数据的安全性,如果一个服务器出现了问题 ,那么必须保证你的数据不能丢失,那么在其他服务器上也会备份一份出问题服务器的数据,以保证数据不丢失,就是一个存有你数据的服务器坏掉了,也不会影响你的数据。

大数据——HDFS(分布式文件系统)

      以上仅仅是我的理解,仅供参考。

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/c462e4bf4a.html