Hadoop 分布式集群高可用搭建详解

张开发
2026/5/19 18:19:29 15 分钟阅读
Hadoop 分布式集群高可用搭建详解
第一步hadoop11 和hadoop12 都能免密登录到其他三台进入到hadoop11 中 ssh-keygen -t rsa # 发送公钥(所有NameNode节点都要发送) ssh-copy-id hadoop11 ssh-copy-id hadoop12 ssh-copy-id hadoop13第二步三台电脑上都同时安装psmisc# ZKFC远程杀死假死NN使用的killall namenode命令属于该软件中的。 # 建议所有节点都安装psmisc 以下命令是在hadoop11上运行的因为只有01 配置了xcall命令 xcall yum install -y psmisc修复镜像的语句curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo第三步检查jdk以及zk 三台是否都安装完毕第四步检查是否安装了hadoop集群如果以前安装过了清空数据先停止集群stop-all.sh 清理集群中的data数据 xcall rm -rf /opt/installs/hadoop3.1.4/data /opt/installs/hadoop3.1.4/logs/第五步配置hadoop-env.shexport JAVA_HOME/opt/installs/jdk1.8 export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_SECONDARYNAMENODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERroot export HDFS_JOURNALNODE_USERroot export HDFS_ZKFC_USERroot修改完毕之后记得同步给hadoop12 和 13myscp hadoop-env.sh第六步修改core-site.xmlconfiguration !--hdfs集群的文件位置-- property namehadoop.tmp.dir/name value/opt/installs/hadoop3.1.4/data/value /property !--hdfs入口设置虚拟地址具体地址后面配置-- property namefs.defaultFS/name valuehdfs://hdfs-cluster/value /property !--hdfs要访问zookeeper集群-- property nameha.zookeeper.quorum/name valuehadoop11:2181,hadoop12:2181,hadoop13:2181/value /property /configuration第七步修改hdfs-site.xmlconfiguration !-- 副本数 -- property namedfs.replication/name value3/value /property !-- 定义hdfs入口的命名服务 -- property namedfs.nameservices/name valuehdfs-cluster/value /property !-- 定义hdfs入口的命名服务下虚拟ip-- property namedfs.ha.namenodes.hdfs-cluster/name valuenn1,nn2/value /property !-- 虚拟ip地址1 RPC入口 -- property namedfs.namenode.rpc-address.hdfs-cluster.nn1/name valuehadoop11:8020/value /property !-- 虚拟ip地址1 HTTP入口 -- property namedfs.namenode.http-address.hdfs-cluster.nn1/name valuehadoop11:9870/value /property !-- 虚拟ip地址2 PRC入口 -- property namedfs.namenode.rpc-address.hdfs-cluster.nn2/name valuehadoop12:8020/value /property !-- 虚拟ip地址1 HTTP入口 -- property namedfs.namenode.http-address.hdfs-cluster.nn2/name valuehadoop12:9870/value /property !-- 定义QJN在linux中保存文件磁盘目录 -- property !-- Journal Edit Files 的存储目录:() -- namedfs.journalnode.edits.dir/name value/opt/installs/journalnode/data//value /property property namedfs.namenode.shared.edits.dir/name valueqjournal://hadoop11:8485;hadoop12:8485;hadoop13:8485/hdfs-cluster/value /property !-- 是否开启故障切换 -- property namedfs.ha.automatic-failover.enabled/name valuetrue/value /property !-- 基于zookeeper的故障切换的代码类 -- property namedfs.client.failover.proxy.provider.hdfs-cluster/name valueorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/value /property !-- 远程杀死namenode方式(防止namenode假死导致双主出现) -- property namedfs.ha.fencing.methods/name valuesshfence/value /property !-- 指定私钥的文件目录使用免密登录杀死NN进程 -- property namedfs.ha.fencing.ssh.private-key-files/name value/root/.ssh/id_rsa/value /property !-- 可以在hdfs上点击结果查看-- property namedfs.webhdfs.enabled/name valuetrue/value /property !-- 关闭 启动时权限检查 -- property namedfs.permissions.enabled/name valuefalse/value description如果为true则在HDFS中启用权限检查;如果为false则关闭权限检查;默认值为true。/description /property /configuration第八步检查workers 文件是否为三台第九步同步 core-site.xml 和 hdfs-site.xml 到剩余两台上去myscp core-site.xml myscp hdfs-site.xml第十步1、启动zookeeper zk.sh start 2. 初始化ZKFC在zk中的Znode信息【第一次启动需要做】在hadoop11上进行即可 hdfs zkfc -formatZK 3、在三台服务器上启动jn【journalnode 主要用于存储namenode的元数据】 xcall hdfs --daemon start journalnode否则报8345 这个为什么在这个时候启动原因是第四步格式化的时候需要用到journalnode否则报8485连接超时的问题格式化会失败的。 4、对集群进行namenode的格式化 hdfs namenode -format 5、启动hdfs start-dfs.sh 这个服务默认会启动journalnode但是由于你之前已经单独启动过了所以启动它会报三个警告可以忽略无所谓。 6、启动第二个namenode 需要在hadoop12上运行 第一次需要运行如下命令以后不需要 hdfs namenode -bootstrapStandby 接着启动第二个namenode: hdfs --daemon start namenode 本身集群是可以启动两个namenode的但是由于第一次启动的话hadoop12上没有格式化所以无法启动第二次就不需要了。如果你想重新做一遍需要按照如下方式 1、进入 zk 删除 hadoop-ha 节点 操作如下 zkCli.sh 回车 deleteall /hadoop-ha 2、删除 三台服务器上的journalnode 文件夹 xcall rm -rf /opt/installs/journalnode/data/ 3、删除 data 和 logs 文件夹 xcall rm -rf /opt/installs/hadoop3.1.4/data/ xcall rm -rf /opt/installs/hadoop3.1.4/logs/综上所述只要配置好了以后以后启动高可用命令只需要执行 start-dfs.sh 即可。当然zk还是单独管理。第十一步通过网页查看两个namenode的状态查看第二个namenode:第十二步测试是否可以高可用手动将第一台的namenode给关闭第二台要自动从 standby变为active假如第一次服务器再次启动namenode,状态应为为standby2搭建resourcemanager的高可用第一步检查mapred-site.xml ,里面只有yarn配置和historyServer的配置不需要修改第二步修改yarn-site.xml?xml version1.0? !-- Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. -- configuration !-- Site specific YARN configuration properties -- property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.application.classpath/name value/opt/installs/hadoop/etc/hadoop:/opt/installs/hadoop/share/hadoop/common/lib/*:/opt/installs/hadoop/share/hadoop/common/*:/opt/installs/hadoop/share/hadoop/hdfs:/opt/installs/hadoop/share/hadoop/hdfs/lib/*:/opt/installs/hadoop/share/hadoop/hdfs/*:/opt/installs/hadoop/share/hadoop/mapreduce/*:/opt/installs/hadoop/share/hadoop/yarn:/opt/installs/hadoop/share/hadoop/yarn/lib/*:/opt/installs/hadoop/share/hadoop/yarn/*/value /property property nameyarn.log-aggregation-enable/name valuetrue/value /property !-- 历史日志在HDFS保存的时间单位是秒 -- !-- 默认的是-1表示永久保存 -- property nameyarn.log-aggregation.retain-seconds/name value604800/value /property property nameyarn.log.server.url/name valuehttp://hadoop11:19888/jobhistory/logs/value /property !--配置resourcemanager的HA-- property nameyarn.resourcemanager.ha.enabled/name valuetrue/value /property !-- RM 集群标识 -- property nameyarn.resourcemanager.cluster-id/name valueyarn-cluster/value /property !-- RM 的逻辑 ID 列表 -- property nameyarn.resourcemanager.ha.rm-ids/name valuerm1,rm2/value /property !-- RM1 的主机地址 -- property nameyarn.resourcemanager.hostname.rm1/name valuehadoop11/value /property !-- RM1 的主机web管理界面地址 -- property nameyarn.resourcemanager.webapp.address.rm1/name valuehadoop11:8088/value /property !-- RM2 的主机地址 -- property nameyarn.resourcemanager.hostname.rm2/name valuehadoop12/value /property !-- RM2 的主机web管理界面地址 -- property nameyarn.resourcemanager.webapp.address.rm2/name valuehadoop12:8088/value /property !-- ZooKeeper 集群的地址 -- property nameyarn.resourcemanager.zk-address/name valuehadoop11:2181,hadoop12:2181,hadoop13:2181/value /property !-- 启用自动恢复 -- property nameyarn.resourcemanager.recovery.enabled/name valuetrue/value /property !-- 用于yarn故障转移持久化zk的类 -- property nameyarn.resourcemanager.store.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore/value /property !-- 关闭虚拟内存检查 -- property nameyarn.nodemanager.vmem-check-enabled/name valuefalse/value /property /configuration以前配置的yarn以及日志服务的配置不动添加ha的相关配置。第三步将mapred-site.xml 和 yarn-site.xml进行同步[rootbigdata01 ~]# cd /opt/installs/hadoop/etc/hadoop/ [rootbigdata01 hadoop]# myscp yarn-site.xml 只需要同步一个因为另一个根本没有修改。第四步启动yarnstart-yarn.sh如何查看谁是干活的谁是备用的呢yarn rmadmin -getAllServiceState测试一下RM的高可用[rootbigdata01 installs]# yarn rmadmin -getAllServiceState hadoop11:8033 active hadoop12:8033 standby 停止bigdata01中的RM继续查看 yarn --daemon stop resourcemanager 继续查看 [rootbigdata01 installs]# yarn rmadmin -getAllServiceState 2023-08-23 14:40:15,547 INFO ipc.Client: Retrying connect to server: bigdata01/192.168.233.128:8033. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries1, sleepTime1000 MILLISECONDS) bigdata01:8033 Failed to connect: Call From bigdata01/192.168.233.128 to bigdata01:8033 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused bigdata02:8033 active 再次启动bigdata01: [rootbigdata01 installs]# yarn rmadmin -getAllServiceState bigdata01:8033 standby bigdata02:8033 active使用高可用的 yarn 集群运行一个任务hadoop jar /opt/installs/hadoop3.1.4/share/hadoop /mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /home/wc.txt /home/out访问界面http://bigdata02:8088/访问 standby 节点自动跳转到 active 节点的 IP 网站。

更多文章