1.hadoop的dfs.nameservices如何配置?
2.集群配置中hdfs://mycluster的作用是什么?
3.如何将namenode2切换为active状态?

在参考本手册前请确保Hadoop中HDFS组件已经成功部署并正常运行,同时系统基本环境完备,包括ssh免密码登录、/etc/hosts等。
         假设目前NameNode在服务器namenode1上运行,服务器namenode2作为standbynamenode,确保namenode2上至少已经安装了namenode服务。
         操作过程中尽量避免使用root用户操作,这里假设使用hadoop用户操作,具体部署步骤如下:
1.        关闭所有节点上的HDFS进程,主要是namenode1上的namenode和datanode进程。
2.        修改系统配置文件core-site.xml和hdfs-site.xml

  • hdfs-site.xml中添加:
[XML] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!-- HA Setup Head !--> 
         <property>
           <name>dfs.nameservices</name>
           <value>mycluster</value>
         </property>
 
         <property>
           <name>dfs.ha.namenodes.mycluster</name>
           <value>nn1,nn2</value>
         </property>
 
         <property>
           <name>dfs.namenode.rpc-address.mycluster.nn1</name>
           <value> namenode1:8020</value>
         </property>
         <property>
           <name>dfs.namenode.rpc-address.mycluster.nn2</name>
           <value> namenode2:8020</value>
         </property>
 
         <property>
           <name>dfs.namenode.shared.edits.dir</name>
           <value>qjournal://namenode1:8485;namenode2:8485/mycluster</value>
         </property>
 
         <property>
           <name>dfs.client.failover.proxy.provider.mycluster</name>
           <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
         </property>
 
         <property>
           <name>dfs.ha.fencing.methods</name>
           <value>sshfence</value>
         </property>
         <property>
           <name>dfs.ha.fencing.ssh.private-key-files</name>
           <value>/home/hadoop/.ssh/id_rsa</value>
         </property>
    <property>
           <name>dfs.ha.fencing.ssh.connect-timeout</name>
           <value>30000</value>
         </property>
 
         <property>
           <name>dfs.journalnode.edits.dir</name>
           <value>/path/to/hdfs/jn</value>
         </property>
 
<!-- HA Setup End !-->
  • core-site.xml中修改
fs.default hdfs://mycluster

注意:这些更改需要更新到每个运行HDFS进程的节点。
其中,namenode1和namenode2在hdfs-site.xml中有一项配置不同:

服务器 配置项
namenode1 dfs.namenode.http-address namenode1:50070
namenode2 dfs.namenode.http-address namenode2:50070

3.        分别在namenode1和namenode2上启动journalnode:
$HADOOP_HOME/sbin/hadoop-daemon.sh start  journalnode

4.        在namenode1上对journalnode的共享数据进行初始化,然后启动namenode进程:
$HADOOP_HOME/bin/hdfsnamenode  -initializeSharedEdits
$HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode

5.        在namenode2上同步journalnode的共享数据,然后启动namenode进程:
$HADOOP_HOME/bin/hdfsnamenode  -bootstrapStandby
$HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode

6.        分别在namenode1和namenode2中启动datanode:
$HADOOP_HOME/sbin/hadoop-daemon.sh  start datanode

7.        此时如果通过网页访问两个namenode的http-address,可以看到两个namenode都是standby状态,也可以通过hadoop自带的命令行工具来查看状态:
$HADOOP_HOME/bin/hdfs  haadmin -getServiceState  nn1
注意:此处的nn1为在hdfs-site.xml中配置的namenode服务的名称。

8.        确定要转为active的namenode的id,这里将namenode1设为active,使用命令行工具进行状态切换:
$HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn2  nn1
注意:此处“nn2  nn1”的顺序表示active状态由nn2转换到nn1上(虽然nn2在转化前也是standby状态)。

9.        上一步中把namenode1的状态切换为active后,系统自动把namenode2上的namenode进程关闭,再把错误原因排除后重启该namenode进程,启动后该namenode状态为standby,等待下一次namenode1出现故障时即可将namenode2状态切换为active,使用命令行工具:
$HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn1  nn2
         相应的,转换完以后namenode1上的namenode进程被关闭,需要排除故障后重新启动。

10.hdfs haadmin 

查考这里:http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

参考本手册操作过程中,如遇实际错误,请自行查阅相关日志文件排除错误。

hadoop namenode ha--手动切换(转)的更多相关文章

  1. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置

    通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置 配置H ...

  2. hadoop NameNode HA 和ResouceManager HA

    官网配置地址: HDFS HA : http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvai ...

  3. Hadoop NameNode HA 和 ResourceManager HA

    1.集群规划 1.1 规划说明 hadoop1 cluster1 nameNode hadoop2 cluster1 nameNodeStandby ZooKeeper ResourceManager ...

  4. hadoop namenode HA集群搭建

    hadoop集群搭建(namenode是单点的)  http://www.cnblogs.com/kisf/p/7456290.html HA集群需要zk, zk搭建:http://www.cnblo ...

  5. Apache hadoop namenode ha和yarn ha ---HDFS高可用性

    HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...

  6. HADOOP namenode HA

    参考的文章:http://www.cnblogs.com/smartloli/p/4298430.html 当然,在操作的过程中,发现与上述文章中描述的还是有一些小小的区别. 配置好后,start-d ...

  7. hadoop yarn HA集群搭建

    可先完成hadoop namenode HA的搭建:http://www.cnblogs.com/kisf/p/7458519.html 搭建yarnde HA只需要在namenode HA配置基础上 ...

  8. hadoop NameNode 手动HA

    官网配置地址:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWit ...

  9. Hadoop集群搭建-HA高可用(手动切换模式)(四)

    步骤和集群规划 1)保存完全分布式模式配置 2)在full配置的基础上修改为高可用HA 3)第一次启动HA 4)常规启动HA 5)运行wordcount 集群规划: centos虚拟机:node-00 ...

随机推荐

  1. Android系统截屏的实现(附代码)

    1.背景                     写博客快两年了,写了100+的文章,最火的文章也是大家最关注的就是如何实现android系统截屏.其实我们google android_screen_ ...

  2. nginx反向代理后getRequestURL会出现问题

    nginx反向代理后getRequestURL会出现问题 http://huangqiqing123.iteye.com/blog/1895192

  3. Android学习笔记(八)——四种基本布局

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,或是嵌套子布局,从而编写出精美的界 ...

  4. Github如何删除repository(仓库)

    首先就是你的Github主页了. 第二步点击进入一个repository(仓库) 第三步点击右上的setting 将此页面滑动到最下面找个这个 点击删除即可!

  5. vSphere、Hyper-V与XenServer 你选哪个?

    vSphere.Hyper-V与XenServer 你选哪个? 当在VMware vSphere.Microsoft Hyper-V与Citrix Systems XenServer之间做出选择时,v ...

  6. Linux nohup 程序后台运行

    &方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台:          /usr/local/my ...

  7. 再谈Weiphp公众平台开发——1、增加插件

    去年开始接触基于Weiphp的公众平台开发,一直没时间好好整理一下. 下面开始讲解第一个自定义weiphp插件:MyHello的开发流程. 1.插件创建.在weiphp管理后台依次点击“插件管理-&g ...

  8. mysql 同步

    http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html http://blog.csdn.net/mycwq/article/det ...

  9. sed使用的并不是完全的正则表达式

    经过实验发现,命令sed 's/pattern/replacement/' file中,pattern使用的并不是完全的正则表达式,而如果想使用正则表达式,需要使用sed命令的 -r 选项: sed ...

  10. 【Networkk】一篇文章完全搞清楚 scoket read/write 返回码、阻塞与非阻塞、异常处理 等让你头疼已久的问题

    浅谈TCP/IP网络编程中socket的行为   我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗 ...