li26598296 发表于 2016-12-11 11:06:45

hadoop-2.0-cdh4 HA 解决方案安装文档

  1.安装NFS,配置共享目录
  安装配置NFS
  NFS是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。CentOS系统中如何安装和配置nfs呢,下面我们就来学习一下方法。首先我们来介绍一些会用到的CentOS系统命令。
  1.安装
  $yum -y install nfs-utils
  2.创建共享目录
  $su root (切换到root用户,因为NFS只能被root用户使用)
  $mkdir –p /smp/hadoop-cdh4
  $chmod –R 777 /smp/hadoop-cdh4 (因为是root用户创建,要给当前用户赋可读写的权限)
  3.配置
  $vi /etc/exports
  在配置文件中添加你要共享的目录等信息,例如:
  /smp/hadoop-cdh4 *(rw,sync,no_root_squash)
  内容具体参数说明如下:
  [共享的目录] [主机名或IP(参数,参数)]
  其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。
  CentOS系统中,当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
  当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
  [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
  下面是一些NFS共享的常用参数:

1.ro          只读访问
2.rw          读写访问
3.sync      所有数据在请求时写入共享
4.async       NFS在写入数据前可以相应请求
5.secure      NFS通过1024以下的安全TCP/IP端口发送
6.insecure    NFS通过1024以上的端口发送
7.wdelay      如果多个用户要写入NFS目录,则归组写入(默认)
8.no_wdelay   如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
9.hide      在NFS共享目录中不共享其子目录
10.no_hide   共享NFS目录的子目录
11.subtree_check         如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
12.no_subtree_check      和上面相对,不检查父目录权限
13.all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
14.no_all_squash         保留共享文件的UID和GID(默认)
15.root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
16.no_root_squash          root用户具有根目录的完全管理访问权限
17.anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
   anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
  4.启动
  $/etc/init.d/nfs restart
  在你要共享的机器上同样使用root用户创建同步的目录并赋读写权限,并挂在该目录,具体的命令如下:

$mkdir –p /smp/avatarshare
$mount -v -t nfs -o tcp,soft,retry=20,timeo=20,rsize=32768,wsize=32768hadoop04:/smp/hadoop-cdh4 /smp/hadoop-cdh4

   到此我们就将NFS配置并启动好了
  
  
  4.安装zookeeper-3.4.2
  下载zookeeper-3.4.2.tar.gz http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.2/zookeeper-3.4.2.tar.gz
  将tar包解压到指定目录
  tar zxvf zookeeper-3.4.2.tar.gz
  修改zookeeper配置
  将zookeeper安装目录下conf/zoo_sample.cfg重命名为zoo.cfg
  修改其中的内容

# The number of milliseconds of each tick
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.
dataDir=/home/hadoop/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
#
# 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
   在配置的dataDir目录下创建一个myid文件,里面写入一个0-255之间的一个随意数字,每个zookeeper上这个文件的数字要是不一样的
  修改下面的内容变成你自己的服务器地址
  server.1=hadoop01:2888:3888
  server.2=hadoop02:2888:3888
  server.3=hadoop03:2888:3888
  分别启动所有的zookeeper
  bin/zkServer.sh start
  使用客户端连接zookeeper测试是否成功
  bin/zkCli.sh -server ip地址:clientPort
  2.修改hadoop安装目录下etc/hadoop/core-site.xml
  加入以下内容

<!--fs.default.name for MRV1 ,fs.defaultFS for MRV2(yarn) -->
<property>
<name>fs.defaultFS</name>
<!--这个地方的值要和hdfs-site.xml文件中的dfs.federation.nameservices一致-->
<value>hdfs://dinglicom</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
</property>
   3.修改hdfs-site.xml

<!--配置dfs.nameservices 这个名称可以随意,如果同时还使用HDFS 的Federation机制,则应该使用逗号分隔nameservices列表-->
<property>
<name>dfs.federation.nameservices</name>
<value>dinglicom</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-cdh4-nn</value>
</property>
<!--配置:dfs.ha.namenodes.. 下面的dinglicom是nameservice ID,nn1和nn2是每台namenode的serviceId。-->
<property>
<name>dfs.ha.namenodes.dinglicom</name>
<value>nn1,nn2</value>
</property>
<!--配置rpc通信地址:dfs.namenode.rpc-address..-->
<property>
<name>dfs.namenode.rpc-address.dinglicom.nn1</name>
<value>hadoop01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.dinglicom.nn2</name>
<value>hadoop02:8020</value>
</property>
<!--配置http通信地址:dfs.namenode.http-address..-->
<property>
<name>dfs.namenode.http-address.dinglicom.nn1</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.dinglicom.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--配置 dfs.namenode.shared.edits.dir 是主备namenode共享目录,这里要求主备都可以读写,采用NFS实现共享-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>/smp/hadoop-cdh4</value>
</property>
<!--配置客户端failover,解决客户端故障转移-->
<property>
<name>dfs.client.failover.proxy.provider.dinglicom</name>
<value>org.apache.Hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置:Fencing,
这里dfs.ha.fencing.methods实现的方法有两种sshfence和shell,我下面实现的是sshfence,dfs.ha.fencing.ssh.private-key-files这个是ssh的key file ,用于在Active 节点切换期间的安全机制,确保在任何时间都只有一个NameNode 处于活跃状态。在故障切换期间,haadmin 命令确保在将其它NameNode 转换为Active 状态之前Active 节点处在Standby 状态,或其进程已被终止。
至少应该配置一个,因为没有默认配置,因此如果配置则HA 机制将会失效。
如果要实现自定义的安全机制,参照org.apache.hadoop.ha.NodeFencer
-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/smp/.ssh/id_rsa</value>
</property>
<!--启用失败自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置zk集群信息-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
</property>
<!--datanode数据存放目录-->
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-cdh4-dn</value>
</property>
   4.namenode格式化
  bin/hadoop namenode -format -clusterid cluster1
  5. HDFS (HA) 的初始化
  设定所有的必要配置项后,必须首先同步两个NameNode 上的元数据。如果是新建的HDFS 集群,则应首先格式化一个NameNode ,或者想把非HA 集群转换为HA 集群,按照dfs.namenode.name.dir 、dfs.namenode.edits.dir 的配置把当前NameNode 节点的元数据目录复制到另一个NameNode. 还应该确保共享存储目录下(dfs.namenode.shared.edits.dir ) 包含NameNode 所有的元数据
  6.zk格式化
  bin/hdfs zkfc -formatZK
  7.HDFS(HA) 的管理
  sbin/start-dfs.sh
  默认以HA 方式启动集群,启动后为Standby 状态,使用如下命令设置Active 节点 (手动方式)
  bin/hdfs haadmin –DFSHAadmin –transitionToActive nn1
  如果让nn2 成为变为active nn1 变为standby ,则
  # bin/hdfs haadmin -DfSHAadmin -failover nn1 nn2
  如果失败(is not ready to become active) 则
  # bin/hdfs haadmin -DfSHAadmin -failover --forceactive nn1 nn2
  具体参照bin/hdfs haadmin命令

页: [1]
查看完整版本: hadoop-2.0-cdh4 HA 解决方案安装文档