zoukankan      html  css  js  c++  java
  • HDFS学习笔记

    HDFS 分布式文件系统


    一,基本理解

           简单而谈,分布式是分而治之,HDFS也是这个思想,将大量的大文件和大数据,分布式的放在大量的服务器上,以便采用分而治之的方式对海量的数据进行运算分析。所以,它的作用也就是为各类的分布式运算框架(mapreduce,spark等)提供数据存储服务

     

            其重要的特性为:

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

            2.HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

            3.目录结构及文件分块信息(元数据)的管理由namenode节点承担。

            4.文件的各个切片(block)的存储管理由datanode节点承担。

            5.HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

     

    二,HDFS工作机制

            1.要清楚HDFS并不是类似与网盘的的机制。

                 网盘就是一个抽象化的共享,一个数据资源一个用户上传过,那这个资源会变为一个连接,然后再一个数据库中被共享。如果一个文件有1g,那么每个用户存有这个文件的网盘大小会被占有1g, 但其实这1g只是被抽象了的一个连接。

            2.HDFS集群分为两大角色:NameNode(负责整个文件的元数据),DataNode(负责管理用户的文件数据块)。

            3.文件会按照固定大小(blocksize)切成若干块分布式存储在若干台DataNode。

            4.每一个切块可以有多个副本,保存在不同的DataNode上,Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量。

            5. HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行

     

    三,NameNode的工作机制

           1,NameNode的功能:负责客户端请求的响应,元数据的管理和修改,配置和应用副本存放策略,管理集群数据块负载均衡问题。

           2,NameData对数据的管理采用了三种存储形式:内存元数据(NameSystem),磁盘元数据镜像文件,数据操作日志文件(可通过日志运算出元数据)。

     

           3,元数据存储机制:内存中有一份完整的元数据(内存 meta.data),磁盘中的一个准完整的元数据镜像(在NameData的工作目录中),用于衔接内存metadata和持久化元数据镜像fsimage之间的操作日志(edits文件)。

           注:当客户端对HDFS中的文件进行增删时,操作记录会记录在edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存meta.data。

           4,元数据的checkpoint:每隔一段时间,seconder namenode将namenode上积累的edits和一个最新的fsimage下载到本地,并加载到内存进行merge(这个过程称为checkpoint)。namenode和secondary namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时,可以从secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数。

     

    四,DataNode的工作机制

           1,DataNode的功能:储存管理用户的文件块数据,定期向NameNode汇报自身所持有的block信息(通过心跳信息上传,当集群中有的副本失效时,NameNode就能及时恢复数据)。

     

    五,HDFS写数据的流程

     

           简述:客户端要向HDFS写数据,首先要向NameNode通信以确认可以写数据并获得接收block(数据块)的DataNode  ,然后客户端按照顺序将逐个block发送给相对应的DatanNode。最后,由接收block的DAtaNode向 其他的DataNone复制备份。

     

    六,HDFS读数据的流程

     

     

           简述:客户端将要读取的文件路径发送给NameNode,NameNode获取文件的元数据(主要是block的存放位置)返回客户端,客户端根据返回的信息找到相对应的DataNode依次读取文件的block,在客户端进行数据追加合并得到整个文件。

     


  • 相关阅读:
    Oracle PL/SQL 概述
    Oracle 客户端 使用 expdp/impdp 示例 说明
    Oracle Expdp/Impdp 进行数据迁移的 几点注意事项
    Oracle PL/SQL 概述
    Oracle TIMED_STATISTICS 参数 说明
    Oracle Alerts 与 Metrics(警告与度量)说明
    Oracle OFA(Optimal Flexible Architecture) 说明
    Oracle OFA(Optimal Flexible Architecture) 说明
    Oracle dbca Exception in thread “main” 解决方法
    Oracle Resumable Space Allocation 特性 说明
  • 原文地址:https://www.cnblogs.com/songweideboke/p/9780710.html
Copyright © 2011-2022 走看看