NameNode有这么几个配置:

Property

Description

Suggested value

dfs.name.dir Directory in NameNode’s local filesystem to store HDFS’s metadata /home/hadoop/dfs/name
dfs.data.dir Directory in a DataNode’s local filesystem to store HDFS’s file blocks /home/hadoop/dfs/data
mapred.system.dir Directory in HDFS for storing shared MapReduce system files /hadoop/mapred/system

dfs.name.dir存放meta信息,dfs.data.dir存放的是文件块信息,它们的默认路径都是/tmp。它们还可以配置多个路径,中间使用逗号进行分割,这样这些路径都会写入相关的数据,从而达到数据备份的目的;如果datanode有多个硬件驱动设备,例如RAID和JBOD这样的,就可以让datanode中不同的硬件去读取dfs.name.dir中不同的目录,从而达到加速IO的效果。

NN是HDFS架构中最重要的一个组件。它保存所有文件系统的原信息并以高性能的方式将集群中的块映射图(blockmap)存放在内存中。当有一个微小集群的是,首先应该考虑分配一个机器个NN,其他的DN、JT、TT都不应该运行在上面。应该给NN尽量多的内存,并且使用RAID设备防止单个硬件故障。

一个让nn减负的办法是通过增加块大小去减少文件系统的元数据。文件太大又不利于发挥并行性能,一般块大小在64M到128M之间。一般情况下,NN和SNN是运行在同一台机器上面,SNN将在YARN中被更实时的东西替换,具体看这里:https://issues.apache.org/jira/browse/HADOOP-4539.

Secondary NameNode

SNN并非是NN的出现故障时候的一个备份,它周期性的清除NN中的文件系统状态信息,使得NN更有效率。NN使用FsImage和EditLog来管理文件系统的状态信息。文件FsImage是文件系统在某个时间点时候的一个snapshot,而Editlog存放这个时间点后面文件系统增量变化信息。这两个文件联合起来可表示文件系统的当前状态。当初始化NN的时候,他合并两个文件去创建新的snapshot。在NN初始化以后,FsImage将清空Editlog,后继对HDFS的变化将追加到EditLog中,而FsImage的信息将保持不变。NN在内存中保存当前文件系统的状态去快速响应。

集群比较忙的时候,EditLog会变得很大,重启NN时候合并操作会变得非常的慢,这个时候就是SNN大显身手的时候了。它进行合并两个文件的动作(默认是一个小时进行一次),让NN专心负责线上服务, 在文件conf/masters中配置SNN的ip,比较坑爹,因为真正的MASTER是NN。

在conf/hdfs-site.xml file 中通过参数 dfs.http.address加上端口50070确定NN,例如

<property>
<name>dfs.http.address</name>
<value>namenode.hadoop-host.com:50070</value>
</property>

SNN 通过这个参数从NN中获取FsImage 和EditLog,拼装后的URL如下:

  • FsImage— http://namenode.hadoop-host.com:50070/getimage?getimage=1
  • EditLog— http://namenode.hadoop-host.com:50070/getimage?getedit=1

SNN 同样用这个端口去调用合并后的数据。由于合并计算两个文件是很消耗内存的操作,SNN的硬件配置应当与NN相同。

Recovering from a failed NameNode

使用SNN的模式,虽然有切换代价,切换过程中不能够提供服务,但是数据却没有丢失。

NN是整个hadoop系统的单点,虽然SNN不是NN的备份,由于SNN配置与NN类似,故通过一些配置可以使得它作为NN的备用机器。NN的目录dfs.name.dir中存放了文件系统的元信息,SNN并不使用,它将这些信息下载到 fs.checkpoint.dir,然后再找个目录中进行合并操作。

<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/dfs/name,/mnt/hadoop-backup</value>
<final>true</final>
</property>

假设SNN和NN中dfs.name.dir都是/home/hadoop/dfs/name,而SNN中mount到/mnt/hadoop-backup中,HDFS就会写分别写两份相同的数据到SNN的目录和NN的目录中。这样他们的元数据文件就一模一样了,当出现故障的时候,只要切换ip就能够继续服务。当需要启动备用NN的时候,将NN的IP切换到备用NN的IP,由于DNS中已经缓存了DNS表,所以修改hostname是无效的。还需要在备用NN上面运行bin/start-dfs.sh

hadoop的HA还在做的过程中,据说YARN可以完美解决。

通过checkpoint image 恢复可以在这里找到http://issues.apache.org/jira/browse/HADOOP-2585.

HA的RDBD解决方案 http://www.cloudera.com/blog/2009/07/22/hadoop-ha-configuration/.

SNN--Second Name Node的更多相关文章

  1. [大数据] hadoop高可用(HA)部署(未完)

    一.HA部署架构 如上图所示,我们可以将其分为三个部分: 1.NN和DN组成Hadoop业务组件.浅绿色部分. 2.中间深蓝色部分,为Journal Node,其为一个集群,用于提供高可用的共享文件存 ...

  2. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  3. HDFS essay 2 - Clarify Name Node / Checkpoint Node/ Backup Node

    为什么想用英文写了?我获取知识.技术的大部分途径都是通过英文,所以按照自己的理解用英文写下来也比较容易,另外,很多term都是不能翻译的,如果要持续学习技术和知识,那就不但要习惯去阅读,听,还要写,说 ...

  4. NPM (node package manager) 入门 - 基础使用

    什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...

  5. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  6. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  7. 细说WebSocket - Node篇

    在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...

  8. 高大上的微服务可以很简单,使用node写微服务

    安装 npm install m-service --save 使用 编写服务处理函数 // dir1/file1.js // 使用传入的console参数输出可以自动在日志里带上request id ...

  9. 构建通用的 React 和 Node 应用

    这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...

  10. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

随机推荐

  1. textarea在光标位置插入文字

    最近开发类似计算器界面,需要在textarea中编辑公式,涉及到 在光标位置插入 字符. 效果如下: + - * / 添加文字 // html代码如下: <!doctype html> & ...

  2. 8个必备的PHP功能开发

    这篇文章主要介绍了8个必备的PHP功能开发,需要的朋友可以参考下 PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PH ...

  3. 【转】android Camera 中添加一种场景模式

    http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一篇文章 ...

  4. 用tsung测试openfire 服务器性能

    最近公司需要做一个有聊天功能的应用,客户讲的是很宏大,用户超多,以前搞过openfire,但没有深入的去了解,就想用它来搞,而且是用 java写的,想扩展也容易些,但在性能上一直担忧,想测试一下它的性 ...

  5. Servlet 工作原理解析--转载

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/index.html?ca=drs- Web 技术成为当今主流的互联网 Web 应用 ...

  6. ubuntu首次给root用户设置密码

    用过ubuntu的人都知道,刚安装好root用户是没有密码的,没有密码我们就没法用root用户登录 给root用户设置密码输入命令sudo passwd,然后系统会让你输入密码,这时输入的密码就是ro ...

  7. SDWebImage 源码阅读分享

    SDWebImage 源码阅读分享 疑问列表 SDWebImage 整体框架图,主要的类包含哪些 SDWebImage 如何进行缓存管理,过期失效策略,缓存更新 SDWebImage 如何多线程处理的 ...

  8. Summary: How to calculate PI? Based on Monte Carlo method

    refer to: http://www.stealthcopter.com/blog/2009/09/python-calculating-pi-using-random-numbers/ Duri ...

  9. mysql left用法

    LEFT(str,len) 返回字符串str的最左面len个字符. SELECT LEFT('123456789',5)

  10. 程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...