首页 > 编程语言 >1.5 HDFS分布式文件系统-hadoop-最全最完整的保姆级的java大数据学习资料

1.5 HDFS分布式文件系统-hadoop-最全最完整的保姆级的java大数据学习资料

时间:2022-12-06 19:35:00浏览次数:42  
标签:1.5 java HDFS DataNode 文件 NameNode block

目录

1.5 HDFS分布式文件系统

1.5.1 HDFS 简介

HDFS(全称:Hadoop Distribute File System,Hadoop 分布式文件系统)是 Hadoop 核心组成,是分布式存储服务

分布式文件系统横跨多台计算机,在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

HDFS是分布式文件系统中的一种。

1.5.2 HDFS的重要概念

HDFS 通过统一的命名空间目录树来定位文件;另外,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色(分布式本质是拆分,各司其职)

  • 典型的 Master/Slave 架构

    HDFS 的架构是典型的 Master/Slave 结构。

    HDFS集群往往是一个NameNode(HA架构会有两个NameNode,联邦机制)+ 多个DataNode组成。

    NameNode是集群的主节点,DataNode是集群的从节点。

  • 分块存储(block机制)

    HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定。

    Hadoop2.x版本中默认的block大小是128M。

  • 命名空间(NameSpace)

    HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动 或重命名文件。

    Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。

    HDFS提供给客户单一个抽象目录树,访问形式:hdfs://namenode的hostname:port/test/input

    hdfs://linux121:9000/test/input

  • NameNode元数据管理

    我们把目录结构及文件分块位置信息叫做元数据。

    NameNode的元数据记录每一个文件所对应的block信息(block的id,以及所在的DataNode节点的信息)

  • DataNode数据存储

    文件的各个 block 的具体存储管理由 DataNode 节点承担。一个block会有多个DataNode来存储,DataNode会定时向NameNode来汇报自己持有的block信息。

  • 副本机制
    为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。 副本数量默认是3个。

  • 一次写入,多次读出

    HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的随机修改。(支持追加写入, 不只支持随机更新)

    正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用(修改不方便,延迟大,网络开销大,成本太高)

1.5.3 HDFS架构

在这里插入图片描述

  • NameNode(nn):hdfs集群的管理者,Master

    • 维护管理hdfs的名称空间(NameSpace)

    • 维护副本策略

    • 记录文件块(Block)的映射信息

    • 负责处理客户端读写请求

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

    • 保存实际的数据块
    • 负责数据块的读写
  • Client:客户端

    • 上传文件到HDFS的时候,Client负责将文件切分成Block,然后进行上传
    • 请求NameNode交互,获取文件的位置信息
    • 读取或写入文件,与DataNode交互
    • Client可以使用一些命令来管理HDFS或者访问HDFS

在这里插入图片描述

标签:1.5,java,HDFS,DataNode,文件,NameNode,block
From: https://www.cnblogs.com/gitBook/p/16960277.html

相关文章

  • tomcat_动态java项目的目录结构与tomcat_与IDEA集成&创建web项目
    tomcat_动态java项目的目录结构静态项目和动态项目目录结构java动态项目的目录结构:--项......
  • java文件传输简单方法
    java文件传输简单方法假设现在已经打包了一个文件(1233444333),要将这个文件传输给另一方:importjava.io.*;publicclassF_PasswordUnPassword{publicstaticvoidmain(S......
  • Javascript
    内容概要BOM操作BOM操作基础DOM操作jQuery类库BOM操作BOM操作基础BOM(BrowserObjectModel)是指浏览器对象模型,它使用Javascript有能力与浏览器进行'对话'......
  • HDFS 文件系统
    HDFS文件系统一、概述HDFS(HadoopDistributedFileSystem)是一种Hadoop分布式文件系统,具备高度容错特性,支持高吞吐量数据访问,可以在处理海量数据(TB或PB级别以上)的同时......
  • Java的两大、三类代理模式
    简述代理,是一种设计模式,主要作用是为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目......
  • [笔记]docker-compose启动javaweb
    1.Dockfile1准备jdk安装包启动项目jar2文件fromcentosrunmkdir/var/tmp/jdkCOPYjdk-8u321-linux-x64.tar.gz/var/tmp/jdkRUNtarxzf/var/tmp/jdk/jdk-8......
  • JavaScript中的异步、同步和回调函数
    异步(Asynchronous,async)是与同步(Synchronous,sync)相对的概念。在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序......
  • JAVA 小工具
    JAVA小工具驼峰命名转下划线命名publicstaticStringparsingCamelCaseToUnderline(Stringparams){char[]charArray=params.toCharArray();params="";f......
  • 【javascript】call、bind、apply方法的作用和区别
    1、call,apply,bind相同点都是改变this的指向接收的第一个参数都是要指向的对象都可以使用第一个参数之外的其他参数传参2、call,apply,bind不同点call,bind的传参都......
  • 【Java】其他时间日期API:ZonedDateTime / ZoneId、Duration、Period、TemporalAdjuste
    1.带时区的日期时间:ZoneId/ZonedDateTime(1)ZoneIdpublicvoidtest1(){Set<String>zoneIds=ZoneId.getAvailableZoneIds();//获取所有时区f......