hadoop 2.2 第二步 HA zookeeper 配置

    第一篇文章还有要修改的地方,现在我的集群已经扩展到5台(虚拟机)有些配置还要改,这一篇记录一下Hadoop HA 和zookeeper的配置,方便自己以后看。

    新的HDFS中的NameNode不再是只有一个了,可以有多个(目前只支持2个)。每一个都有相同的职能。

    在HDFS(HA) 集群中,Standby 节点还执行着对namespace 状态的checkpoint 功能,因此没有必要再运行SecondaryNameNode。

    这两个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状态。

    

    先介绍一下环境:

ip地址 主机名 NameNode JournalNode DataNode
192.168.1.109 hadoop1  
192.168.1.110 hadoop2  
192.168.1.111 hadoop3  
192.168.1.112 hadoop4  
192.168.1.113 hadoop5  

  zookeeper:

    1.下载解压,我放在了/usr/local/zookeeper下

    2.修改配置项,进入zookeeper的conf目录,拷贝命名zoo_sample.cfg 为zoo.cfg,然后修改其内容如下:

    

 1        tickTime=2000
 2        initLimit=10
 3        syncLimit=5
 4        dataDir=/hadoop/zookeeper/zkdata
 5        dataLogDir=/hadoop/zookeeper/zkdatalog
 6        clientPort=2181
 7        server.1=hadoop1:2888:3888
 8        server.2=hadoop2:2888:3888
 9        server.3=hadoop3:2888:3888
10        server.4=hadoop4:2888:3888
11        server.5=hadoop5:2888:3888    

    3.创建zkdata和zkdatalog两个文件夹和一个myid文件:

     创建/hadoop/zookeeper/zkdata 和 /hadoop/zookeeper/zkdatalog 如有不存在目录则创建。还有一个myid文件其内容为1  意思是zoo.cfg文本中的server.1中     的1。

    4.添加环境变量server.namenode.ha.ConfiguredFailoverProxyProviderserver.namenode.ha.ConfiguredFailoverProxyProvider

    export ZOOKEEPER_HOME=/usr/local/zookeeper

    PATH=$ZOOKEEPER_HOME/bin:$PATH

    source /etc/profile

    5.这样子zookeeper就配置好了,scp拷贝到其他节点。

    然后就到了HA部分了

   1.修改core-site.xml

    server.namenode.ha.ConfiguredFailoverProxyProvider

 1 <configuration>
 2     <property>
 3         <name>fs.defaultFS</name>
 4         <value>hdfs://mycluster</value>
 5     </property>
 6
 7     <property>
 8         <name>hadoop.tmp.dir</name>
 9         <value>/hadoop/tmp</value>
10     </property>
11
12     <property>
13         <name>ha.zookeeper.quorum</name>
14       <value>hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181,hadoop5:2181</value>
15     </property>
16
17 </configuration>

    2.修改hdfs-site.xml

     

 1 <configuration>
 2     <property>
 3         <name>dfs.nameservices</name>
 4         <value>mycluster</value>
 5     </property>
 6
 7     <property>
 8         <name>dfs.ha.namenodes.mycluster</name>
 9         <value>hadoop1,hadoop2</value>
10     </property>
11
12     <property>
13         <name>dfs.namenode.secondary.http-address</name>
14         <value>hadoop2:9001</value>
15     </property>
16
17     <property>
18         <name>dfs.namenode.rpc-address.mycluster.hadoop1</name>
19         <value>hadoop1:8020</value>
20     </property>
21
22     <property>
23         <name>dfs.namenode.rpc-address.mycluster.hadoop2</name>
24         <value>hadoop2:8020</value>
25     </property>
26
27     <property>
28         <name>dfs.namenode.http-address.mycluster.hadoop1</name>
29         <value>hadoop1:50070</value>
30     </property>
31
32     <property>
33         <name>dfs.namenode.http-address.mycluster.hadoop2</name>
34         <value>hadoop2:50070</value>
35     </property>
36
37     <property>
38         <name>dfs.namenode.shared.edits.dir</name>
39         <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485;hadoop4:8485;hadoop5:8485/mycluster</value>
40     </property>
41
42     <property>
43         <name>dfs.client.failover.proxy.provider.mycluster</name>
44         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
45     </property>
46
47     <property>
48         <name>dfs.journalnode.edits.dir</name>
49         <value>/hadoop/journal</value>
50     </property>
51
52     <property>
53         <name>dfs.ha.fencing.methods</name>
54         <value>sshfence</value>
55     </property>
56
57     <property>
58         <name>dfs.ha.fencing.ssh.private-key-files</name>
59         <value>/root/.ssh/id_rsa</value>
60     </property>
61
62     <property>
63         <name>dfs.ha.fencing.ssh.connect-timeout</name>
64         <value>10000</value>
65     </property>
66
67     <property>
68         <name>dfs.namenode.handler.count</name>
69         <value>100</value>
70     </property>
71
72     <property>
73         <name>dfs.namenode.name.dir</name>
74         <value>/hadoop/hdfs/name</value>
75     </property>
76
77     <property>
78         <name>dfs.datanode.data.dir</name>
79         <value>/hadoop/hdfs/data</value>
80     </property>
81
82     <property>
83         <name>dfs.replication</name>
84         <value>2</value>
85     </property>
86
87 </configuration>

    3.修改slaves

      hadoop3
      hadoop4
      hadoop5

    4.修改masters 没有则创建

      hadoop2

    

    现在所有配置就算全部完成了,如果从第一步中配置过来现在的就没有问题,来跑一跑吧。

    顺序不能乱。

    1.在每台机器上启动zookeeper,zkServer.sh start

    2.检查是否启动成功 echo ruok | nc hadoop1 2181

              echo ruok | nc hadoop2 2181

              echo ruok | nc hadoop3 2181

              echo ruok | nc hadoop4 2181

              echo ruok | nc hadoop5 2181

     若返回的imok则zookeeper是正常的。

     或者直接使用jps查看进程若有QuorumPeerMain的进程则启动正常。

    3.启动JournalNode集群

     分别在hadoop1,2,3,4,5上面执行命令  hadoop-daemon.sh start journalnode

    4.在hadoop1上格式化NameNode

      hadoop namenode -format

    5.启动这个NameNode

      hadoop-daemon.sh start namenode

    6.在Hadoo2上格式化NameNode

      hdfs namenode -bootstrapStandby

    7.启动hadoop2的NameNode

      hadoop-daemon.sh start namenode

    8.通过 http://hadoop1:50070,http://hadoop2:50070 查看这两个NameNode 现在都是standby状态

    9.切换hadoop1到active状态 hdfs haadmin -transitionToActive hadoop1

    10.启动DataNodes   hadoop-daemons.sh start datanode

时间: 2024-08-03 10:01:03

hadoop 2.2 第二步 HA zookeeper 配置的相关文章

java+hadoop+spark+hbase+scala+kafka+zookeeper配置环境变量记录备忘

java+hadoop+spark+hbase+scala 在/etc/profile 下面加上如下环境变量 export JAVA_HOME=/usr/java/jdk1.8.0_102export JRE_HOME=/usr/java/jdk1.8.0_102/jreexport CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$JAVA_HOME

结合ZooKeeper配置Hadoop HA

参考官方文档 http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html 架构图 hdfs-site.xml配置 <configuration> <property> <name>dfs.nameservices</name> <value>ns1</value> </property&

Hadoop 2.6.0 HA高可用集群配置详解

1 Hadoop HA架构详解 1.1 HDFS HA背景 HDFS集群中NameNode 存在单点故障(SPOF).对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直到NameNode 重新启动. 影响HDFS集群不可用主要包括以下两种情况:一是NameNode机器宕机,将导致集群不可用,重启NameNode之后才可使用:二是计划内的NameNode节点软件或硬件升级,导致集群在短时间内不可用. 为了解决上述问题,Hadoop给出了HDFS的高

Hadoop 配置及hadoop HA 的配置

注:本文中提到的ochadoop 不要感到奇怪,是亚信公司内部自己合成的一个包,把所有的组件都放在一个包内了,免去了组件的下载过程和解决兼容问题,其实也可以自己下载的,不要受到影响. 另,转载请注明出处,谢谢 修改静态IP和hostname 在 /etc/sysconfig/network-scripts/ifcfg-eth0配置IPADDR地址 运行以下命令生效 service network restart 在/etc/sysconfig/network中配置hostname配置完成后重启生

Spark 在Hadoop HA下配置HistoryServer问题

我的Spark机群是部署在Yarn上的,因为之前Yarn的部署只是简单的完全分布式,但是后来升级到HA模式,一个主NN,一个备NN,那么Spark HistoryServer的配置也需要相应的做修改,因为不做修改会报错 Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native

Hadoop组件之-HDFS(HA实现细节)

Hadoop NameNode 高可用 (High Availability) 实现解析 在 Hadoop 的整个生态系统中,HDFS NameNode 处于核心地位,NameNode 的可用性直接决定了 Hadoop 整个软件体系的可用性.本文尝试从内部实现的角度对 NameNode 的高可用机制进行详细的分析,主要包括 NameNode 的主备切换实现分析和 NameNode 的共享存储实现分析.文章的最后在结合作者自身实践的基础上,列举了一些在高可用运维过程中需要注意的事项. 0 评论 程

【甘道夫】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

Hadoop 2.0 NameNode HA和Federation实践

参考链接:Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基于Hadoop的技术解决方案,由于行业的特殊性,客户对服务的可用性有着非常高的要求,而HDFS长久以来都被单点故障的问题所困扰,直到Apache Hadoop在2012年5月发布了2.0的alpha版本,其中MRv2还很不成熟,可HDFS的新功能已经基本可用,尤其是其中的的High Ava

菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个须要极度耐心和体力的仔细工作. 虽然有非常多文档教会大家怎么一步一步去完毕这样的工作,可是百密也有一疏. 现成的工具不是没有,可是对于我这个喜欢了解细节的人来说,用别人的东西,写的好还能够,写的不好,出了问题,查找错误难之又难.手工安装Hadoop集群须要对Linux有一定的使用经验.对于全然没有接触Linux的人来说.肯定是