Zookeeper-HA-配置文件(详解)及启动步骤

参考:http://www.open-open.com/lib/view/open1436855630959.html
集群部署节点角色的规划(3节点)
server01   namenode    resourcemanager  zkfc   nodemanager  datanode   zookeeper   journal node
server02   namenode    resourcemanager  zkfc   nodemanager  datanode   zookeeper   journal node
server05   datanode    nodemanager     zookeeper    journal node


hadoop-ha配置文件
1.core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>                           ----两台(多台)namenode的组合,将在hdfs-site.xml中进行解释
</property>

<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-node-01/hadoop-2.7.1/hadoopdata</value>     ----hadoop在本地的工作目录
</property>


<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>   ----quorum(QuorumPeerMain),即zookeeper服务进程的名字
<value>hadoop-ndoe-01-server:2181,hadoop-node-02-server:2181,hadoop-node-03-server:2181</value>   
----zookeeper的主机名和端口号(2181,即zookeeper接收客户端请求的端口号)
</property>
</configuration>


2.hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>                                             ----此处若配置多个,则是federation(联邦)
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop-node-01-server:9000</value> ----rpc通信所用的端口
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-node-01-server:50070</value> ----http的端口,namenode打开监控管理网页的端口
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop-node-02-server:9000</value>     ----rpc通信所用的端口
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop-node-02-server:50070</value> ----http的端口,namenode打开监控管理网页的端口
</property>



<!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-node-01-server:8485;hadoop-node-02-server:8485;hadoop-node-03-server:8485/ns1</value>  
</property> ----也可配置在本地目录中(file///),8485是qjournal的工作端口,/ns1表示这个目录是给ns1这个nameservices用的
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop-node-01/journaldata</value>
</property>



<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        ----可自定义这个类,此程序用来创建zkfs(失败控制,老太监)
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)                                         ----配置两种zkfc防止“脑裂”的方式
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop-node-01/.ssh/id_rsa</value>      ----此处配置私钥,zkfc发送ssh指令时需要私钥
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>10000</value> ----zkfc发送ssh指令时响应超时时间
</property>
</configuration>




3.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>




4.yarn-site.xml
<configuration>
<!--指定RM的cluster-id-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分别指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop-node-01-server</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop-node-02-server</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop-ndoe-01-server:2181,hadoop-node-02-server:2181,hadoop-node-03-server:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> ----配置让nodemanager提供mapreduce的shuffle服务
</property>
</configuration>




修改slaves
hadoop-node-01-server
hadoop-node-02-server
hadoop-node-03-server
在datanode和nodemanager所在的机器配置


配置完成后将hadoop整个copy到其他的机器即可






HA集群的启动:严格按照下面启动步骤启动
1.启动zookeeper集群
分别在zookeeper集群的三台机器上执行/home/hadoop/zookeeper-3.4.6/bin/zkServer.sh start,
启动后jps出现进程ZooKeeper的进程QuorumPeerMain
/home/hadoop/zookeeper-3.4.6/bin/zkServer.sh status 查看三天机器的角色(leader或者follower)


2.启动journalnode
(由于journalnode需要依赖于ZooKeeper,故在ZooKeeper的三台机器部署了journalnode)
分别在三台机器执行hadoop-daemon.sh start journalnode分别启动journalnode,(或者在一台机器执行hadoop-daemons.sh start journalnode),
启动后jps出现journalnode的进程JournalNode


3.格式化zkfc(老太监)(在active的namenode的节点执行即可)
在一台机器上执行hdfs zkfc -formatZK
(格式化的过程其实就是在ZooKeeper中新注册新建一个新的节点,此处新建了/hadoop-ha/ns1,
以便运行集群时在里面存放namenode的信息——将namenode的主机地址存放在该节点上,
执行成功会出现 Successfully created /hadoop-ha/ns1 in ZK.)

4.格式化hdfs(在active的namenode的机器执行即可)
在一台机器上执行hdfs namenode -format
在hadoop-02-server上同步namenode的数据:\scp -r hadoopdata/ hadoop-02-server:/home/hadoop/hadoop-2.7.1


5.启动HDFS
active的namenode的机器上执行start-dfs.sh,此命令将启动hdfs、zkfc、qjournal

6.启动yarn
主resourcemanager的机器上执行start-yarn.sh,启动yarn
再在另一台需要启动resourcemanager的机器上执行yarn-daemon.sh start resourcemanager

HA集群测试:
hadoop-01-server:50070   打开hdfs的namenode的监控页面(active)
hadoop-02-server:50070   打开hdfs的namenode的监控页面(standby)


hadoop-01-server:8088    打开yarn的进程监控页面
hadoop-02-server:8088    打开yarn的进程监控页面

(JournalNodes介绍:两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改 时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。 standby可以确保在集群出错时,命名空间状态已经完全同步了。这些NameNode之间通过共享数据,保证数据的状态一致。多个NameNode之间共享数据,可以通过 Nnetwork File System或者Quorum Journal Node。前者是通过linux共享的文件系统,属于操作系统的配置;后者是hadoop自身的东西,属于软件的配置)
(Secondary NameNode:在HA集群中,standby状态的NameNode可以完成checkpoint操作,因此没必要配置Secondary NameNode、CheckpointNode、BackupNode。 如果真的配置了,还会 报错。)






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值