申请建设网站经费的请示,提高手机性能的黑科技软件,东莞搜索引擎网站推广,一键登录01 ssh免密安装02 jdk安装03 hadoop伪分布式安装04 hadoop全分布式完成了前面四步#xff0c;现在做hadoop的高可用。其实和之前的lvs的高可用差不多的。如果我们有两个namenode节点#xff0c;分别是node01和node02。假设node01是主节点#xff0c;node02是从节点#xff…01 ssh免密安装02 jdk安装03 hadoop伪分布式安装04 hadoop全分布式完成了前面四步现在做hadoop的高可用。其实和之前的lvs的高可用差不多的。如果我们有两个namenode节点分别是node01和node02。假设node01是主节点node02是从节点当node01挂掉了以后node02自动成为主节点。这里通过zookeeper的方式来实现node01node02都会注册到zookeeper当中由zookeeper来实现高可用。文章有点长先收藏再阅读开始。准备node01(192.168.146.101)namenode01 ZKFCJNN(journalnode)node02(192.168.146.102)namenode02datanodezookeeperZKFCJNNnode03(192.168.146.103): datanode, zookeeper, JNNnode04(192.168.146.104): datanode,zookeeper,hadoop配置修改修改hadoop_env.sh 文件在原来的基础上指定ZKFC 和journalnode 两个进程的角色这里注意我们之前用到的从节点sencondarynamenode现在用不着了可以remark起来。cd /usr/hadoop-3.1.2/etc/hadoopexport JAVA_HOME/usr/java/jdk-12.0.1export HDFS_NAMENODE_USERrootexport HDFS_DATANODE_USERroot#export HDFS_SECONDARYNAMENODE_USERrootexport HDFS_ZKFC_USERrootexport HDFS_JOURNALNODE_USERroot修改core-site.xml 文件只用修改临时文件的目录即可原来指向full现在建立一个新目录指向havi core-site.xmlfs.defaultFShdfs://node01:9820hadoop.tmp.dir/var/hadoop/ha修改hdfs-site.xml 文件由于原先所有的datanode都需要和一个namenode做关联现在做高可用需要让datanode和多个namenode做关联。因此需要给namenode起一个logic name。同时需要配置两个namenode服务器(node01node02)对应的rpc和httpaddress的信息。两个namenode进行同步的配置这里需要指定journalnode服务器的地址。以及故障转移的代理类。vi hdfs-site.xmldfs.replication3#逻辑namenode 名字dfs.nameservicesmycluster#配置两个namenode服务器dfs.ha.namenodes.myclusternn1,nn2#配置rpc的调用dfs.namenode.rpc-address.mycluster.nn1node01:8020dfs.namenode.rpc-address.mycluster.nn2node02:8020#配置http addressdfs.namenode.http-address.mycluster.nn1node01:9870dfs.namenode.http-address.mycluster.nn2node02:9870#配置journalnode节点dfs.namenode.shared.edits.dirqjournal://node01:8485;node02:8485;node03:8485/mycluster#配置故障转移的调用dfs.client.failover.proxy.provider.myclusterorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider#故障隔离 当一个从节点即将要成为主节点的时候会通知原来的主节点使之成为从节点。dfs.ha.fencing.methodssshfence#故障隔离需要的私钥的地址dfs.ha.fencing.ssh.private-key-files/root/.ssh/id_rsa#配置journalnode的存储地址dfs.journalnode.edits.dir/var/hadoop/ha/journalnodedfs.ha.automatic-failover.enabledtrue再回到core-site.xml文件的配置原来配置的是一个固定的主节点的名字现在需要使用逻辑的namenode的服务名称也就是我们在上面hdfs-site.xml中定义的 mycluster 这个名字。以及对zookeeper集群的配置。fs.defaultFShdfs://myclusterha.zookeeper.quorumnode02:2181,node03:2181,node04:2181分发core-site.xml hdfs-site.xml 和 hadoop-env.sh 三个文件到其他三个服务器(node02node03node04)scp core-site.xml hdfs-site.xml hadoop-env.sh node02:pwdscp core-site.xml hdfs-site.xml hadoop-env.sh node03:pwdscp core-site.xml hdfs-site.xml hadoop-env.sh node04:pwd安装配置zookeeper由于我们之前定义的zookeeper的安装是在node02node03node04三个服务器。所以copy下载zookeeper的安装包。对其进行解压。这里我把zk放到/usr 这个目录下面了。tar xf zookeeper-3.4.6.tar.gz -C /usr/配置环境变量export ZOOKEEPER_HOME/usr/zookeeper-3.4.6PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin再将这个配置分发到其余的两个服务器node03node04scp /etc/profile node03:/etc/profilescp /etc/profile node04:/etc/profilesource /etc/profile修改zoo.cfg指定文件存放地址并且告之参与zk集群的端口的具体信息cd /usr/zookeeper-3.4.6/confmv zoo_sample.cfg zoo.cfgvi zoo.cfgdataDir/var/zookeeperserver.1node02:2888:3888server.2node03:2888:3888server.3node04:2888:3888分发zk到node02node03scp -r zookeeper-3.4.6/ node03:pwdscp -r zookeeper-3.4.6/ node04:pwd在三个节点创建zk的存储文件mkdir /var/zookeeper指定每个节点对应的服务器的名称根据zoo.cfg中的定义server.1node02server.2node03server.3node04所以在node02中执行echo 1 /var/zookeeper/myid所以在node03中执行echo 2 /var/zookeeper/myid所以在node04中执行echo 3 /var/zookeeper/myid启动zookeeper分别在node02node03node04上运行zookeeper并且查看启动后的状态。zkServer.sh startzkServer.sh status可以看到node04作为leadernode02和node03都是follower。启动journalnode 节点我配置了三个journalnode节点分别是node01node02node03.所以在这三个节点分别执行以下指令。hdfs --daemon start journalnode启动以后会在对应的目录下面生成存储edits持久化文件的目录。这个目录我配置到了/var/hadoop/ha在前面的cord-site.xml 中有说明。针对主节点node01node02 进行namenode的格式化。这里我们选择node01进行格式化然后启动namenode做为主节点。再到node02上面去同步node01上面的数据这样node01是active node02是standbynode02上面同步了node01的namenode的数据一旦node01无法使用了node02会变成active状态接替node01的工作。node01操作hdfs namenode -formathdfs --daemon start namenodenode02操作hdfs namenode -bootstrapStandby这样node02就把node01的namenode数据同步过来了。可以到 /var/hadoop/ha/dfs/name 下面的VERSION文件中检查两个节点的clusterID是否相同。初始化zookeeperzookeeper需要注册两个主从节点node01node02.注册以后当一个节点服务down机或者和zookeeper失去联系了那么另外一个节点就会接替主节点的位置成为active状态。ps:可以通过 zkCli.sh 命令打开zookeeper客户端查看zookeeper情况。node01上运行hdfs zkfc -formatZK启动hadoop集群到node01节点上启动集群start-dfs.sh运行完命令以后打开zookeeper客户端查看zkCli.shls /hadoop-ha/mycluster我们看到在myclusert这个集群下面多了两个节点这两个节点就是zookeeper注册的主从节点node01node02。可以通过以下命令查看两个节点的状态。get /hadoop-ha/mycluster/ActiveBreadCrumbget /hadoop-ha/mycluster/ActiveStandbyElectorLock测试高可用效果去网站看看结果。在浏览器输入192.168.146.101:9870 和 192.168.146.102:9870node01是activenode02是standby然后把node01的namenode关掉。到node01节点上运行hdfs --daemon stop namenode可以看到node01无法访问了这个时候node02成为active状态依旧可以提供访问。到此hadoop高可用的配置和启动过程就完毕了。