请教hadoop namenode ha2.0的ha如何配置

Hadoop2.0 QJM方式的HA的配置_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Hadoop2.0 QJM方式的HA的配置
来源:Linux社区&
作者:sstudent
本文在《2.0的安装和基本配置》(见 &)一文的基础上继续介绍hadoop2.0 QJM(Quorum Journal Manager)方式的HA的配置(hadoop2.0架构,具体版本是hadoop2.2.0)。本文只介绍HA的主备的手工切换,自动切换在下一篇文章继续介绍(见 )。
--------------------------------------分割线 --------------------------------------
相关阅读:
13.04上搭建Hadoop环境
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)
Ubuntu下Hadoop环境的配置
单机版搭建Hadoop环境图文教程详解
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)
--------------------------------------分割线 --------------------------------------
文中描述的机器角色包含2个namenode:
其中namenode1为active namenode;namenode2为standby namenode。&
包含3个journalnode:
journalnode1
journalnode2
journalnode3
journalnode的机器的数量是奇数,可以是3,5,7...,2n+1。
其他机器角色本文中不涉及的可以参考《hadoop2.0的安装和基本配置》一文。
HA的配置只涉及到core-site.xml和hdfs-site.xml两个配置文件,其他配置可以文件参考《》一文。
2.1 core-site.xml
&configuration&
& & & & &property&
& & & & & & & & &name&fs.defaultFS&/name&
& & & & & & & & &value&hdfs://mycluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&hadoop.tmp.dir&/name&
& & & & & & & & &value&/home/tmp/hadoop2.0&/value&
& & & & &/property&
&/configuration&
2.2 hdfs-site.xml
&configuration&
& & & & &property&
& & & & & & & & &name&dfs.replication&/name&
& & & & & & & & &value&1&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.name.dir&/name&
& & & & & & & & &value&/home/dfs/name&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.datanode.data.dir&/name&
& & & & & & & & &value&/home/dfs/data&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.permissions&/name&
& & & & & & & & &value&false&/value&
& & & & &/property&
& & & & &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.http-address.mycluster.nn1&/name&
& & & & & & & & &value&namenode1:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.mycluster.nn2&/name&
& & & & & & & & &value&namenode2:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.shared.edits.dir&/name&
& & & & & & & & &value&qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.journalnode.edits.dir&/name&
& & & & & & & & &value&/home/dfs/journal&/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&/root/.ssh/id_rsa&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.fencing.ssh.connect-timeout&/name&
& & & & & & & & &value&6000&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.automatic-failover.enabled&/name&
& & & & & & & & &value&false&/value&
& & & & &/property&
&/configuration&
上述有些参数这里需要解释一下。
dfs.ha.automatic-failover.enabled
这里是把主备自动切换关闭,需要手工来切换。在下一篇文章会介绍通过配置zookeeper来实现主备自动切换。
fs.ha.namenodes.mycluster
&value&中的nn1,nn2分别是active namenode和standby namenode的namenode id,你也可以自己起一个namenode id,只要在参数中都保持一致就可以了。
dfs.namenode.shared.edits.dir
配置一组journalnode(3,5,7,...,2n+1)的URI,用于active namenode和standby namenode读写edits文件(原理可以参考前面的文章《hadoop2.0的HA介绍》),&value&中的mycluster是dfs.nameservices保持一致。你可以自己起一个nameservice ID,只要在参数中都保持一致就可以了。
dfs.journalnode.edits.dir
是在journalnode节点上用于存放active namenode和standby namenode共享的edits文件的目录。
dfs.ha.log-roll.period
active namenode的edits文件轮转的时间间隔,前面没有设置这个参数,默认值是120秒。即standby namenode会隔120秒要求active namenode切出一个edits文件,然后通过journalnode去同步这个文件。
active namenode会隔120秒会切出一个新edits文件,并且给这些edits文件一个编号,越新的edits文件编号越大。
日志轮转的时候开始会先生成一个新的&inprogress& edits文件(文件名带着&inprogress&),说明日志正在生成,轮转没完成。当过了120秒之后,日志轮转完成,文件改名,文件名字带着一个目前最大的编号(文件名没有&inprogress&)。然后生成一个新的&inprogress& edits文件,开始下一次edits文件轮转。
当发生主备切换的时候,会触发一次edit文件的轮转,这样standby namenode就会把剩下的edits文件同步过来,在切换到active状态时元数据能保持一个最新的状态。
dfs.ha.tail-edits.period
standby namenode每隔多长时间去检测新的edits文件。它只会检查已经完成轮转的edits文件,不会检查&inprogress& edits文件。
dfs.ha.fencing.methods
系统在任何时候只有一个namenode节点处于active状态。在主备切换的时候,standby namenode会变成active状态,原来的active namenode就不能再处于active状态了,否则两个namenode同时处于active状态会造成所谓的&脑裂&??题。所以在failover的时候要设置防止2个namenode都处于active状态的方法,可以是java类或者脚本。
fencing的方法目前有两种,sshfence和shell
sshfence方法是指通过ssh登陆到active namenode节点杀掉namenode进程,所以你需要设置ssh无密码登陆,还要保证有杀掉namenode进程的权限。
shell方法是指运行一个shell脚本/命令来防止&脑裂&问题,脚本需要自己写。
注意,QJM方式本身就有fencing功能,能保证只有一个namenode能往journalnode上写edits文件,所以是不需要设置fencing的方法就能防止&脑裂&问题的。但是,在发生failover的时候,原来的active namenode可能还在接受客户端的读请求,这样客户端很可能读到一些过时的数据(因为新的active namenode的数据已经实时更新了)。因此,还是建议设置fencing方法。如果确实不想设置fencing方法,可以设置一个能返回成功(没有fencing作用)的方法,如&shell(/bin/true)&。这个纯粹为了fencing方法能够成功返回,并不需要真的有fencing作用。这样可以提高系统的可用性,即使在fencing机制失败的时候还能保持系统的可用性。
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (10/08/:58)
& (05/09/:10)
& (05/03/:23)
& (09/07/:46)
& (05/04/:38)
& (05/03/:15)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款> 博客详情
心血之作,在熟悉hadoop2架构的过程耽误了太长时间,在搭建环境过程遇到一些问题,这些问题一直卡在那儿,不得以解决,耽误了时间。最后,千寻万寻,把问题解决,多谢在过程提供帮助的大侠。这篇文章中,我也会把自己遇到的问题给列出来,帮助后来者进一步的学习。
这篇文章结合自己实际测试过程,花费太多心血整理。
本文主要通过对hadoop2.5.2集群配置的过程加以梳理,所有的步骤都是通过自己实际测试。文档的结构也是根据自己的实际情况而定,同时也会加入自己在实际过程遇到的问题。搭建环境过程不重要,重要点在于搭建过程中遇到的问题,解决问题的过程。
可能自己遇到的问题在一些由经验的老者手上都不是问题,但是这些问题着实让自己耽误了很长时间,最后问题解决也是费了太大心血。也通过这篇文档,表现出来,算是总结,为后者提供意见。
Hadoop2.5.2体系结构
要想理解本节内容,首先需要了解hadoop1的体系结构。这里不过多的介绍基于hadoop1的体系架构,早在之前,曾搭建hadoop1.2.1伪分布式集群,详细请看hadoop学习(一)hadoop-1.2.1伪分布式配置及遇到的问题。这里主要介绍hadoop2的体系架构。
hadoop1的核心组成是两部分,即HDFS和MapReduce。在hadoop2中变为HDFS和Yarn。
新的HDFS中的NameNode不再是只有一个了,可以有多个(目前只支持2个)。每一个都有相同的职能。
这两个NameNode的地位如何:一个是active状态的,一个是standby状态的。当 集群运行时,只有active状态的NameNode是正常工作的,standby状态的NameNode是处于待命状态的,时刻同步active状态 NameNode的数据。一旦active状态的NameNode不能工作,通过手工或者自动切换,standby状态的NameNode就可以转变为 active状态的,就可以继续工作了。这就是高可靠。
当NameNode发生故障时,他们的数据如何保持一致:在这里,2个NameNode的数据其实是实时共享的。新HDFS采用了一种共享机制,JournalNode集群或者NFS进行共享。NFS是操作系统层面的,JournalNode是hadoop层面的,我们这里使用JournalNode集群进行数据共享。
如何实现NameNode的自动切换:这就需要使用ZooKeeper集群进行选择了。HDFS集群中的两个NameNode都在ZooKeeper中注册,当active状态的NameNode出故障时,ZooKeeper能检测到这种情况,它就会自动把standby状态的NameNode切换为active状态。
HDFS Federation(HDFS联盟):联盟的出现是有原因的。我们知道 NameNode是核心节点,维护着整个HDFS中的元数据信息,那么其容量是有限的,受制于服务器的内存空间。当NameNode服务器的内存装不下数据后,那么HDFS集群就装不下数据了,寿命也就到头了。因此其扩展性是受限的。HDFS联盟指的是有多个HDFS集群同时工作,那么其容量理论上就不受限了,夸张点说就是无限扩展。你可以理解成,一个总集群中,可以虚拟出两个或两个以上的单独的小集群,各个小集群之间数据是实时共享的。因为hadoop集群中已经不在单独存在namenode和datanode的概念。当一个其中一个小集群出故障,可以启动另一个小集群中的namenode节点,继续工作。因为数据是实时共享,即使namenode或datanode一起死掉,也不会影响整个集群的正常工作。
集群节点任务安排:
这点很重要,我们事先一定要先理解,节点之间任务是如何安排的。如果事先不理解为什么是这样,后面还会遇到更多的问题。这就需要,理解journalnode、zookeeper、datanode、namenode之间关系。自己也是在这上面耽误了很长时间,希望读者这点多注意下。
Journalnode和zookeeper保持奇数点,这点大家要有个概念,最少不少于3个节点。这里暂不讲解。
两个namenode上面已经说明,其实在hadoop2中几点之间namenode和datanode之间的划分已经不是那么明确了。这只是采用后4台机器作为namenode。这里也存在一个问题:如果把datanode和namenode放在一起,对数据的读取IO的效率肯定会有一定的影响,不同机器之间还是要通过网线和http请求完成数据之间的共享。实际中,两者是可以在一起。但是我不知道在一起和不在一起之间的主要区别在哪儿,上面的解释只是个人意见,如果读者有更好的意见可以留言,大家一起讨论。
下面就进入正式的集群的安装过程:
下面所有的过程都是在hadoop1机器上完成的,之后把文件复制到其他节点中。
Zookeeper安装过程:
1、下载解压zookeeper
下载地址:http://mirror./apache/zookeeper/zookeeper-3.4.6/
解压到指定目录:这里目录:/home/tom/yarn/hadoop-2.5.2/app/
在hadoop目录中创建app目录。把文件解压到hadoop的app目录中,是为了以后整个项目可以整体移植。包括后面,我们会安装HBase、Hive等软件,都是解压到app的目录中。
2、修改配置文件
2.1进入zookeeper中conf目录:
拷贝命名zoo_sample.cfg 为zoo.cfg。我们一般不修改配置文件默认的示例文件,修改赋值其子文件。
编辑zoo.cfg
拷贝命名为。我们一般不修改配置文件默认的示例文件,修改赋值其子文件。
&&&&&& 编辑
&&&&&&&tickTime=2000
&&&&&&&initLimit=10
&&&&&&&syncLimit=5
&&&&&&&dataDir=/home/tom/yarn/hadoop-2.5.0/app/zookeeper-3.4.6/zkdata
&&&&&&&dataLogDir=/home/tom/yarn/hadoop-2.5.0/app/zookeeper-3.4.6/zkdatalog
&&&&&&&clientPort=2181
&&&&&&&server.1=hadoop1:
&&&&&&&server.2=hadoop2:&
&&&&&&&server.3=hadoop3:
&&&&&&&server.4=hadoop4:
&&&&&&&server.5=hadoop5:
2.2创建和两个文件夹
&&&&&& 在的目录中,创建上述两个文件夹。进入文件夹,创建文件,填入。这里写入的,是在文本中的中的。当我们把所有文件都配置完毕,我们把中目录复制到其它机器中,我们在修改每台机器中对应的文本,中的写入。其余节点,安照上面配置,依此写入相应的数字。文件夹,是为了指定产生日志指定相应的路径。
添加环境变量
&&&&&& 本机环境变量添是在目录中添加的。也可以不用添加到环境变量
添加环境变量
&&&&&&&本机环境变量添是在/etc/profile目录中添加的。
添加ZOOKEEPER_HOME/bin目录可以在原有的后面加入
&&&&&&& :ZOOKEEPER_HOME/bin
&&&&&&& 关于环境变量修改目录下的文件,也可以在根目录下的目录下添加环境变量。这两者有什么区别:是对当前目录用户的环境变量,文件是对所有用户都开放的目录。当系统加载文件中,先从找相应的路劲,如果没有会在文件中找对应的环境变量路径。这两者大家稍至了解。
&&&&&&& 然后&
&&&&&& 上面个步骤就安装完毕。然后就是测试,这个放到后面等上整体配置完毕,到其它主机上后,再一起测试。
Hadoop配置
1、下载解压
&&&&&&& 路径:
&&&&&& 解压到:/home/tom/yarn/下。其实这一步应该在解压之前。不再多讲。
2、修改配置文件
&&&&&&& 这里要修改配置文件一共包括个,分别是在hadoop-env.sh、、、、&和。
&&&&&&& 修改文件的目录地址:/home/tom/yarn/hadoop-2.5.2/etc/hadoop/
&&&&&&& 添加jdk环境变量:
&&&&&&& export&JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
&&&&configuration&&&&&
&&&&&&&&&&&&&property&&&&&
&&&&&&&&&&&&&&&&&name&fs.defaultFS&/name&&&&&
&&&&&&&&&&&&&&&&&value&hdfs://cluster1&/value&&&&&
&&&&&&&&&&&&&/property&
&&&&&&&&&【这里的值指的是默认的HDFS路径。这里只有一个HDFS集群,在这里指定!该值来自于hdfs-site.xml中的配置】&&&&
&&&&&&&&&&&&&property&&&&&
&&&&&&&&&&&&&&&&&&&name&hadoop.tmp.dir&/name&&&&
&&&&&&&&&&&&&&&&&&&value&/home/tom/yarn/yarn_data/tmp&/value&&&&
&&&&&&&&&&&&&/property&
&&&&&&&&&&【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。这里的yarn_data/tmp目录与文件都是自己创建的】&&&&
&&&&&&&&&&&&&property&&&&&
&&&&&&&&&&&&&&&&&&name&ha.zookeeper.quorum&/name&&&&&
&&&&&&&&&&&&&&&&&&value&hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181,hadoop5:2181&/value&&&&
&&&&&&&&&&&&&/property&
&&&&&&&&&&【这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点】&&&&
&&&&&&&&&/configuration&&span&style="font-size:14"&&span&style="font-family:宋体;"&&/span&&/span&
2.3文件hdfs-site.xml
重点核心文件:
&&&&&&&&&configuration&
&&&&&&&&&&&property&
&&&&&&&&&&&&&&name&dfs.replication&/name&
&&&&&&&&&&&&&&value&3&/value&
&&&&&&&&&&&/property&
&&&&&&&&&&【指定DataNode存储block的副本数量。默认值是3个,我们现在有4个DataNode,该值不大于4即可。】&&&&
&&&&&&&&&&&property&
&&&&&&&&&&&&&&name&dfs.permissions&/name&
&&&&&&&&&&&&&&value&false&/value&
&&&&&&&&&&&/property&
&&&&&&&&&&【设置权限之后可以控制各用户之间的权限】&&
&&&&&&&&&&&property&
&&&&&&&&&&&&&&name&dfs.permissions.enabled&/name&
&&&&&&&&&&&&&&value&false&/value&
&&&&&&&&&&&/property&
&&&&&&&&&&&property&&&&&
&&&&&&&&&&&&&&name&dfs.nameservices&/name&&&
&&&&&&&&&&&&&&value&cluster1&/value&&&&&
&&&&&&&&&&&/property&
&&&&&&&&&【给hdfs集群起名字,这个名字必须和core-site中的统一,且下面也会用到该名字】
&&&&&&&&&&&property&
&&&&&&&&&&&&&name&dfs.ha.namenodes.cluster1&/name&
&&&&&&&&&&&&&value&hadoop1,hadoop2&/value&
&&&&&&&&&&&/property&
&&&&&&&&【指定NameService是cluster1时的namenode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可】&&
&&&&&&&&&&property&
&&&&&&&&&&&&&name&dfs.namenode.rpc-address.cluster1.hadoop1&/name&
&&&&&&&&&&&&&value&hadoop1:9000&/value&
&&&&&&&&&&/property&
&&&&&&&&【指定hadoop101的RPC地址】&
&&&&&&&&&&property&&&&&
&&&&&&&&&&&&name&dfs.namenode.http-address.cluster1.hadoop1&/name&&&&&
&&&&&&&&&&&&value&hadoop1:50070&/value&&&&&
&&&&&&&&&&/property&
&&&&&&&&&【指定hadoop101的http地址】&&&
&&&&&&&&&&property&&&&&
&&&&&&&&&&&&name&dfs.namenode.rpc-address.cluster1.hadoop2&/name&&&&&
&&&&&&&&&&&&value&hadoop2:9000&/value&&&&&
&&&&&&&&&&/property&
&&&&&&&&&&property&&&&&
&&&&&&&&&&&&name&dfs.namenode.http-address.cluster1.hadoop2&/name&&&&&
&&&&&&&&&&&&value&hadoop2:50070&/value&&&&
&&&&&&&&&&/property&
&&&&&&&&&&property&
&&&&&&&&&&&&name&dfs.namenode.servicerpc-address.cluster1.hadoop1&/name&
&&&&&&&&&&&&value&hadoop1:53310&/value&
&&&&&&&&&&/property&
&&&&&&&&&&property&
&&&&&&&&&&&&name&dfs.namenode.servicerpc-address.cluster1.hadoop2&/name&
&&&&&&&&&&&&value&hadoop2:53310&/value&
&&&&&&&&&&/property&
&&&&&&&&&&property&&&
&&&&&&&&&&&&name&dfs.ha.automatic-failover.enabled.cluster1&/name&&&
&&&&&&&&&&&&value&true&/value&&&
&&&&&&&&&&/property&&&&
&&&&&【指定cluster1是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode】
&&&&&&&&!--指定JournalNode&--&
&&&&property&
&&&&&&&&name&dfs.namenode.shared.edits.dir&/name&&&&&&&&&value&qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485;hadoop4:8485;hadoop5:8485/cluster1&/value&
&&&&/property&
&&&&【指定cluster1的两个NameNode共享edits文件目录时,使用的JournalNode集群信息】
&&&&&&&&property&
&&name&dfs.client.failover.proxy.provider.cluster1&/name&&&&&&&&&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
&&&&&&&&/property&
&&&&【指定cluster1出故障时,哪个实现类负责执行故障切换】
&&&&&&property&&&&&
&&&&&&&&&&&name&dfs.journalnode.edits.dir&/name&&&&&
&&&&&&&&&&&value&/home/tom/yarn/yarn_data/tmp/journal&/value&&&&&
&&&&&&/property&
&&&&&&【指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径。tmp路径是自己创建,journal是启动journalnode自动生成】&&&&
&&&&&&&&property&&&&&
&&&&&&&&&&&name&dfs.ha.fencing.methods&/name&&&&&
&&&&&&&&&&&value&sshfence&/value&&&&&
&&&&&&&&/property&
&&&&&&【一旦需要NameNode切换,使用ssh方式进行操作】&
&&&&&&&property&&&&&
&&&&&&&&&&&&name&dfs.ha.fencing.ssh.private-key-files&/name&&&&&
&&&&&&&&&&&&value&/home/tom/.ssh/id_rsa&/value&&&&&
&&&&&&&&/property&
&&&&&【这里是使用ssh进行故障切换,所以需要配置无密码登录,使用ssh通信时用的密钥存储的位置】
&&&&&&&&property&
&&&&&&&&&&&&name&dfs.ha.fencing.ssh.connect-timeout&/name&
&&&&&&&&&&&&value&10000&/value&
&&&&&&&&/property&
&&&&&&&&property&
&&&&&&&&&&&&name&dfs.namenode.handler.count&/name&
&&&&&&&&&&&&value&100&/value&
&&&&&&&/property&
&&&&&&&/configuration&
2.4文件mapred-site.xml
&&&&&&configuration&
&&&&&&&&property&
&&&&&&&&&&&&name&mapreduce.framework.name&/name&
&&&&&&&&&&&&value&yarn&/value&
&&&&&&&/property&
&&&&&&/configuration&
&&&&【指定运行mapreduce的环境是yarn,与hadoop1不同的地方】
&&&&&configuration&
&&&&&&&property&&&&&
&&&&&&&&&&name&yarn.resourcemanager.hostname&/name&&&&&
&&&&&&&&&&value&hadoop1&/value&&&&&
&&&&&&&/property&
&&&&【自定义ResourceManager的地址,还是单点】
&&&&&&&property&
&&&&&&&&&&name&yarn.nodemanager.aux-services&/name&
&&&&&&&&&&value&mapreduce.shuffle&/value&
&&&&&&&/property&
&&&&/configuration&
&&&&& 添加:这里指定哪台机器是,这里指定台机器。把集群所有机器都当做
&&&&&&&hadoop1
&&&&&&&hadoop2
&&&&&&&hadoop3
&&&&&&&hadoop4
&&&&&&&hadoop5
&&&&&&&hadoop6
复制到其它节点
&&&&&& 在的的根目录下(即:目录下):因为我们所有的环境都装载在的目录下。
使用scp -r命令即可
&&&&& 1、因为我们是把整个目录复制到其他节点中,也包含在内。事先我们定义是在台机器上部署。这里我们虽然把拷贝到机器中,但是我们再配置文件中没有配置机器的节点,在启动的时候,机器也不需要启动。
&&&&& 2、现在要做的是进入目录下的目录,修改文件:各个内容对应文件中对应的编号。
接下来开始启动集群
&&&&&& 在、、、hadoop4、5上zookeeper目录下分别执行命令:bin/zkServer.sh&start
&&&&&& 在每一台机器执行完上面的命令后,执行,会显示:这是初步认定启动没有问题
当所有机器执行上述命令完毕后,再在每台机器上执行:bin/zkServer.sh&status&查看每台机器的状态,正确的话,只有一台机器是,其余机器都是显示。台机器都需要测试一下
3、验证格式化
&&&&&&& 在机器上,目录,执行终端上会输出一连串的信息。最后结束的信息是
Welcome&to&ZooKeeper!
&16:44:40,028&[myid:]&-&INFO&&[main-SendThread(localhost:2181):ClientCnxn$SendThread@966]&-&Opening&socket&connection&to&server&localhost/127.0.0.1:2181.&Will&not&attempt&to&authenticate&using&SASL&(unknown&error)
&16:44:40,033&[myid:]&-&INFO&&[main-SendThread(localhost:2181):ClientCnxn$SendThread@849]&-&Socket&connection&established&to&localhost/127.0.0.1:2181,&initiating&session
JLine&support&is&enabled
&16:44:40,094&[myid:]&-&INFO&&[main-SendThread(localhost:2181):ClientCnxn$SendThread@1207]&-&Session&establishment&complete&on&server&localhost/127.0.0.1:2181,&sessionid&=&0x145407bbc720004,&negotiated&timeout&=&30000
WatchedEvent&state:SyncConnected&type:None&path:null
[zookeeper]
[zk:&localhost:2181(CONNECTED)&1]&
[zk:&localhost:2181(CONNECTED)&1]
这一步不是必要的,只是为了测试一下zookeeper是否能够通过客户端访问
3.2 格式化集群
&&&&&& 格式化zookeeper集群,目的是在集群上建立的相应节点。
&&&&&& 在hadoop1上的的目录执行:bin/hdfs&zkfc&–formatZK
4、启动集群
&&&&& 在hadoop1、hadoop2、、hadoop4、5上分别hadoop目录
&&&&& 执行命令:
5、格式化集群的一个
&&&& 从和中任选一个即可,这里选择的是
&&&& 在上/home/tom/yarn/hadoop-2.5.2/目录下执行下面命令:
&&&& bin/hdfs&namenode&-format&-clusterId&c1
6. &&启动ZooKeeperFailoverCotroller
&&&&&& 在、、、、5、6上分别执行命令: sbin/hadoop-daemon.sh&start&zkfc
7、启动刚才格式化的
&&&&& 在上/home/tom/yarn/hadoop-2.5.2/目录下执行命令:
& & &再hadoop2机器上,再使用
8. &启动所有的
&&&&& Datanode是在文件中配置的。在上执行:
&&&&& sbin/hadoop-daemons.sh&start&datanode
9、启动Yarn
&&&&& 在上执行命令:
所有集群启动完毕后,请通过web页面进行查看状态
10.验证的故障自动转移是否好用
&&&&&& 在执行完第8步的时候,在页面可以观察到两个的状态,的状态是,的状态是。原先两个namenode都是的状态。
&&&&&& 在上我们执行:
&&&&&& 23558&NameNode&&
然后jps:nemenode进程不存在了
&然后刷新两个页面,可以看到,两台机器的状态置换了。原先的active变成,原先的变成,这说明,故障自动转换是正常的,是高可用的。
&&&&&&& 等你顺利结束上面所有的步骤,都很顺利的话,说明,你集群搭建基本完成任务。说是基本,因为还有事情要做,就是,你要开始上传文件开始测试程序,看看是否应用正常。这就是接下来要做的事情了。
人打赏支持
码字总数 41073
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥

我要回帖

更多关于 hadoop 2.0 配置 的文章

 

随机推荐