分布式基石:Hadoop 高可用架构与搭建之路

张开发
2026/4/9 8:19:11 15 分钟阅读

分享文章

分布式基石:Hadoop 高可用架构与搭建之路
hadoop高可用分为NameNode高可用 、ResourceManager高可用NameNode 高可用1.先建集群2.实现免密登录ssh-keygen -t rsa ssh-copy-id xxxx3.安装psmiscxcall yum install -y psmisc4.修改配置文件core-site.xml hdfs-site.xmlcore-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 /configurationhdfs-site.xmlconfiguration !-- 副本数 -- property namedfs.replication/name value3/value /property !-- 定义hdfs入口的命名服务 -- property namedfs.nameservices/name valuehdfs-cluster/value 跟你core-site 写的一致 /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 /configuration5.启动服务初始化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上没有格式化所以无法启动第二次就不需要了。至此为止NameNode高可用搭建完毕常见搭建遇见的错误拒绝连接解决步骤 1.启动zookeeper 删除生成的文件2.删除生成logs和放数据的文件夹3.重新在执行5

更多文章