zoukankan      html  css  js  c++  java
  • HDFS的HA搭建

    HDFS HA(高可用)

    NameNode HA

    免密码:登录到别的机器上去执行脚本
    

    将原来hdfs-site.xml文件中的配置删除,配置hdfs HA的配置

    1、配置/opt/modules/hadoop-2.5.1/etc/hadoop目录下的hdfs-site.xml文件

    <configuration>
    		<property>
    		  <name>dfs.nameservices</name>
    		  <value>matrix</value>
    		</property>
    		<property>
    		  <name>dfs.ha.namenodes.matrix</name>
    		  <value>nn1,nn2</value>
    		</property>
    		<property>
    		  <name>dfs.namenode.rpc-address.matrix.nn1</name>
    		  <value>node1:8020</value>
    		</property>
    		<property>
    		  <name>dfs.namenode.rpc-address.matrix.nn2</name>
    		  <value>node5:8020</value>
    		</property>
    		<property>
    		  <name>dfs.namenode.http-address.matrix.nn1</name>
    		  <value>node1:50070</value>
    		</property>
    		<property>
    		  <name>dfs.namenode.http-address.matrix.nn2</name>
    		  <value>node5:50070</value>
    		</property>
    		<!-- 共享edits文件的uri -->
    		<property>
    		  <name>dfs.namenode.shared.edits.dir</name>
    		  <value>qjournal://node2:8485;node3:8485;node5:8485/matrix</value>
    		</property>
    		<!-- 切换的时候免密码 -->
    		<property>
    		  <name>dfs.ha.fencing.ssh.private-key-files</name>
    		  <value>/root/.ssh/id_dsa</value>
    		</property>
    		<property>
    		  <name>dfs.journalnode.edits.dir</name>
    		  <value>/opt/modules/journalnode/data</value>
    		</property>
    		<property>
    		  <name>dfs.ha.fencing.methods</name>
    		  <value>sshfence</value>
    		</property>
    		<!-- 自动切换 -->
    		 <property>
    		   <name>dfs.ha.automatic-failover.enabled</name>
    		   <value>true</value>
    		 </property>
    		<property>
    			<name>dfs.permissions</name>
    			<value>false</value>
    		</property>
    		<property>
    		  <name>dfs.client.failover.proxy.provider.matrix</name>
    		  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    		</property>
    </configuration>
    

    在vim编辑器下按Esc键, 1,$s@mycluster@matrix可将第一行到最后一行的mycluster替换成matrix

    2、配置/opt/modules/hadoop-2.5.1/etc/hadoop目录下的core-site.xml文件

    <configuration>
    	<property>
    		<name>fs.defaultFS</name>
    		<value>hdfs://matrix</value>
    	</property>
    	<property>
    		<name>ha.zookeeper.quorum</name>
    		<value>node2,node3,node5:2181</value>
    	</property>
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>/opt/modules/hadoop-2.5.1</value>
    	</property>
    </configuration>
    

    3、删除masters文件,配置没有secondarynamenode

    [root@node1 hadoop]# rm -rf masters
    

    4、删除存放元数据的目录(core-site.xml文件中设定的hadoop.tmp.dir目录)

    [root@node1 ~]#  cd /opt/modules/hadoop-2.5.1
    [root@node1 name]#  rm -rf ./dfs
    

    5、删除node2、node3、node5的/opt/modules/hadoop-2.5.1/etc/hadoop目录下的所有内容

    cd /opt/modules/hadoop-2.5.1/etc/hadoop
    rm -rf ./*
    

    6、将配置重新分发到ndoe2、node3、node5

    [root@node1 hadoop]#  scp -r /opt/modules/hadoop-2.5.1/etc/hadoop/* root@node2:/opt/modules/hadoop-2.5.1/etc/hadoop/
    [root@node1 hadoop]#  scp -r /opt/modules/hadoop-2.5.1/etc/hadoop/* root@node3:/opt/modules/hadoop-2.5.1/etc/hadoop/
    [root@node1 hadoop]#  scp -r /opt/modules/hadoop-2.5.1/etc/hadoop/* root@node5:/opt/modules/hadoop-2.5.1/etc/hadoop/
    

    7、在三台机器上启动Zookeeper

    /opt/modules/zookeeper/bin/zkServer.sh start
    

    8、三个机器(node2、node3、node5)启动journalnode

    /opt/modules/hadoop-2.5.1/sbin/hadoop-daemon.sh start journalnode
    

    9、实现node5主机到node1主机的免密码登录

    [root@node5 ~]$ scp ~/.ssh/id_dsa.pub root@node1:/opt/
    

    [root@node1 hadoop-2.5.1]# cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
    

    10、在其中一个namenode上格式化:hdfs namenode -format

    [root@node1 hadoop-2.5.1]# ./bin/hdfs namenode -format
    

    11、把刚刚格式化之后的元数据拷贝到另外一个namenode上

    a> 启动刚刚格式化的namenode :hadoop-daemon.sh start namenode
    
    [root@node1 hadoop-2.5.1]# ./sbin/hadoop-daemon.sh start namenode
    

    b> 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby
    
    [root@node5 hadoop-2.5.1]# ./bin/hdfs namenode -bootstrapStandby
    

    c> 启动第二个namenode
    

    12、在其中一个namenode上初始化zkfc:hdfs zkfc -formatZK

    [root@node5 hadoop-2.5.1]# hdfs zkfc -formatZK
    

    13、停止上面节点:stop-dfs.sh

    [root@node1 hadoop-2.5.1]# ./sbin/stop-dfs.sh
    

    14、全面启动:start-dfs.sh

    [root@node1 hadoop-2.5.1]# ./sbin/start-dfs.sh
    

    两个namenode就两个zkfc,zkfc与namenode对应

    15、查看两个Namenode,哪个是Active,哪个是Standby

    http://node1:50070/
    

    http://node5:50070/
    

    16、查看是否能自动故障转移

    查看node1主机正在运行的进程
    [root@node1 hadoop-2.5.1]# jps
    6335 DFSZKFailoverController
    6067 NameNode
    6410 Jps
    
    杀死namenode进程
    [root@node1 hadoop-2.5.1]# kill -9 6067
    [root@node1 hadoop-2.5.1]# jps
    6432 Jps
    6335 DFSZKFailoverController
    

    17、在浏览器输入http://node1:50070/或http://node5:50070/查看HDFS Web UI

    在浏览器上查看http://node1:50070/
    发现node1主机NameNode已经挂了

    在浏览器上查看http://node5:50070/
    发现node5主机的NameNode成为Active状态了

    18、重新单节点启动node1主机的NameNode

    [root@node1 hadoop-2.5.1]# ./sbin/hadoop-daemon.sh start namenode
    

    18.1、在浏览器上查看http://node1:50070/

    发现node1主机的NameNode成为Standby状态了
    

  • 相关阅读:
    SQL SERVER 表分区测试备忘
    理解信息系统中的流程与工序
    获取最后插入的id另外方法
    asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
    定制应用Repeater 、ListView的模版
    JavaScript学习笔记——简单无缝循环滚动展示图片的实现
    JavaScript学习笔记——JS中的变量复制、参数传递和作用域链
    CSS学习笔记——定位position属性的学习
    CSS学习笔记——CSS中定位的浮动float
    CSS学习笔记——盒模型,块级元素和行内元素的区别和特性
  • 原文地址:https://www.cnblogs.com/SparseMatrix/p/5255518.html
Copyright © 2011-2022 走看看