HDFS介绍(零) HDFS分布式文件系统简介(转)

2024-08-28 08:18

本文主要是介绍HDFS介绍(零) HDFS分布式文件系统简介(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:https://blog.csdn.net/lb812913059/article/details/79712524

 

HDFS(Hadoop Distributed File System)Hadoop 分布式文件系统

 

基于流数据模式访问

    就是可以字节序列化的数据,java.io.Serializable接口

    分布式文件系统处理的数据必须是流数据,可以写IO操作的数据

 

以128MB的数据块存储文件

    其中每一个存储节点上都有一个DataNode进程,由NameNode来进行协调。

 

 

10T的一个文件数据存储到多台服务器上,每个服务器担任一部分存储任务,这些多台服务器通过一个文件系统组织起来对外界提供统一的服务,那么客户端访问这个10T的文件的时候,就感觉后台是一个服务器在提供服务,那么我们把这个机制就叫做分布式,把运行在多台服务器上的这个文件系统就叫做分布式文件系统。

 

1 HDFS名词简介

 

block:

 

基本存储单位,128M,默认备份3份

块的大小(hadoop2.0 128M):决定了资源,文件系统读写数据的吞吐量,应用程序寻址的速度(小有利于存储的完全利用,但是会增加寻址时间,减少吞吐量。大则相反)

大数据的块之所以设置的如此之大,是为了提高数据的吞吐量和降低数据寻址的时间

每一个block块对应一个Map的任务(线程)?????????????????????????????

 

NameNode:

 

维护HDFS文件系统,存储文件数据的元信息。处理来自客户端的对HDFS的各种操作的交互反馈

镜像文件(Namespace image)和操作日志文件(edit log)

    这些信息在系统启动时从数据节点重建.被Cache在RAM中

    这两个文件也会被持久化存储在本地硬盘。

 

SecondaryNameNode:

 

周期性将元数据节点的命名空间镜像文件和修改日志进行合并,并实现fsimage的备份

日志与镜像的定期合并的作用:

    如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中

    如果没有合并机制:edits log是每一次操作的记录,namenode要对每一次操作进行重写

    导致操作很耗时(namenode容错机制)

 

DataNode:

 

文件系统的工作节点,根据客户端或是namenode的调度存储和检索数据

并且定期向namenode发送他们所存储的块(block)的列表。(每个小时report、3秒心跳(心跳reponse可返回命令(所有心跳皆如此)))

DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息

DataNode之间会进行通信,复制数据块,保证数据的冗余性(备份,一个容错机制)

 

NodeManager :

 

对它所在的节点上的资源的管理(cpu、内存、磁盘的利用情况)

    定期向resourcemanager进行汇报该节点上的资源利用信息

    监督Container(容器)的生命周期????????????????????Container是啥

    监控每个Container的资源使用(内存、CPU等)情况

    追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)。??????

 

ResouceManager:

 

负责集群中所有资源的统一管理和分配

接收来自各个节点(NodeManager)的资源汇报信息

并把这些(资源)信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)。???????ApplicationManager

 

 

2 HDFS优点

 

1)适合大数据处理

    能够处理百万规模以上的文件数量( GB、TB、PB级数据),能够处理10K节点的规模

2)处理非结构化的数据

    可处理结构化、半结构化、非结构化的数据(语音、视频、图片),80% 的数据都是非结构化的数据

3)流式访问数据

    一次写入,多次读取。文件一旦写入不能修改,只能追加。它能保证数据的一致性。

4)运行于廉价的商用机器集群上

    它通过多副本机制,提高可靠性。一旦出现故障也不会影响正常的业务处理,可以通过其它副本来恢复。

 

3 HDFS缺点

 

1)不适合处理低延迟的数据访问

    HDFS是为了处理大型数据集分析任务的,主要是为了达到高的数据吞吐量而设计的

    HBase适合做低延迟的数据访问BigTable???????????????????????

2)无法高效的存储大量小文件

    当文件以block块的形式进行存储时,block块位置会存储在namenode节点的内存中(metadata元数据会存在内存中,元数据中有每个block的位置)

    不论存储大文件还是小文件,每个文件对应的单条block的块信息大小是一致的(metadata元数据大小一致)

    而NameNode的内存总是有限的。小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。(也会浪费name的内存)

  (这里的小文件是指小于HDFS系统的Block大小的文件,默认是64M)????????不是128M(还是256M来着,需要检验一下)么

3)不支持并发写入和任意的修改

    一个文件同时只能有一个写,不允许多个线程同时写。????????什么可以同时写???

    仅支持数据 append(追加),不支持文件的随机修改。以追加的形式达到修改的目的

 

4 HDFS特性

 

1)高容错,可扩展性及可配置性强

    数据自动保存多个副本。它通过增加数据冗余来提高容错性。某一个副本丢失以后,它可以自动恢复

    可扩展:可以不断的添加新的datanode    

2)跨平台

    Java语言开发的,HDFS支持多个平台Windows

3)shell命令接口

    hadoop fs -put 上传,把本地Linux文件系统的文件,上传到HDFS文件系统中

    hadoop fs -ls hdfs://master:9000/ 查看HDFS文件系统根目录(/)下的文件

    ......

4)机架感知功能

    副本的存放,第一个存到rack1,第二个就会选择不同于rack1的其他的rack上面存储 /etc/hosts

5)负载均衡

    理想状态下,集群中每个服务器上面存储数据都是均匀的。但在实际当中,经常会出现数据偏移

    start-balancer.sh -t 10%

6)Web界面

http://master:18088  yarn           http://master:50070  hdfs

    能够查看hdfs文件系统中的文件信息

 

5 HDFS设计目标

 

1)监测和快速恢复硬件故障

    监测:立刻会监测到坏的块--->上报到主节点RM

    单独启动一个进程:hadoop-daemon.sh start namenode/datanode/resourcemanager/nodemanager

2)流式数据访问

    重视的是吞吐量,而不是数据处理的速度。实现批处理

3)大规模数据集

    支持大文件存储,一个单一的HDFS实例能支撑数以千万计的文件

4)简化一致性访问模式

    一次写入(只可以使用apend的方式修改文件),多次读取

5)移植性强

    移动计算的代价,要比移动数据的代价低

 

6 HDFS数据存储

 

HDFS采用Master/Slave主从架构来存储数据,这种架构主要由四个部分组成。分别为HDFS Client、NameNode、DataNode和Secondary NameNode

 

Client:客户端

 

1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

2、与 NameNode 交互,获取文件的位置信息。

3、与 DataNode 交互,读取或者写入数据。

4、Client 提供一些命令来访问和管理HDFS等操作。

 

NameNode:master管理者

 

1、管理 HDFS 的名称空间。数据块(Block)映射信息(内存)。配置副本策略(决定副本存放)

2、处理客户端读写请求。

 

fsimage与edits是NameNode的两个重要文件。

    1)fsimage:元数据镜像文件(存储文件系统的目录树,比如说有哪些目录,每个目录有哪些文件...)

    2)edits:元数据操作日志(存储针对目录树的修改操作,比如你删除了某个文件或者增加了某个文件)

 

DataNode:Slave节点,NameNode 下达命令,DataNode 执行实际的操作

 

1、存储文件。(本地存放实际的块映射(启动时report给namenode,以后每个小时report一次))

2、执行数据块的读/写操作。

 

SecondaryNameNode:辅助元数据

 

并非NameNode 的热备(热备从广义上讲,就是服务器高可用应用的另一种说法)。

当NameNode 挂掉的时候,它并不能替换 NameNode 并提供服务。

    1、辅助 NameNode,执行fsimage和edits的定期合并

    2、在紧急情况下,可辅助恢复 NameNode。

 

7 HDFS功能概述

 

HDFS具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。

 

1.命名空间管理????????????????????????????????没看懂

HDFS的命名空间包含目录、文件和块的信息。

指命名空间支持对HDFS中的目录、文件和块做创建、修改、删除、列表文件和目录等基本操作。

 

2.块/存储管理

在块/存储管理服务中包含两部分工作:块管理和物理存储。这是一个更通用的存储服务。其他的应用可以直接建立在Block Storage上,如HBase,Foreign Namespaces等。

 

块管理:

    A) 处理DataNode向NameNode注册的请求,处理datanode的成员关系。

    B) 处理来自DataNode周期性的心跳报告,维护块的位置信息。

    C) 处理与块相关的操作:块的创建、删除、修改及获取块信息。

    D) 管理副本放置(replica placement)和块的复制及多余块的删除。

 

物理存储:

    Data Node把块存储到本地文件系统中,对本地文件系统的读写。

 

这篇关于HDFS介绍(零) HDFS分布式文件系统简介(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114228

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle