您的位置:首页 > 其它

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

2016-12-02 12:03 423 查看
参考: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。
如果真的配置了,还会 报错。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: