Hadoop2.2.0 NN HA详细配置+Client透明性试验【完整版】


引言: 前面转载过一篇团队兄弟【伊利丹】写的NN HA实验记录,我也基于他的环境实验了NN HA对于Client的透明性。见 本篇文章记录的是亲自配置NN HA的详细全过程,以及全面测试HA对客户端访问透明性的全过程,希望对大家有帮助。
实验环境 Hadoop2.2.0的4节点集群,ZK节点3个(ZK节点数最好为奇数个),hosts文件和各节点角色分配如下:   hosts: 192.168.66.91 master 192.168.66.92 slave1 192.168.66.93 slave2 192.168.66.94 slave3   角色分配:
  Active NN Standby NN DN JournalNode Zookeeper FailoverController
master V     V V V
slave1   V V V V V
slave2     V V V  
slave3     V      
 

--------------------------------------------------------------------------------

Ubuntu 13.04上搭建Hadoop环境

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

Ubuntu下Hadoop环境的配置

单机版搭建Hadoop环境图文教程详解

搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)

--------------------------------------------------------------------------------

实验过程:

1.下载稳定版Zookeeper

http://mirrors.cnnic.cn/apache/zookeeper/stable/ 并解压到hadoop集群某目录下,我放在了/home/yarn/下。
2.修改配置文件 配置文件在conf文件夹中,将zoo_sample.cfg改名为zoo.cfg,并对其做响应修改,以下是修改过后的zoo.cfg # The number of milliseconds of each tick ZK之间,或者Client和ZK之间心跳的时间间隔 tickTime=2000   # The number of ticks that the initial  # synchronization phase can take initLimit=10 # The number of ticks that can pass between  # sending a request and getting an acknowledgement syncLimit=5   # the directory where the snapshot is stored.  # do not use /tmp for storage, /tmp here is just  # example sakes.  保存ZK数据的目录,请自行创建后在此处指定 dataDir=/home/yarn/Zookeeper/zoodata   # the port at which the clients will connect  客户端连接ZK服务器的端口 clientPort=2181   # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the  # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1   #保存ZK日志的目录,请自行创建后在此处指定 dataLogDir=/home/yarn/Zookeeper/zoolog   #******以下部分均为分布式ZK集群使用****** #ZK集群初始化时,Follower节点需要和Leader节点通信,initLimit配置的是Leader最多等待多少个心跳 initLimit=5    #Leader和Follower之间发送消息、请求和应答时,最多等待多少个心跳 syncLimit=2    #server.A=B:C:D #A是一个数字,表示这是第几号服务器 #B是当前服务器的ID或者主机名 #C是Follower服务器与Leader服务器交换信息的端口 #D是当Leader挂掉时,重新选举Leader所使用的端口 server.1=192.168.66.91:2888:3888  server.2=192.168.66.92:2888:3888 server.3=192.168.66.93:2888:3888 #千万注意:接下来需要在各个几点的dataDir目录下建立myid文件,内容就是相应的A,也就是说,各个ZK节点的myid文件内容不同 !!!
3.修改各个节点的环境变量 在/etc/profile文件添加: export ZOOKEEPER_HOME=/home/yarn/Zookeeper/zookeeper-3.4.6 并为PATH加上 $ZOOKEEPER_HOME/bin 注意:export ZOOKEEPER_HOME要在PATH的上方。
下面开始修改Hadoop的配置文件:
4.修改core-site.xml <configuration> <property>   <name>fs.defaultFS</name>   <value>hdfs://myhadoop</value>   <description>注意:myhadoop为集群的逻辑名,需与hdfs-site.xml中的dfs.nameservices一致!</description> </property> <property>   <name>hadoop.tmp.dir</name>   <value>/home/yarn/Hadoop/hdfs2.0/tmp</value> </property> <property>   <name>ha.zookeeper.quorum</name>   <value>master:2181,slave1:2181,slave2:2181</value>   <description>各个ZK节点的IP/host,及客户端连接ZK的端口,该端口需与zoo.cfg中的clientPort一致!</description> </property> </configuration>
5.修改hdfs-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!--   Licensed under the Apache License, Version 2.0 (the "License");   you may not use this file except in compliance with the License.   You may obtain a copy of the License at       http://www.apache.org/licenses/LICENSE-2.0     Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License. See accompanying LICENSE file. -->   <!-- Put site-specific property overrides in this file. -->   <configuration> <property>   <name>dfs.nameservices</name>   <value>myhadoop</value>   <description>     Comma-separated list of nameservices.     as same as fs.defaultFS in core-site.xml.   </description> </property>   <property>   <name>dfs.ha.namenodes.myhadoop</name>   <value>nn1,nn2</value>   <description>     The prefix for a given nameservice, contains a comma-separated     list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).   </description> </property>   <property>   <name>dfs.namenode.rpc-address.myhadoop.nn1</name>   <value>master:8020</value>   <description>     RPC address for nomenode1 of hadoop-test   </description> </property>   <property>   <name>dfs.namenode.rpc-address.myhadoop.nn2</name>   <value>slave1:8020</value>   <description>     RPC address for nomenode2 of hadoop-test   </description> </property>   <property>   <name>dfs.namenode.http-address.myhadoop.nn1</name>   <value>master:50070</value>   <description>     The address and the base port where the dfs namenode1 web ui will listen on.   </description> </property>   <property>   <name>dfs.namenode.http-address.myhadoop.nn2</name>   <value>slave1:50070</value>   <description>     The address and the base port where the dfs namenode2 web ui will listen on.   </description> </property>     <property>     <name>dfs.namenode.servicerpc-address.myhadoop.n1</name>     <value>master:53310</value>   </property>   <property>     <name>dfs.namenode.servicerpc-address.myhadoop.n2</name>     <value>slave1:53310</value>   </property>       <property>   <name>dfs.namenode.name.dir</name>   <value>file:///home/yarn/Hadoop/hdfs2.0/name</value>   <description>Determines where on the local filesystem the DFS name node       should store the name table(fsimage).  If this is a comma-delimited list       of directories then the name table is replicated in all of the       directories, for redundancy. </description> </property>   <property>   <name>dfs.namenode.shared.edits.dir</name>   <value>qjournal://slave1:8485;slave2:8485;slave3:8485/hadoop-journal</value>   <description>A directory on shared storage between the multiple namenodes   in an HA cluster. This directory will be written by the active and read   by the standby in order to keep the namespaces synchronized. This directory   does not need to be listed in dfs.namenode.edits.dir above. It should be   left empty in a non-HA cluster.   </description> </property>   <property>   <name>dfs.datanode.data.dir</name>   <value>file:///home/yarn/Hadoop/hdfs2.0/data</value>   <description>Determines where on the local filesystem an DFS data node   should store its blocks.  If this is a comma-delimited   list of directories, then data will be stored in all named   directories, typically on different devices.   Directories that do not exist are ignored.   </description> </property>   <property>   <name>dfs.ha.automatic-failover.enabled</name>   <value>true</value>   <description>     Whether automatic failover is enabled. See the HDFS High     Availability documentation for details on automatic HA     configuration.   </description> </property>   <property>   <name>dfs.journalnode.edits.dir</name>   <value>/home/yarn/Hadoop/hdfs2.0/journal/</value> </property>   <property>     <name>dfs.client.failover.proxy.provider.myhadoop</name>                           <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>   <description>Configure the name of the Java class which will be used by the DFS Client to determine which NameNode is the current Active, and therefore which NameNode is currently serving client requests.  这个类是Client的访问代理,是HA特性对于Client透明的关键! </description>   </property>         <property>         <name>dfs.ha.fencing.methods</name>         <value>sshfence</value>     <description>how to communicate in the switch process</description> </property>       <property>         <name>dfs.ha.fencing.ssh.private-key-files</name>         <value>/home/yarn/.ssh/id_rsa</value>   <description>the location stored ssh key</description> </property>     <property>     <name>dfs.ha.fencing.ssh.connect-timeout</name>     <value>1000</value>   </property>     <property>     <name>dfs.namenode.handler.count</name>     <value>8</value>   </property>    </configuration>

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 下一页

相关内容

    暂无相关文章