BlocksMap源码分析
来源:互联网 发布:淘宝吉光片羽家怎么样 编辑:程序博客网 时间:2024/06/07 02:09
BlocksMap,主要功能是保存block和其元数据的映射,block的元数据为它所在的INode和存储该block的DataNode。Block对象记录了blockid、block大小以及时间戳信息。block->DataNode的信息没有持久化存储,而是NameNode通过DataNode的blockReport获取该block所在的DataNode List。block的元数据对应的类为BlocksMap#BlockInfo。下面我们将对BlockInfo进行详细分析。
BlockInfo继承了Block, 它包括privateINodeFileinode 和 Object[] triplets 等成员变量。INodeFile inode表示该block对应的INode节点;triplets为三元组,block有几个副本,就有几个三元组, this.triplets = new Object[3*replication]。三元组的第一个元素表示该block所属的DataNode,类型是DatanodeDescriptor,通过它可以获得block->DataNode list,对应的函数为DatanodeDescriptor getDatanode(int index)。DataNodeDescriptor有一个重要的内部类BlockTargetPair,该类主要保存一个block和其对应的一组DatanodeDescriptor。第二、三个元素表示该block所在DataNode上的前/后一个block(前驱和后继),类型是BlockInfo,对应的函数为BlockInfo getPrevious(int index), BlockInfo getNext(int index)。通过它可以获得DataNode->blocks。借助这个三元组可以找到该block所属的所有DataNode,也可以通过三元组的后两个元素信息找到该block所在DataNode上所有的block。
下图为BlocksMap的结构。假设该文件有3个副本。
- BlocksMap源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析
- 源码分析:SparseArray分析
- 源码- Spark Broadcast源码分析
- Android源码/框架源码分析
- 【Android应用源码分析】HandlerThread 源码分析
- 【Android应用源码分析】IntentService 源码分析
- java源码分析01-Object源码分析
- VC++源码分析 - 中国象棋源码分析
- [Java源码分析]ArrayList源码分析
- [java源码分析]LinkedList源码分析
- Eclipse调试Java的10个技巧
- 基本排序之堆排序
- linux磁盘分区详解
- ORA-12154: TNS: 无法解析指定的连接标识符
- 解决 kettle 调用informix 设置数据源 查询中文乱码
- BlocksMap源码分析
- request获取完整的请求路径
- jsp提交到Servlet报404错误问题(webroot下子目录)
- 自定义ScrollView,以解决viewflipper 与scrollview的手势冲突
- 使用swftools转化pdf为flash
- 系统交付后远程获取错误信息解决方案
- win7安装IIS及将网站发布到IIS上
- IT男7个月实习终获offer 称“找工作像打怪升级
- 管理的基本要求