hadoop NameNode 实现分析
2013-08-22 10:51
381 查看
在hadoop 整体分析中,说过nameNode主要是实现一个 blockID 到对应 dataNode的对应关系映射。 现在分析一下腰实现这个映射,nameNode还需要哪些模块。
1 为了方便用户查找,实现一个目录树是必须的 (因为要完成 目录到文件的映射,称之为一级关系)。 在linux中是用C 和汇编语言来实现这个的,想要看懂代码感觉不容易,现在有一个JAVA版本的实现,让人兴奋。
2 核心问题实现 blockID 与dataNode的映射。(称之为二级关系)
3 还有一个重要问题 是 nameNode要实现某个block要放置在哪个dataNode上的算法。这个算法要保证效率,保证集群中节点的负载均 衡。
3 提供IPC服务 等等其他的辅助性工作。
同dataNode的实现分析一样,这里也是采取由上及下,从nameNode的启动开始分析它的各个模块的实现。
启动的时候最重要的是先把前面说的 一二级关系建立起来。
第一级关系的建立。
1). 从fsimage中读取该HDFS中保存的每一个目录和每一个文件
2). 初始化每个目录和文件的元数据信息
3). 根据目录和文件的路径,构造出整个namespace在内存中的镜像
4). 如果是文件,则读取出该文件包含的所有blockid,并插入到BlocksMap中。
整个加载流程如下图所示:
第二级关系的建立
建立第二级关系之前,先看一下 第二级关系在数据结构
这个数据结构的建立过程
如图所示,在naneNode启动的过程中 先是处于安全模式,数据节点向nanode节点主动汇报自己存储的block信息。
对于第三个问题 在hadoop 中节点选择的原则 是这样 如果写入数据源来源于一个数据节点 那么 选择原则如下
在当前数据节点下作为一个副本 然后随机选择一个机架存储其他副本 。
这个算法由于机架式用简单的随机算法选定的,所以会出现负载不均衡问题,hadoop 中为解决这个问题,采取了启动专门的负载均衡线程来完成。 而没有使用分布式hash表。
1 为了方便用户查找,实现一个目录树是必须的 (因为要完成 目录到文件的映射,称之为一级关系)。 在linux中是用C 和汇编语言来实现这个的,想要看懂代码感觉不容易,现在有一个JAVA版本的实现,让人兴奋。
2 核心问题实现 blockID 与dataNode的映射。(称之为二级关系)
3 还有一个重要问题 是 nameNode要实现某个block要放置在哪个dataNode上的算法。这个算法要保证效率,保证集群中节点的负载均 衡。
3 提供IPC服务 等等其他的辅助性工作。
同dataNode的实现分析一样,这里也是采取由上及下,从nameNode的启动开始分析它的各个模块的实现。
启动的时候最重要的是先把前面说的 一二级关系建立起来。
第一级关系的建立。
1). 从fsimage中读取该HDFS中保存的每一个目录和每一个文件
2). 初始化每个目录和文件的元数据信息
3). 根据目录和文件的路径,构造出整个namespace在内存中的镜像
4). 如果是文件,则读取出该文件包含的所有blockid,并插入到BlocksMap中。
整个加载流程如下图所示:
第二级关系的建立
建立第二级关系之前,先看一下 第二级关系在数据结构
这个数据结构的建立过程
如图所示,在naneNode启动的过程中 先是处于安全模式,数据节点向nanode节点主动汇报自己存储的block信息。
对于第三个问题 在hadoop 中节点选择的原则 是这样 如果写入数据源来源于一个数据节点 那么 选择原则如下
在当前数据节点下作为一个副本 然后随机选择一个机架存储其他副本 。
相关文章推荐
- Hadoop NameNode 高可用实现源码分析
- Hadoop NameNode 高可用 (High Availability) 实现解析
- hadoop namenode启动过程详细剖析及瓶颈分析
- Hadoop源码分析之NameNode的启动与停止(续)
- Hadoop namenode启动瓶颈分析
- Hadoop-2.6.0 CPU CGroup实现分析
- Hadoop跨集群数据拷贝工具DISTCP内部源码实现分析
- 研读《基于Hadoop的海量业务数据分析平台的设计与实现》----flume一章学习小结
- hadoop2.0的DataNode与NameNode交互机制相关代码分析
- Hadoop源码分析之读文件时NameNode和DataNode的处理过程
- Hadoop NameNode 高可用 (High Availability) 实现解析
- Hadoop源码分析笔记(十):数据节点--流式接口的实现
- Hadoop+Hive实现航空公司客户价值分析
- discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
- hadoop DataNode实现分析
- HDFS源码分析二-NameNode实现
- Hadoop中MapReduce多种join实现实例分析
- Hadoop NameNode 高可用 (High Availability) 实现解析
- Hadoop源码分析21:namenode概要
- hadoop 2.6 yarn Records实现分析