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

    xiaoxiao2021-12-14  19

    参考: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。 如果真的配置了,还会 报错。)
    转载请注明原文地址: https://ju.6miu.com/read-963232.html

    最新回复(0)