设为首页 收藏本站
查看: 651|回复: 0

[经验分享] hadoop-2.0-cdh4 HA 解决方案安装文档

[复制链接]

尚未签到

发表于 2016-12-11 11:06:45 | 显示全部楼层 |阅读模式
  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=32768  hadoop04:/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.[nameservice ID]. 下面的dinglicom是nameservice ID,nn1和nn2是每台namenode的serviceId。-->
<property>
<name>dfs.ha.namenodes.dinglicom</name>
<value>nn1,nn2</value>
</property>
<!--配置rpc通信地址:dfs.namenode.rpc-address.[nameservice ID].-->
<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.[nameservice ID].-->
<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命令
DSC0000.jpg

DSC0001.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312737-1-1.html 上篇帖子: 使用kerberos的hadoop选择java版本需注意 下篇帖子: hadoop mapreduce程序jar包版本冲突解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表