`
xubindehao
  • 浏览: 239277 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hadoop NameSpace

阅读更多

(1)NameNode保存的两种信息:文件和block的映射、block和DataNode的映射。文件和block的映射,固化在磁盘上。而block和DataNode的映射在DataNode启动时上报给NameNode

(2)DatanodeProtocol:用于DataNode来调用NameNode上的方法,情景是DataNode向NameNode通信,方法参数传递到NameNode上;

ClientProtocol:提供给客户端,用于访问NameNode。它包含了文件角度上的HDFS功能。和GFS一样,HDFS不提供POSIX形式的接口,而是使用了一个私有接口。一般来说,程序员通过org.apache.hadoop.fs.FileSystem来和HDFS打交道,不需要直接使用该接口;

NamenodeProtocol:用于从NameNodeNameNode的通信;

InterDatanodeProtocol:用于DataNode和DataNode通信,只有一个updateBlock(Block oldblock, Block newblock, boolean finalize)方法;

ClientDatanodeProtocol:用于Client和DataNode之间通信,只有recoverBlock(Block block, boolean keepLength,

      DatanodeInfo[] targets)方法,但是Client和DataNode之间应该不只这些,需要到后面看到读写的情况在仔细分析;

(3)INode是一个抽象类,它的两个字类,分别对应着目录(INodeDirectory)和文件(INodeFile)。INodeDirectoryWithQuota,如它的名字隐含的,是带了容量限制的目录。INodeFileUnderConstruction,抽象了正在构造的文件,当我们需要在HDFS中创建文件的时候,由于创建过程比较长,目录系统会维护对应的信息。

INode中的成员变量有:name,目录/文件名;modificationTime和accessTime是最后的修改时间和访问时间;parent指向了父目录;permission是访问权限。HDFS采用了和UNIX/Linux类似的访问控制机制。系统维护了一个类似于UNIX系统的组表(group)和用户表(user),并给每一个组和用户一个ID,permission在INode中是long型,它同时包含了组和用户信息。

INode中的抽象方法:collectSubtreeBlocksAndClear,用来收集INode所有孩子的block,因为INode可能是文件或者目录,目录的话就不含有Block,而文件则有多个Block,返回值为文件的个数而非Block的个数;computeContentSummary用于递归计算INode包含的一些相关信息,如文件数,目录数,占用磁盘空间。

(4)INodeDirectory是INode的子类,里面有List<INode> children,因为目录下既有目录也有文件。

(5)INodeDirectoryWithQuota进一步加强了INodeDirectory,限制了INodeDirectory可以使用的空间。

(6)INodeFile是HDFS中的文件,BlockInfo blocks[]对应这个文件的列表,BlockInfo增强了Block类。

(7)INodeFileUnderConstruction保存了正在构造的文件的一些信息,包括clientName,这是目前拥有租约的节点名(创建文件时,只有一个节点拥有租约,其他节点配合这个节点工作)。clientMachine是构造该文件的客户端名称,如果构造请求由DataNode发起,clientNode会保持相应的信息,targets保存了配合构造文件的所有节点。租约就是一次操作的许可证,只在一个节点中持有。

(8)BlocksMap:Whose essential functions round aroud Map<Block, BlockInfo>.This class maintains the map from a block to its metadata. block's metadata currently includes INode it belongs(INodeFile) to and the datanodes that store the block(DatanodeDescriptor). BlockInfo contains INodeFile and DatanodeDescriptor which enhances Block.

(9)NameNode需要知道DataNode的信息,最基本的是DatanodeID(hostname:portNumber,unique per cluster storageID(貌似没有什么用),infoserver的端口,ipcserver的端口)

(10)再加一些信息变成DatanodeInfo增加了一些动态信息(容量等),再加上一些Block的动态信息变成DatanodeDescriptor,DatanodeDescriptor包含了两个BlockQueue,分别记录了该DataNode上准备复制(replicateBlocks)和Lease恢复(recoverBlocks这个操作有些不明白)的BlockTargetPair(Block和多个目的DataNode的结构)。同时还有一个Block集合,保存的是该DataNode上已经失效的Block。DatanodeDescriptor提供一系列方法,用于操作上面保存的队列和集合。也提供get*Command方法,用于生成发送到DataNode的命令。当NameNode收到DataNode对现在管理的Block状态的汇报是,会调用reportDiff,找出和现在NameNode上的信息差别,以供后续处理用。


分享到:
评论

相关推荐

    hadoop多数据中心灾备

    The basis of this solution is to have one or more mirror Hadoop clusters which will be continuously updated with the data from the primary cluster in either a synchronous method or an asynchronous ...

    Hadoop in Practice(2012)

    Hadoop in Practice collects 85 Hadoop examples and presents them in a problem/solution format. Each technique addresses a specific task you'll face, like querying big data using Pig or writing a log ...

    卢亿雷:Hadoop在网盘和在线备份的应用与挑战

    本演讲介绍了HDFS和HBase在网盘和在线备份的应用,大数据的挖掘与处理,小文件的存储,备份文件至云端的优先级策略,文件全路径的存放方式及Namespace的管理等。

    hadoop-sandbox

    Hadoop沙盒“ Sandbox”项目可尝试Hadoop。 有用的信息: 样机包含一个类,该类使得可以用错误数据...结构HBase create_namespace'meteo' 创建“ meteo:测站”,“坐标”,“参数” 创建“ meteo:结果”,“结果”

    zookage:Docker桌面上的Kubernetes上的Hadoop

    动物园 ZooKage提供了一个沙盒环境,可以在Kubernetes上启动驻留在Hadoop生态系统中的一组...namespace/zookage created job.batch/package-hadoop created job.batch/package-hive created job.batch/package-tez crea

    Viewfs Guide.pdf

    The
viewfs
file
system
provides
a
way
to
manage
multiple
Hadoop
file
system
namespace
(or
 namespace
volumes).
It
is
particularly
useful
clusters
having
multiple
namenodes
...

    HBase.docx

    2.开启hadoop与zookeeper 7 3.修改配置文件hbase-env 7 4.修改配置hbase-site 7 5.修正版本 8 6.启动 9 二:访问web ui 9 1.网址 9 三:简单使用(namespace的操作) 11 1.开始 11 2.help 12 3.hbase的shell脚本 13 ...

    seatunnel v2.0 初学极速安装包-源码+文档+发布包+flink+依赖

    incubator-seatunnel-2.0.0-pre.zip: 源码可以编译打包,放入waterdrop dir的lib...flink-shaded-hadoop-2-uber-2.8.3-9.0.jar:flink checkpoint hadoop依赖,将flink-shaded-hadoop-2-uber.jar放入flink dir的lib下

    [示例][PHP]kafka-PHP客户端库(Composer).zip

    namespace Kafka; class Broker { use SingletonTrait; private $groupBrokerId = null; private $topics = []; private $brokers = []; private $metaSockets = []; private $dataSockets = []; private $...

    kafka的PHP库(Composer).zip

    namespace Kafka; class Broker {  use SingletonTrait;  private $groupBrokerId = null;  private $topics = [];  private $brokers = [];  private $metaSockets = [];  private $...

    大数据技术-题库.pdf

    A、 为海量数据提供存储的 HDFS 和对数据进⾏计算的 MapReduce B、 提供整个 HDFS ⽂件系统的 NameSpace(命名空间)管理、块管理等所有服务 C、 Hadoop 不仅可以运⾏在企业内部的集群中,也可以运⾏在云计算环境中 D...

    HDFSNameNode内存全景

    从整个HDFS系统架构上看,NameNode是其中最重要、最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着...从架构设计上看,元数据大致分成两个层次:Namespace

    NNAnalytics:NameNodeAnalytics 是一个自助实用程序,用于侦察和维护 HDFS 实例的命名空间

    git clone https://github.com/paypal/NNAnalytics.git nna && cd ./nna && ./gradlew -PmainClass=org.apache.hadoop.hdfs.server.namenode.analytics.TestWithMiniClusterWithStreamEngine execute 然后访问 ,您...

    浅析HDFS架构和设计

    hdfs是hadoop的分布式文件系统,即HadoopDistributedFilesystem。下面主要讲下HDFS设计中的比较重要的点,使读者能通过简短的文章一窥HDFS的全貌,适合对HDFS有一点了解,但是对HDFS又感到困惑的初学者。本文主要...

    MRWordCountKite

    Kite提供了带有干净抽象的简单API,可以跨Hadoop读写不同文件格式(Parquet,Avro等)的文件。 有关支持的URI的更多信息,请参见URI。 本示例使用规范的MapReduce单词计数示例来演示如何将单词计数的结果写为...

    Avro-MapReduce

    Settings.xml 在 Maven 中包含 Hadoop 类路径 ----------------------------------数据准备--------------- ---------------- 1.student.avsc { "type" : "record", "name" : "student_marks", "namespace" : ...

    【容器系统】之大数据容器化-基于Kubernetes构建现代大数据系统.pdf

    spark-operator $ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator $ helm install incubator/sparkoperator --namespace spark-operator 创建服务⽤户及绑定权限 $ kubectl ...

Global site tag (gtag.js) - Google Analytics