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. Android面向HTTP协议发送post请求

    /** * 採用post请求的方式 * * @param username * @param password * @return null表示求得的路径有问题,text返回请求得到的数据 */ pu ...

  2. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】

    题目:一个整型数组里除了两个数字之外.其它的数字都出现了两次,请敲代码找出这两个仅仅出现一次的数字. 要求时间复杂度是O(n),空间复杂度是O(1). 举例说明 比如输入数组{2, 4, 3, 6, ...

  3. 怎样克服 JavaScript 框架疲劳?

    [编者按]Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者. 在本文中.Tero ...

  4. Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)

    http://blog.csdn.net/yanzi1225627/article/details/22222735 如前文所示的TCP局域网传送东西,除了对传输层的TCP/UDP支持良好外,Andr ...

  5. [R] Draw a wordcloud

    # 加载rJava.Rwordseg库 library(rJava); library(Rwordseg); library(RColorBrewer); # == 读入数据 lecture=read ...

  6. pcap 安装(debian7 linux) qt 使用pcap.h

    安装方法一.sudo apt-get install libpcap-dev 安装方法二. 去http://www.tcpdump.org/下载最新的libpcap.tar.gz包 解压以后 ./co ...

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

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

  8. hdu2041java

    超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

    1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...

  10. Android Studio: 我解决的DEX出错。

    今天开始使用了Android Studio.感觉很方便,很强大.因为它还集成了SVN,GIT等版本管理工具. 由于工程在CheckOut下来后想直接在终端上运行,在引入外部jar包之后开始运行啦,结果 ...